diff options
author | Andrew Tridgell <tridge@samba.org> | 2006-09-24 01:52:20 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:20:16 -0500 |
commit | a90eba6316b89c3e387e0c52af22b5344a5de2f2 (patch) | |
tree | 38ac24ab2aaa9f900dd3a2a79b0193702521c9c8 /source4/lib | |
parent | 51f27dc3f19e9916155ecad64662b874d1fea229 (diff) | |
download | samba-a90eba6316b89c3e387e0c52af22b5344a5de2f2.tar.gz samba-a90eba6316b89c3e387e0c52af22b5344a5de2f2.tar.bz2 samba-a90eba6316b89c3e387e0c52af22b5344a5de2f2.zip |
r18859: finally worked out what is going wrong with immediate structures. The
problem is that the AC_PROG_CC_C99 macro ends up selecting either
-std=std99 or -std=gnu99 for gcc. Ironically enough, that breaks
constant structure initialisers!
So, simplest solution is to not try that configure test if we know we
are using gcc
(This used to be commit 331435daf3275acaf282c1032c6e9f7dc3e685bb)
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/replace/libreplace_cc.m4 | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/source4/lib/replace/libreplace_cc.m4 b/source4/lib/replace/libreplace_cc.m4 index aa0465983a..352d115547 100644 --- a/source4/lib/replace/libreplace_cc.m4 +++ b/source4/lib/replace/libreplace_cc.m4 @@ -28,7 +28,13 @@ ac_cv_prog_cc_Ae=no savedCFLAGS=$CFLAGS AC_PROG_CC CFLAGS=$savedCFLAGS + +dnl don't try for C99 if we are using gcc, as otherwise we +dnl lose immediate structure constants +if test x"$GCC" = x"no" ; then AC_PROG_CC_C99 +fi + if test x"$GCC" = x"yes" ; then AC_MSG_CHECKING([for version of gcc]) GCC_VERSION=`$CC -dumpversion` @@ -122,5 +128,26 @@ if test $ac_cv_sizeof_long_long -lt 8;then AC_MSG_ERROR([LIBREPLACE needs sizeof(long long) >= 8]) fi +############################################ +# check if the compiler can do immediate structures +AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [ + AC_TRY_COMPILE([ +#include <stdio.h>], +[ + typedef struct {unsigned x;} FOOBAR; + #define X_FOOBAR(x) ((FOOBAR) { x }) + #define FOO_ONE X_FOOBAR(1) + FOOBAR f = FOO_ONE; + static const struct { + FOOBAR y; + } f2[] = { + {FOO_ONE} + }; +], + samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)]) +if test x"$samba_cv_immediate_structures" = x"yes"; then + AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures]) +fi + AC__LIBREPLACE_ONLY_CC_CHECKS_END ]) dnl end AC_LIBREPLACE_CC_CHECKS |