Author: tridge Date: 2006-09-05 07:58:26 +0000 (Tue, 05 Sep 2006) New Revision: 18067
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18067 Log: some tweaks for irix and hpux this checks for -AC99 or -c99 to get C99 structure init to work. It's based on a similar macro metze did for Samba4. the double sinclude() is weird, but I can't see any other way to use a common config.m4 between libreplace and all the projects that use it Added: branches/SAMBA_4_0/source/lib/replace/cc_features.m4 Modified: branches/SAMBA_4_0/source/lib/replace/config.m4 branches/SAMBA_4_0/source/lib/replace/replace.h Changeset: Added: branches/SAMBA_4_0/source/lib/replace/cc_features.m4 =================================================================== --- branches/SAMBA_4_0/source/lib/replace/cc_features.m4 2006-09-05 07:43:49 UTC (rev 18066) +++ branches/SAMBA_4_0/source/lib/replace/cc_features.m4 2006-09-05 07:58:26 UTC (rev 18067) @@ -0,0 +1,42 @@ +dnl C99 compiler check +dnl ------------------------------------------------------- +dnl Copyright (C) Stefan (metze) Metzmacher 2004,2005 +dnl Released under the GNU GPL +dnl ------------------------------------------------------- +dnl +dnl adapted for libreplace by Andrew Tridgell + +############################################ +# Check if the compiler handles c99 struct initialization, and if not try -AC99 and -c99 flags +# Usage: LIBREPLACE_CC_SUPPORTS_C99_STRUCT_INIT(success-action,failure-action) +# changes CFLAGS to add -AC99 or -c99 if needed + +AC_DEFUN([LIBREPLACE_C99_STRUCT_INIT], +[ +AC_MSG_CHECKING(for C99 designated initializers) +saved_CFLAGS="$CFLAGS"; +AC_TRY_COMPILE([#include <stdio.h>], + [ struct foo {int x;char y;}; + struct foo bar = { .y = 'X', .x = 1 }; + ], + [AC_MSG_RESULT(yes); c99_init=yes; $1], [c99_init=no; AC_MSG_RESULT(no)]) +if test x"$c99_init" = x"no"; then + AC_MSG_CHECKING(for C99 designated initializers with -AC99) + CFLAGS="$saved_CFLAGS -AC99"; + AC_TRY_COMPILE([#include <stdio.h>], + [ struct foo {int x;char y;}; + struct foo bar = { .y = 'X', .x = 1 }; + ], + [AC_MSG_RESULT(yes); c99_init=yes; $1],[AC_MSG_RESULT(no)]) +fi +if test x"$c99_init" = x"no"; then + AC_MSG_CHECKING(for C99 designated initializers with -c99) + CFLAGS="$saved_CFLAGS -c99" + AC_TRY_COMPILE([#include <stdio.h>], + [ struct foo {int x;char y;}; + struct foo bar = { .y = 'X', .x = 1 }; + ], + [AC_MSG_RESULT(yes); $1],[AC_MSG_RESULT(no);CFLAGS="$saved_CFLAGS"; $2]) +fi +]) + Modified: branches/SAMBA_4_0/source/lib/replace/config.m4 =================================================================== --- branches/SAMBA_4_0/source/lib/replace/config.m4 2006-09-05 07:43:49 UTC (rev 18066) +++ branches/SAMBA_4_0/source/lib/replace/config.m4 2006-09-05 07:58:26 UTC (rev 18067) @@ -142,7 +142,13 @@ [AC_MSG_ERROR([Required function not found])]) sinclude(lib/replace/getpass.m4) +sinclude(getpass.m4) +sinclude(lib/replace/cc_features.m4) +sinclude(cc_features.m4) +LIBREPLACE_C99_STRUCT_INIT(c99_struct_initialization=yes, + c99_struct_initialization=no) + dnl VA_COPY AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[ AC_TRY_LINK([#include <stdarg.h> Modified: branches/SAMBA_4_0/source/lib/replace/replace.h =================================================================== --- branches/SAMBA_4_0/source/lib/replace/replace.h 2006-09-05 07:43:49 UTC (rev 18066) +++ branches/SAMBA_4_0/source/lib/replace/replace.h 2006-09-05 07:58:26 UTC (rev 18067) @@ -51,9 +51,7 @@ #ifdef HAVE_STDINT_H #include <stdint.h> -#endif - -#ifdef HAVE_INTTYPES_H +#elif HAVE_INTTYPES_H #include <inttypes.h> #endif @@ -257,9 +255,7 @@ #ifdef HAVE_STDBOOL_H #include <stdbool.h> -#endif - -#ifndef HAVE_BOOL +#elif !defined(HAVE_BOOL) #define __bool_true_false_are_defined typedef int bool; #define false (0)
