On two SuSE 7.x systems building gs8.30 (after a simple configure) fails with In file included from jasper/src/libjasper/include/jasper/jas_types.h:111, from jasper/src/libjasper/include/jasper/jasper.h:66, from src/sjpx.h:27, from ./src/zfjpx.c:34: /usr/lib/gcc-lib/i486-suse-linux/2.95.2/include/stdbool.h:14: warning: `false' redefined src/stdpre.h:298: warning: this is the location of the previous definition /usr/lib/gcc-lib/i486-suse-linux/2.95.2/include/stdbool.h:15: warning: `true' redefined src/stdpre.h:300: warning: this is the location of the previous definition In file included from jasper/src/libjasper/include/jasper/jas_types.h:111, from jasper/src/libjasper/include/jasper/jasper.h:66, from src/sjpx.h:27, from ./src/zfjpx.c:34: /usr/lib/gcc-lib/i486-suse-linux/2.95.2/include/stdbool.h:9: parse error before `(' /usr/lib/gcc-lib/i486-suse-linux/2.95.2/include/stdbool.h:11: conflicting types for `bool' src/stdpre.h:288: previous declaration of `bool' make: *** [obj/zfjpx.o] Error 1
Created attachment 710 [details] config.log
Created attachment 711 [details] Output of make
Ah, the horrors of C portability. This is a conflict between the jasper build system, which tries to use stdbool.h and the Ghostscript build system, which rolls its own definition. the glue code in zfjpx.c needs to include both. The correct fix is probably to internalize a bunch of the jasper headers so they don't pollute the namespace. The workaround is to move the jasper source out of the way, compile and install the library separately, and then reconfigure ghostscript to link to the shared verison.
I've opened bug 687518 against jasper to track the cleanup issue. My guess is we didn't see this on newer gcc because gcclib is now using int for _Bool? Thanks for the report. *** This bug has been marked as a duplicate of 687518 ***