summaryrefslogtreecommitdiff
path: root/lib/replace/wafsamba.py
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/wafsamba.py
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/wafsamba.py')
-rw-r--r--lib/replace/wafsamba.py114
1 files changed, 114 insertions, 0 deletions
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