diff options
-rw-r--r-- | lib/replace/autoconf.py | 53 | ||||
-rw-r--r-- | lib/replace/wafsamba.py | 114 | ||||
-rw-r--r-- | lib/replace/wscript | 27 | ||||
-rw-r--r-- | lib/talloc/wscript | 18 |
4 files changed, 131 insertions, 81 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') diff --git a/lib/talloc/wscript b/lib/talloc/wscript index 879b37595a..bcbb844a97 100644 --- a/lib/talloc/wscript +++ b/lib/talloc/wscript @@ -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') |