build: renamed autoconf.py to wafsamba.py and added SAMBA_*() functions
authorAndrew Tridgell <tridge@samba.org>
Sat, 20 Feb 2010 13:24:28 +0000 (00:24 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:33 +0000 (20:26 +1000)
lib/replace/autoconf.py [deleted file]
lib/replace/wafsamba.py [new file with mode: 0644]
lib/replace/wscript
lib/talloc/wscript

diff --git a/lib/replace/autoconf.py b/lib/replace/autoconf.py
deleted file mode 100644 (file)
index 1b16ea3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# a waf tool to add autoconf-like macros to the configure section
-
-from Configure import conf
-
-@conf
-def DEFUN(conf, d, v):
-    conf.define(d, v, quote=False)
-    conf.env.append_value('CCDEFINES', d + '=' + str(v))
-
-@conf
-def CHECK_HEADERS(conf, list):
-    for hdr in list.rsplit(' '):
-        if conf.check(header_name=hdr):
-            conf.env.hlist.append(hdr)
-
-@conf
-def CHECK_TYPES(conf, list):
-    for t in list.rsplit(' '):
-        conf.check(type_name=t, header_name=conf.env.hlist)
-
-@conf
-def CHECK_TYPE_IN(conf, t, hdr):
-    if conf.check(header_name=hdr):
-        conf.check(type_name=t, header_name=hdr)
-
-@conf
-def CHECK_TYPE(conf, t, alternate):
-    if not conf.check(type_name=t, header_name=conf.env.hlist):
-        conf.DEFUN(t, alternate)
-
-@conf
-def CHECK_FUNCS(conf, list):
-    for f in list.rsplit(' '):
-        conf.check(function_name=f, header_name=conf.env.hlist)
-
-@conf
-def CHECK_FUNCS_IN(conf, list, library):
-    if conf.check(lib=library, uselib_store=library):
-        for f in list.rsplit(' '):
-            conf.check(function_name=f, lib=library, header_name=conf.env.hlist)
-
-# we want a different rpath when installing and when building
-# this should really check if rpath is available on this platform
-# and it should also honor an --enable-rpath option
-def set_rpath(bld):
-    import Options
-    if Options.is_install:
-        bld.env['RPATH'] = ['-Wl,-rpath=' + bld.env.PREFIX + '/lib']
-    else:
-        bld.env.append_value('RPATH', '-Wl,-rpath=build/default')
-
-import Build
-Build.BuildContext.set_rpath = set_rpath
diff --git a/lib/replace/wafsamba.py b/lib/replace/wafsamba.py
new file mode 100644 (file)
index 0000000..2d12d1c
--- /dev/null
@@ -0,0 +1,114 @@
+# a waf tool to add autoconf-like macros to the configure section
+
+import Build
+from Configure import conf
+
+@conf
+def DEFUN(conf, d, v):
+    conf.define(d, v, quote=False)
+    conf.env.append_value('CCDEFINES', d + '=' + str(v))
+
+@conf
+def CHECK_HEADERS(conf, list):
+    for hdr in list.rsplit(' '):
+        if conf.check(header_name=hdr):
+            conf.env.hlist.append(hdr)
+
+@conf
+def CHECK_TYPES(conf, list):
+    for t in list.rsplit(' '):
+        conf.check(type_name=t, header_name=conf.env.hlist)
+
+@conf
+def CHECK_TYPE_IN(conf, t, hdr):
+    if conf.check(header_name=hdr):
+        conf.check(type_name=t, header_name=hdr)
+
+@conf
+def CHECK_TYPE(conf, t, alternate):
+    if not conf.check(type_name=t, header_name=conf.env.hlist):
+        conf.DEFUN(t, alternate)
+
+@conf
+def CHECK_FUNCS(conf, list):
+    for f in list.rsplit(' '):
+        conf.check(function_name=f, header_name=conf.env.hlist)
+
+@conf
+def CHECK_FUNCS_IN(conf, list, library):
+    if conf.check(lib=library, uselib_store=library):
+        for f in list.rsplit(' '):
+            conf.check(function_name=f, lib=library, header_name=conf.env.hlist)
+
+# we want a different rpath when installing and when building
+# this should really check if rpath is available on this platform
+# and it should also honor an --enable-rpath option
+def set_rpath(bld):
+    import Options
+    if Options.is_install:
+        bld.env['RPATH'] = ['-Wl,-rpath=' + bld.env.PREFIX + '/lib']
+    else:
+        bld.env.append_value('RPATH', '-Wl,-rpath=build/default')
+Build.BuildContext.set_rpath = set_rpath
+
+# this will contain the set of includes needed per Samba library
+Build.BuildContext.SAMBA_LIBRARY_INCLUDES = {}
+
+# this will contain the library dependencies of each Samba library
+Build.BuildContext.SAMBA_LIBRARY_DEPS = {}
+
+#################################################################
+# return a include list for a set of library dependencies
+def SAMBA_LIBRARY_INCLUDE_LIST(bld, libdeps):
+    ret = bld.curdir + ' '
+    for l in libdeps.rsplit(' '):
+        if l in bld.SAMBA_LIBRARY_INCLUDES:
+            ret = ret + bld.SAMBA_LIBRARY_INCLUDES[l] + ' '
+    return ret
+Build.BuildContext.SAMBA_LIBRARY_INCLUDE_LIST = SAMBA_LIBRARY_INCLUDE_LIST
+
+#################################################################
+# define a Samba library
+def SAMBA_LIBRARY(bld, libname, source_list, libdeps='', include_list=''):
+    ilist = bld.SAMBA_LIBRARY_INCLUDE_LIST(libdeps) + include_list
+    bld(
+        features = 'cc cshlib',
+        source = source_list,
+        target=libname,
+        includes=ilist)
+    bld.SAMBA_LIBRARY_INCLUDES[libname] = ilist
+Build.BuildContext.SAMBA_LIBRARY = SAMBA_LIBRARY
+
+#################################################################
+# define a Samba binary
+def SAMBA_BINARY(bld, binname, source_list, libdeps='', include_list=''):
+    bld(
+        features = 'cc cprogram',
+        source = source_list,
+        target = binname,
+        uselib_local = libdeps,
+        includes = bld.SAMBA_LIBRARY_INCLUDE_LIST(libdeps) + include_list)
+Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY
+
+
+# this overrides the normal -v debug output to be in a nice
+# unix like format
+def exec_command(self, cmd, **kw):
+    import Utils
+    from Logs import debug
+    _cmd = cmd
+    if isinstance(cmd, list):
+        _cmd = ' '.join(cmd)
+    debug('runner: %s' % _cmd)
+    if self.log:
+        self.log.write('%s\n' % cmd)
+        kw['log'] = self.log
+    try:
+        if not kw.get('cwd', None):
+            kw['cwd'] = self.cwd
+    except AttributeError:
+        self.cwd = kw['cwd'] = self.bldnode.abspath()
+    return Utils.exec_command(cmd, **kw)
+
+import Build
+Build.BuildContext.exec_command = exec_command
index 6baab09b03aadd7b60a93d2fece491fcddbcde54..6fc49e57dc80ed717976d2fdee3ba051cd3e87bc 100644 (file)
@@ -13,7 +13,7 @@ def configure(conf):
     conf.env.hlist = []
 
     # load our local waf extensions
-    conf.check_tool('autoconf', tooldir=conf.curdir)
+    conf.check_tool('wafsamba', tooldir=conf.curdir)
 
     conf.check_tool('compiler_cc')
     conf.DEFUN('_GNU_SOURCE', 1)
@@ -115,19 +115,14 @@ main() { foo("hello"); }
 def build(bld):
     bld.set_rpath()
 
-    # the libreplace shared library
-    bld(
-        features = 'cc cshlib',
-        source = 'replace.c',
-        target='replace',
-        includes = '. default')
-
-    # test program
-    bld(
-        features = 'cc cprogram',
-        source = '''test/testsuite.c test/main.c test/strptime.c
-        test/os2_delete.c test/getifaddrs.c''',
-        target = 'replace_testsuite',
-        uselib_local = 'replace',
-        includes = '. default /usr/include')
+    REPLACE_SOURCE = 'replace.c snprintf.c'
 
+    bld.SAMBA_LIBRARY('replace',
+                      REPLACE_SOURCE)
+
+    TEST_SOURCES = '''test/testsuite.c test/main.c test/strptime.c
+                      test/os2_delete.c test/getifaddrs.c'''
+
+    bld.SAMBA_BINARY('replace_testsuite',
+                     TEST_SOURCES,
+                     'replace')
index 879b37595a994d10423b4386e41a8a02d3ec64ad..bcbb844a971ffc265da62b4987e1532014950f65 100644 (file)
@@ -10,16 +10,10 @@ def configure(conf):
 def build(bld):
     bld.recurse('../replace')
 
-    bld(
-        features = 'cc cshlib',
-        source = 'talloc.c',
-        target='talloc',
-        includes = '. ../replace')
+    bld.SAMBA_LIBRARY('talloc',
+                      'talloc.c',
+                      'replace')
 
-    # test program
-    bld(
-        features = 'cc cprogram',
-        source = 'testsuite.c testsuite_main.c',
-        target = 'talloc_testsuite',
-        uselib_local = 'replace talloc',
-        includes = '. ../replace default /usr/include')
+    bld.SAMBA_BINARY('talloc_testsuite',
+                     'testsuite.c testsuite_main.c',
+                     'talloc')