|
From: Ken B. <kb...@co...> - 2017-03-04 23:04:05
|
On 3/3/2017 6:48 PM, Ken Brown wrote: > On 3/3/2017 3:11 PM, Ken Brown wrote: >> On 2/22/2017 7:44 PM, Bruno Haible wrote: >>> Re https://sourceforge.net/p/clisp/mailman/message/35677912/ >>> >>> Hi Jerry, >>> >>>> The clisp package is currently failing to build in Fedora Rawhide, >>>> due to this build failure in the fastcgi module: >>> >>> Thanks. Should be fixed now. >>> >>> Please continue reporting if something else breaks / broke too. >> >> A similar problem occurs in the clx/new-clx module, but this time it's >> the generated file genclx.c that fails to include config.h early enough. >> Should ccmp2c.c be changed so that generated files always include >> config.h first? > > I tried this, as follows: > > --- a/utils/ccmp2c.c 2017-03-03 11:11:58.000000000 -0500 > +++ b/utils/ccmp2c.c 2017-03-03 17:20:57.229793700 -0500 > @@ -1037,6 +1037,7 @@ main (int argc, char *argv[]) > infilename = argv[1]; > > /* Emit prologue. */ > + printf ("#include \"config.h\"\n"); > printf ("#include <stdio.h>\n"); > printf ("#include <stdlib.h>\n"); > printf ("#include <string.h>\n"); > --- a/modules/clx/new-clx/Makefile.in 2017-03-03 11:11:57.000000000 -0500 > +++ b/modules/clx/new-clx/Makefile.in 2017-03-03 18:17:51.478051000 -0500 > @@ -35,7 +35,7 @@ resource.fas: $(srcdir)/resource.lisp cl > > clx.d: $(srcdir)/clx.f > $(CCMP2C) $(srcdir)/clx.f > genclx.c > - $(CC) $(CPPFLAGS) $(CFLAGS) $(WANTS) genclx.c -o genclx > + $(CC) $(CPPFLAGS) -I. $(CFLAGS) $(WANTS) genclx.c -o genclx > ./genclx -l -o clx.d > clx.d > $(RM) genclx.c > $(RM) genclx > > I also tried using angle brackets instead of double quotes around config.h. But I still got an error: > > ../../ccmp2c /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/src/clisp/modules/clx/new-clx/clx.f > genclx.c > gcc -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/src/clisp/src -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/build/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/src/clisp/src/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/build/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/src/clisp/src/gllib -I. -ggdb -O2 -pipe -Wimplicit-function-declaration -W -Wswitch -Wcomment -Wpointer-arith -Wreturn-type -Wmissing-declarations -Wimplicit -Wno-sign-compare -Wno-format-nonliteral -O -fno-strict-aliasing -DENABLE_UNICODE -DDYNAMIC_MODULES -DDLL_EXPORT -DPIC -DWANT_XPM=1 -DWANT_XSHAPE=1 genclx.c -o genclx > In file included from /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/build/gllib/stdlib.h:96:0, > from genclx.c:3: > /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/build/gllib/unistd.h:139:3: error: #error "Please include config.h first." > #error "Please include config.h first." > ^ > In file included from /usr/include/sys/types.h:68:0, > from /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.x86_64/build/gllib/sys/types.h:28, > from /usr/include/stdio.h:61, > from genclx.c:2: The problem is that clisp.h isn't included. The following patch fixes the problem with the compilation of genclx.c. I don't know if it causes problems elsewhere. --- a/modules/clx/new-clx/Makefile.in 2017-03-03 11:11:57.000000000 -0500 +++ b/modules/clx/new-clx/Makefile.in 2017-03-04 17:02:50.218383300 -0500 @@ -35,7 +35,7 @@ resource.fas: $(srcdir)/resource.lisp cl clx.d: $(srcdir)/clx.f $(CCMP2C) $(srcdir)/clx.f > genclx.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(WANTS) genclx.c -o genclx + $(CC) $(CPPFLAGS) $(CFLAGS) $(WANTS) -I$(CLISP_LINKKIT) genclx.c -o genclx ./genclx -l -o clx.d > clx.d $(RM) genclx.c $(RM) genclx --- a/utils/ccmp2c.c 2017-03-03 11:11:58.000000000 -0500 +++ b/utils/ccmp2c.c 2017-03-04 17:01:23.397830600 -0500 @@ -1037,6 +1037,8 @@ main (int argc, char *argv[]) infilename = argv[1]; /* Emit prologue. */ + printf ("#include \"clisp.h\"\n"); + printf ("#include \"config.h\"\n"); printf ("#include <stdio.h>\n"); printf ("#include <stdlib.h>\n"); printf ("#include <string.h>\n"); This allows genclx to be built, but then the resulting clx.c fails to compile on my platform (Cygwin): gcc -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/src/clisp/src -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/build/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/src/clisp/src/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/build/gllib -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/src/clisp/src/gllib -ggdb -O2 -pipe -Wimplicit-function-declaration -falign-functions=4 -W -Wswitch -Wcomment -Wpointer-arith -Wreturn-type -Wmissing-declarations -Wimplicit -Wno-sign-compare -Wno-format-nonliteral -O2 -fexpensive-optimizations -fno-strict-aliasing -DENABLE_UNICODE -DDYNAMIC_FFI -DDYNAMIC_MODULES -DDLL_EXPORT -DPIC -I/home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/build/linkkit -c clx.c In file included from /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/build/gllib/stdlib.h:96:0, from /usr/include/w32api/combaseapi.h:129, from /usr/include/w32api/objbase.h:14, from /usr/include/w32api/ole2.h:17, from /usr/include/w32api/wtypes.h:12, from /usr/include/w32api/winscard.h:10, from /usr/include/w32api/windows.h:97, from /usr/include/X11/Xwindows.h:75, from /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/src/clisp/modules/clx/new-clx/clx.f:413: /home/kbrown/src/cygclisp/clisp-2.49-1.20170303hg15769.i686/build/gllib/unistd.h:139:3: error: #error "Please include config.h first." #error "Please include config.h first." This problem is Cygwin-specific and happens because the system header <X11/Xwindows.h> is included before clisp.h in clx.c. Including clisp.h first doesn't work, because then we get the typedef conflicts mentioned in the comment in clx.f:412. Does anyone see a way around this? If not, I'd like to try removing all uses of '#include <windows.h>' from the Cygwin build. Cygwin is a Posix platform, and trying to mix the Posix API with the Windows API often causes problems. Ken |