summaryrefslogtreecommitdiff
path: root/source4/lib/replace/libreplace_macros.m4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-09-06 08:30:56 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:17:40 -0500
commite997a767aae255992b0f1d229d15eb4f2b00484c (patch)
treec72b3dfad66fc9227137f172580615e79d1b561b /source4/lib/replace/libreplace_macros.m4
parent68d172c5063c3e84977e4238c1147cdc40d4b0be (diff)
downloadsamba-e997a767aae255992b0f1d229d15eb4f2b00484c.tar.gz
samba-e997a767aae255992b0f1d229d15eb4f2b00484c.tar.bz2
samba-e997a767aae255992b0f1d229d15eb4f2b00484c.zip
r18145: rename cc_feature.m4 into libreplace_macros.m4
metze (This used to be commit d0f40dd3e5ca8b46ee9b2c4332b393f519383aae)
Diffstat (limited to 'source4/lib/replace/libreplace_macros.m4')
-rw-r--r--source4/lib/replace/libreplace_macros.m453
1 files changed, 53 insertions, 0 deletions
diff --git a/source4/lib/replace/libreplace_macros.m4 b/source4/lib/replace/libreplace_macros.m4
new file mode 100644
index 0000000000..255009dd55
--- /dev/null
+++ b/source4/lib/replace/libreplace_macros.m4
@@ -0,0 +1,53 @@
+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_C99_STRUCT_INIT(success-action,failure-action)
+# changes CFLAGS to add -AC99 or -c99 if needed
+
+AC_DEFUN([LIBREPLACE_C99_STRUCT_INIT],
+[
+saved_CFLAGS="$CFLAGS";
+c99_init=no
+if test x"$c99_init" = x"no"; then
+ AC_MSG_CHECKING(for C99 designated initializers)
+ CFLAGS="$saved_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],[AC_MSG_RESULT(no)])
+fi
+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],[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); c99_init=yes],[AC_MSG_RESULT(no)])
+fi
+if test x"$c99_init" = x"yes"; then
+ saved_CFLAGS=""
+ $1
+else
+ CFLAGS="$saved_CFLAGS"
+ saved_CFLAGS=""
+ $2
+fi
+])