build: check size of types
authorAndrew Tridgell <tridge@samba.org>
Sun, 7 Mar 2010 04:19:37 +0000 (15:19 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:42 +0000 (20:26 +1000)
allow name of SIZEOF test to be specified

buildtools/wafsamba/samba_autoconf.py
lib/replace/wscript

index c61a55f14b1e78b209f88632780c53ed79907c67..fef44ea95ba793edf22fafc0b2e3630dcd34ad75 100644 (file)
@@ -115,7 +115,7 @@ def CHECK_FUNCS(conf, list):
     return ret
 
 @conf
-def CHECK_SIZEOF(conf, vars, headers=None):
+def CHECK_SIZEOF(conf, vars, headers=None, define=None):
     hdrs=''
     if headers is not None:
         hlist = to_list(headers)
@@ -124,6 +124,10 @@ def CHECK_SIZEOF(conf, vars, headers=None):
     for h in hlist:
         hdrs += '#include <%s>\n' % h
     for v in to_list(vars):
+        if define is None:
+            define_name = 'SIZEOF_%s' % string.replace(v.upper(), ' ', '_')
+        else:
+            define_name = define
         conf.check(fragment=
                    '''
                   %s
@@ -134,7 +138,7 @@ def CHECK_SIZEOF(conf, vars, headers=None):
                   ''' % (hdrs, v),
                    execute=1,
                    define_ret=True,
-                   define_name='SIZEOF_%s' % v.upper(),
+                   define_name=define_name,
                    quote=False,
                    msg="Checking size of %s" % v)
 
index 067b80edead60e8d51d3cf00e91ca553ef4363a0..0d93f9604e635c73faeec5c561415ec65e923e8a 100644 (file)
@@ -84,8 +84,7 @@ def configure(conf):
 
     conf.define('SHLIBEXT', "so", quote=True)
 
-    conf.check(type_name='long long')
-    conf.CHECK_TYPES('intptr_t uintptr_t ptrdiff_t')
+    conf.CHECK_TYPES('"long long" intptr_t uintptr_t ptrdiff_t')
     conf.CHECK_TYPES('comparison_fn_t socklen_t bool')
 
     conf.CHECK_TYPE('int8_t', 'char')
@@ -134,6 +133,9 @@ def configure(conf):
     conf.CHECK_DECLS('dirfd environ errno getgrent_r getpwent_r', reverse=True)
     conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
 
+    conf.CHECK_SIZEOF('char int "long long" long off_t short size_t ssize_t')
+    conf.CHECK_SIZEOF('void*', define='SIZEOF_VOID_P')
+
     conf.check_cc(fragment='''
     #include <stdarg.h>
     va_list ap1,ap2;