Hello Robert, * Robert Boyer wrote on Tue, Jun 06, 2006 at 04:58:25PM CEST: > If one fetches Gnu Common Lisp from "cvs head", a la > > setenv CVSROOT :pserver:[EMAIL PROTECTED]:/sources/gcl > cvs -z9 -q checkout gcl > > and then does > > configure --disable-statsysbfd --enable-locbfd --enable-debug --enable-ansi > > One gets, somewhere in the 35,000 characters of output: > > checking asm/signal.h presence... yes > configure: WARNING: asm/signal.h: present but cannot be compiled
Yes. In fact, I can reproduce this issue. The underlying problem is revealed in the config.log part accompanying this (some file included by the default includes defines sigset_t, but the definition for userspace is incompatible with the kernel definition). The error is explained in the "Present But Cannot Be Compiled" node of the Autoconf manual. The immediate "fix" is to use the fourth argument to AC_CHECK_HEADERS to specify that the default includes should not be used for this header, for example like this: AC_CHECK_HEADERS([asm/signal.h], [], [], [/* none */]) But this is likely to be a workaround only: the actual gcl code may need to be adjusted to this, too; and asm/signal.h may actually need other headers as prerequisite. I haven't looked into that, and I don't know enough about this area to help here. Anyway, while trying a newer Autoconf on gcl, I found quite a few underquotations and other bugs in configure.in. Is gcl actively maintained? If yes, it may be more useful to fix its configure-new.ac to be a suitable replacement for its current configure.in, but for the time being, here's a proposed patch to get it to actually work (better) with Autoconf 2.59 and upcoming 2.60, while still retaining all the ugliness. ;-) Cheers, Ralf * configure.in: Disable default includes in check for `asm/signal.h', to prevent conflicting definitions of sigset_t. Report by Robert Boyer <[EMAIL PROTECTED]>. Rewrite some checks, adding better M4 quotation, and separating actions by newlines. This is actually necessary in order so that some variable settings do not hold just for the command that follows them, but for the rest of the script. Index: configure.in =================================================================== RCS file: /sources/gcl/gcl/configure.in,v retrieving revision 1.233 diff -u -r1.233 configure.in --- configure.in 18 Apr 2006 04:38:06 -0000 1.233 +++ configure.in 8 Jun 2006 15:56:03 -0000 @@ -847,25 +847,28 @@ if test "$enable_statsysbfd" = "yes" || test "$enable_dynsysbfd" = "yes" ; then AC_CHECK_HEADER(bfd.h, - AC_CHECK_LIB(bfd,bfd_init, + [AC_CHECK_LIB(bfd,bfd_init, # # Old binutils appear to need CONST defined to const # - AC_MSG_CHECKING(if need to define CONST for bfd) + [AC_MSG_CHECKING(if need to define CONST for bfd) AC_TRY_RUN([#define IN_GCC #include <bfd.h> int main() { symbol_info t; return 0;}], - AC_MSG_RESULT(no), - AC_TRY_RUN([#define CONST const + [AC_MSG_RESULT(no)], + [AC_TRY_RUN([#define CONST const #define IN_GCC #include <bfd.h> int main() {symbol_info t; return 0;}], - AC_MSG_RESULT(yes) - AC_DEFINE(NEED_CONST), - AC_MSG_RESULT(cannot use bfd) exit 1;, - AC_MSG_RESULT(cannot use bfd) exit 1;), - AC_MSG_RESULT(cannot use bfd) exit 1;) - ,,-liberty)) + [AC_MSG_RESULT(yes) + AC_DEFINE(NEED_CONST)], + [AC_MSG_RESULT(cannot use bfd) + exit 1;], + [AC_MSG_RESULT(cannot use bfd) + exit 1;])], + AC_MSG_RESULT(cannot use bfd) + exit 1;)] + ,,[-liberty])]) AC_DEFINE(HAVE_LIBBFD) @@ -1817,16 +1820,24 @@ float f; return isnormal(f) || !isnormal(f) ? 0 : 1; }], - AC_DEFINE(HAVE_ISNORMAL) AC_MSG_RESULT(yes), + AC_DEFINE(HAVE_ISNORMAL) + AC_MSG_RESULT(yes), AC_MSG_CHECKING([for fpclass in ieeefp.h]) AC_TRY_RUN([#include <ieeefp.h> int main() { float f; return fpclass(f)>=FP_NZERO || fpclass(f)<FP_NZERO ? 0 : 1; }], - AC_DEFINE(HAVE_IEEEFP) AC_MSG_RESULT(yes), - HAVE_IEEEFP=0 AC_MSG_RESULT(no),HAVE_IEEEFP=0 AC_MSG_RESULT(no)) - ,HAVE_ISNORMAL=0 AC_MSG_RESULT(no),HAVE_ISNORMAL=0 AC_MSG_RESULT(no)) + AC_DEFINE(HAVE_IEEEFP) + AC_MSG_RESULT(yes), + HAVE_IEEEFP=0 + AC_MSG_RESULT(no), + HAVE_IEEEFP=0 + AC_MSG_RESULT(no)) + ,HAVE_ISNORMAL=0 + AC_MSG_RESULT(no), + HAVE_ISNORMAL=0 + AC_MSG_RESULT(no)) AC_MSG_CHECKING([for isfinite]) AC_TRY_RUN([#define _GNU_SOURCE 1 @@ -1844,8 +1855,14 @@ return finite(f) || !finite(f) ? 0 : 1; }], AC_DEFINE(HAVE_FINITE) AC_MSG_RESULT(yes), - HAVE_FINITE=0 AC_MSG_RESULT(no),HAVE_FINITE=0 AC_MSG_RESULT(no)) - ,HAVE_ISFINITE=0 AC_MSG_RESULT(no),HAVE_ISFINITE=0 AC_MSG_RESULT(no)) + HAVE_FINITE=0 + AC_MSG_RESULT(no), + HAVE_FINITE=0 + AC_MSG_RESULT(no)) + ,HAVE_ISFINITE=0 + AC_MSG_RESULT(no), + HAVE_ISFINITE=0 + AC_MSG_RESULT(no)) @@ -1879,7 +1896,7 @@ TLIBS="$TLIBS -lsocket -lnsl" AC_CHECK_FUNC(accept, tcl_checkNsl=0, [TLIBS=$tk_oldLibs]) fi -AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [TLIBS="$TLIBS -lnsl"])) +AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, main, [TLIBS="$TLIBS -lnsl"])]) RL_OJBS="" RL_LIB="" @@ -2027,7 +2044,10 @@ #if test $use = "386-linux" ; then AC_CHECK_HEADERS(asm/sigcontext.h) - AC_CHECK_HEADERS(asm/signal.h) + dnl Do not use the default includes for asm/signal.h + dnl because sys/select.h may have a conflicting + dnl declaration for sigset_t + AC_CHECK_HEADERS([asm/signal.h], [], [], [/* none */]) AC_MSG_CHECKING([for sigcontext...]) AC_TRY_COMPILE([#include <signal.h> ],