summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-03-17 20:40:03 +1100
committerAndrew Tridgell <tridge@samba.org>2010-04-06 20:26:42 +1000
commitdd05b6512ab2d5c8fc2d0fe18fcd19b62fee6f01 (patch)
tree24f0ad89ac92052b10c51f2e28f90c4fc7f81d64
parent54e26fcb48e385cf62161cd62f102dd34d1c6b3b (diff)
downloadsamba-dd05b6512ab2d5c8fc2d0fe18fcd19b62fee6f01.tar.gz
samba-dd05b6512ab2d5c8fc2d0fe18fcd19b62fee6f01.tar.bz2
samba-dd05b6512ab2d5c8fc2d0fe18fcd19b62fee6f01.zip
build: improve autoconf macros
- enable headers to be specified - enable both forms of DECL check - more libreplace checks - more heimdal checks - more sysdep checks
-rw-r--r--buildtools/wafsamba/samba_autoconf.py31
-rw-r--r--lib/replace/wscript3
-rw-r--r--source4/heimdal_build/wscript_configure4
-rw-r--r--source4/ntvfs/sysdep/wscript_configure6
4 files changed, 35 insertions, 9 deletions
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
index 73ea4360a6..e5073a16ec 100644
--- a/buildtools/wafsamba/samba_autoconf.py
+++ b/buildtools/wafsamba/samba_autoconf.py
@@ -55,14 +55,26 @@ def CHECK_TYPE(conf, t, alternate):
return False
@conf
-def CHECK_VARIABLE(conf, v, define=None, always=False):
+def CHECK_VARIABLE(conf, v, define=None, always=False, headers=None):
hdrs=''
- for h in conf.env.hlist:
+ if headers is not None:
+ hlist = headers.split()
+ else:
+ hlist = conf.env.hlist
+ for h in hlist:
hdrs += '#include <%s>\n' % h
if define is None:
define = 'HAVE_%s' % v.upper()
if conf.check(fragment=
- '%s\nint main(void) {void *_x; _x=(void *)&%s; return 0;}\n' % (hdrs, v),
+ '''
+ %s
+ int main(void) {
+ #ifndef %s
+ void *_x; _x=(void *)&%s;
+ #endif
+ return 0;
+ }\n
+ ''' % (hdrs, v, v),
execute=0,
msg="Checking for variable %s" % v):
conf.DEFINE(define, 1)
@@ -72,12 +84,19 @@ def CHECK_VARIABLE(conf, v, define=None, always=False):
return False
@conf
-def CHECK_DECLS(conf, vars):
+def CHECK_DECLS(conf, vars, reverse=False, headers=None):
'''check a list of variable declarations, using the HAVE_DECL_xxx form
- of define'''
+ of define
+
+ When reverse==True then use HAVE_xxx_DECL instead of HAVE_DECL_xxx
+ '''
ret = True
for v in vars.split():
- if not CHECK_VARIABLE(conf, v, define='HAVE_DECL_%s' % v.upper()):
+ if not reverse:
+ define='HAVE_DECL_%s' % v.upper()
+ else:
+ define='HAVE_%s_DECL' % v.upper()
+ if not CHECK_VARIABLE(conf, v, define=define, headers=headers):
ret = False
return ret
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 4ca33fa93a..067b80edea 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -131,6 +131,9 @@ def configure(conf):
conf.CHECK_DECLS('snprintf vsnprintf asprintf vasprintf')
+ conf.CHECK_DECLS('dirfd environ errno getgrent_r getpwent_r', reverse=True)
+ conf.CHECK_DECLS('pread pwrite setenv setresgid setresuid', reverse=True)
+
conf.check_cc(fragment='''
#include <stdarg.h>
va_list ap1,ap2;
diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure
index c53cd39d72..37e243cf66 100644
--- a/source4/heimdal_build/wscript_configure
+++ b/source4/heimdal_build/wscript_configure
@@ -24,7 +24,9 @@ conf.DEFINE('VOID_RETSIGTYPE', 1)
conf.CHECK_VARIABLE('h_errno')
# strangely enough, we need it with another define too
-conf.CHECK_VARIABLE('h_errno', define='HAVE_DECL_H_ERRNO')
+conf.CHECK_DECLS('h_errno')
+
+conf.CHECK_DECLS('_res')
conf.CHECK_HEADERS('arpa/nameser.h dns.h')
conf.CHECK_FUNCS_IN('res_search res_nsearch res_ndestroy dns_search dn_expand', 'resolv')
diff --git a/source4/ntvfs/sysdep/wscript_configure b/source4/ntvfs/sysdep/wscript_configure
index 2d2064843e..6cfa4abe91 100644
--- a/source4/ntvfs/sysdep/wscript_configure
+++ b/source4/ntvfs/sysdep/wscript_configure
@@ -3,5 +3,7 @@ conf.CHECK_HEADERS('linux/inotify.h asm/unistd.h sys/inotify.h', add_headers=Fal
conf.CHECK_FUNCS('inotify_init')
conf.CHECK_VARIABLE('__NR_inotify_init')
-conf.CHECK_VARIABLE('F_SETLEASE')
-conf.CHECK_VARIABLE('SA_SIGINFO')
+conf.CHECK_DECLS('F_SETLEASE', headers='linux/fcntl.h', reverse=True)
+conf.CHECK_DECLS('SA_SIGINFO', headers='signal.h', reverse=True)
+
+conf.CHECK_DECLS('__NR_inotify_init', reverse=True, headers='asm/unistd.h')