]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ccan: check for all the used config.h defines
authorRusty Russell <rusty@rustcorp.com.au>
Sun, 14 Oct 2012 05:35:58 +0000 (16:05 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 16 Oct 2012 23:55:14 +0000 (01:55 +0200)
In particular, not checking for byteswap.h meant we defined duplicates:
https://bugzilla.samba.org/show_bug.cgi?id=9286

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Autobuild-User(master): Rusty Russell <rusty@rustcorp.com.au>
Autobuild-Date(master): Wed Oct 17 01:55:14 CEST 2012 on sn-devel-104

lib/ccan/libccan.m4
lib/ccan/wscript

index 0d391ad961f86f0c9d0cf8fe493199c19a08c5b2..7b27c69b81750c6e8b70f3e8b6eb58cbc62d3139 100644 (file)
@@ -23,6 +23,8 @@ AC_SUBST(CCAN_CFLAGS)
 # fairly harmless.
 AC_CHECK_HEADERS(err.h)
 
+AC_CHECK_HEADERS(byteswap.h)
+
 AC_CACHE_CHECK([whether we can compile with __attribute__((cold))],
               samba_cv_attribute_cold,
               [
@@ -270,6 +272,19 @@ if test x"$samba_cv_compound_literals" = xyes ; then
             [whether we have compound literals])
 fi
 
+AC_CACHE_CHECK([whether we have flexible array members],
+              samba_cv_have_flex_arr_member,
+              [
+                AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+                       [struct foo { unsigned int x; int arr@<:@@:>@; }; ])],
+                       samba_cv_have_flex_arr_member=yes)
+               ])
+
+if test x"$samba_cv_have_flex_arr_member" = xyes ; then
+   AC_DEFINE(HAVE_FLEXIBLE_ARRAY_MEMBER, 1,
+            [whether we have flexible array member support])
+fi
+
 AC_CACHE_CHECK([whether we have isblank],
               samba_cv_have_isblank,
               [
@@ -331,3 +346,4 @@ if test x"$samba_cv_warn_unused_result" = xyes ; then
    AC_DEFINE(HAVE_WARN_UNUSED_RESULT, 1,
             [whether we have __attribute__((warn_unused_result))])
 fi
+AC_HAVE_DECL(bswap_64, [#include <byteswap.h>])
index 334f8fe4d08665be9f56b7699033a9af11785f99..4af9dd4c837aae026cd8f3b125c753662d96ff7f 100644 (file)
@@ -5,6 +5,9 @@ import Logs, sys, Options
 def configure(conf):
     conf.DEFINE('HAVE_CCAN', 1)
     conf.CHECK_HEADERS('err.h')
+    conf.CHECK_HEADERS('byteswap.h')
+    conf.CHECK_FUNCS('bswap_64', link=False, headers="byteswap.h")
+
     # FIXME: if they don't have -Werror, these will all fail.  But they
     # probably will anyway...
     conf.CHECK_CODE('int __attribute__((cold)) func(int x) { return x; }',
@@ -107,6 +110,9 @@ def configure(conf):
                     define='HAVE_BUILTIN_TYPES_COMPATIBLE_P')
     conf.CHECK_CODE('int *foo = (int[]) { 1, 2, 3, 4 }; return foo[0] ? 0 : 1;',
                     define='HAVE_COMPOUND_LITERALS')
+    conf.CHECK_CODE('struct foo { unsigned int x; int arr[]; };',
+                    addmain=False, link=False,
+                    define='HAVE_FLEXIBLE_ARRAY_MEMBER')
     conf.CHECK_CODE("""#include <ctype.h>
          int main(void) { return isblank(' ') ? 0 : 1; }""",
                     link=True, addmain=False, add_headers=False,
@@ -121,6 +127,21 @@ def configure(conf):
     # backtrace could be in libexecinfo or in libc
     conf.CHECK_FUNCS_IN('backtrace backtrace_symbols', 'execinfo', checklibc=True, headers='execinfo.h')
 
+    # Only check for FILE_OFFSET_BITS=64 if off_t is normally small:
+    # use raw routines because wrappers include previous _GNU_SOURCE
+    # or _FILE_OFFSET_BITS defines.
+    conf.check(fragment="""#include <sys/types.h>
+               int main(void) { return !(sizeof(off_t) < 8); }""",
+               execute=True, msg='Checking for small off_t',
+               define_name='SMALL_OFF_T')
+    # Unreliable return value above, hence use define.
+    if conf.CONFIG_SET('SMALL_OFF_T'):
+        conf.check(fragment="""#include <sys/types.h>
+                   int main(void) { return !(sizeof(off_t) >= 8); }""",
+                   execute=True, msg='Checking for -D_FILE_OFFSET_BITS=64',
+                   ccflags='-D_FILE_OFFSET_BITS=64',
+                   define_name='HAVE_FILE_OFFSET_BITS')
+
 def ccan_module(bld, name, deps=''):
     bld.SAMBA_SUBSYSTEM('ccan-%s' % name,
                         source=bld.path.ant_glob('%s/*.c' % name),