summaryrefslogtreecommitdiff
path: root/lib/replace
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-02-21 00:24:28 +1100
committerAndrew Tridgell <tridge@samba.org>2010-04-06 20:26:33 +1000
commit5c103b484f6c6dc9ba544d501e9f701076381655 (patch)
treee181d3822bcfd1dfc72eac4dbd8a3b0509bbf48b /lib/replace
parent34b77a15d36e21c67d5493e45955358589f7b9c5 (diff)
downloadsamba-5c103b484f6c6dc9ba544d501e9f701076381655.tar.gz
samba-5c103b484f6c6dc9ba544d501e9f701076381655.tar.bz2
samba-5c103b484f6c6dc9ba544d501e9f701076381655.zip
build: renamed autoconf.py to wafsamba.py and added SAMBA_*() functions
Diffstat (limited to 'lib/replace')
-rw-r--r--lib/replace/autoconf.py53
-rw-r--r--lib/replace/wafsamba.py114
-rw-r--r--lib/replace/wscript27
3 files changed, 125 insertions, 69 deletions
diff --git a/lib/replace/autoconf.py b/lib/replace/autoconf.py
deleted file mode 100644
index 1b16ea35c3..0000000000
--- a/lib/replace/autoconf.py
+++ /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
index 0000000000..2d12d1cec8
--- /dev/null
+++ b/lib/replace/wafsamba.py
@@ -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
diff --git a/lib/replace/wscript b/lib/replace/wscript
index 6baab09b03..6fc49e57dc 100644
--- a/lib/replace/wscript
+++ b/lib/replace/wscript
@@ -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')