From 03998d097079397c6a58a9317964a30e9c2c5b26 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 27 Mar 2010 09:46:50 +1100 Subject: s4-waf: started adding auto-install of include files --- buildtools/wafsamba/wafsamba.py | 42 +++++++++++++++++++++++++++++++++++++++++ codepages/wscript_build | 2 +- lib/util/wscript_build | 3 ++- source4/dynconfig/wscript | 16 ++++++++++------ source4/libcli/wscript_build | 2 +- source4/librpc/wscript_build | 5 +++-- source4/wscript_build | 4 ++-- 7 files changed, 61 insertions(+), 13 deletions(-) diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py index 098053d573..9763d9a2e8 100644 --- a/buildtools/wafsamba/wafsamba.py +++ b/buildtools/wafsamba/wafsamba.py @@ -59,6 +59,7 @@ def SAMBA_LIBRARY(bld, libname, source, public_deps='', includes='', public_headers=None, + header_path=None, vnum=None, cflags='', external_library=False, @@ -97,6 +98,7 @@ def SAMBA_LIBRARY(bld, libname, source, public_deps = public_deps, includes = includes, public_headers = public_headers, + header_path = header_path, cflags = cflags, group = group, autoproto = autoproto, @@ -176,6 +178,9 @@ def SAMBA_LIBRARY(bld, libname, source, if autoproto is not None: bld.SAMBA_AUTOPROTO(autoproto, source) + if public_headers is not None: + bld.PUBLIC_HEADERS(public_headers, header_path=header_path) + Build.BuildContext.SAMBA_LIBRARY = SAMBA_LIBRARY @@ -185,6 +190,7 @@ def SAMBA_BINARY(bld, binname, source, deps='', includes='', public_headers=None, + header_path=None, modules=None, installdir=None, ldflags=None, @@ -290,6 +296,8 @@ def SAMBA_BINARY(bld, binname, source, if autoproto is not None: bld.SAMBA_AUTOPROTO(autoproto, source) + if public_headers is not None: + bld.PUBLIC_HEADERS(public_headers, header_path=header_path) Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY @@ -367,6 +375,7 @@ def SAMBA_SUBSYSTEM(bld, modname, source, public_deps='', includes='', public_headers=None, + header_path=None, cflags='', cflags_end=None, group='main', @@ -428,8 +437,11 @@ def SAMBA_SUBSYSTEM(bld, modname, source, bld.HEIMDAL_AUTOPROTO_PRIVATE(heimdal_autoproto_private, source) if autoproto is not None: bld.SAMBA_AUTOPROTO(autoproto, source + ' ' + autoproto_extra_source) + if public_headers is not None: + bld.PUBLIC_HEADERS(public_headers, header_path=header_path) return t + Build.BuildContext.SAMBA_SUBSYSTEM = SAMBA_SUBSYSTEM @@ -610,3 +622,33 @@ def SAMBA_SCRIPT(bld, name, pattern, installdir, installname=None): Build.BuildContext.SAMBA_SCRIPT = SAMBA_SCRIPT + +def INSTALL_FILES(bld, destdir, files, chmod=0644, flat=False, + python_fixup=False): + '''install a set of files''' + destdir = bld.EXPAND_VARIABLES(destdir) + bld.install_files(destdir, files, chmod=chmod, relative_trick=not flat) +Build.BuildContext.INSTALL_FILES = INSTALL_FILES + + +def INSTALL_WILDCARD(bld, destdir, pattern, chmod=0644, flat=False, + python_fixup=False): + '''install a set of files matching a wildcard pattern''' + files=bld.path.ant_glob(pattern) + INSTALL_FILES(bld, destdir, files, chmod=chmod, flat=flat) +Build.BuildContext.INSTALL_WILDCARD = INSTALL_WILDCARD + + +def PUBLIC_HEADERS(bld, public_headers, header_path=None): + '''install some headers''' + dest = '${INCLUDEDIR}' + if header_path: + dest += '/' + header_path + for h in TO_LIST(public_headers): + if header_path is None and h.find('/gen_ndr/') != -1: + # a special hack for gen_ndr headers + INSTALL_FILES(bld, '${INCLUDEDIR}/gen_ndr', h, flat=True) + else: + INSTALL_FILES(bld, dest, h, flat=True) +Build.BuildContext.PUBLIC_HEADERS = PUBLIC_HEADERS + diff --git a/codepages/wscript_build b/codepages/wscript_build index b31ef8d478..b3eafcc8dc 100644 --- a/codepages/wscript_build +++ b/codepages/wscript_build @@ -1 +1 @@ -bld.install_files('${DATAROOTDIR}', ['upcase.dat', 'lowcase.dat', 'valid.dat']) +bld.INSTALL_WILDCARD('${DATAROOTDIR}', '*.dat') diff --git a/lib/util/wscript_build b/lib/util/wscript_build index bf4f325014..ac6b227012 100644 --- a/lib/util/wscript_build +++ b/lib/util/wscript_build @@ -1,7 +1,8 @@ bld.SAMBA_LIBRARY('LIBSAMBA-UTIL', source='xfile.c debug.c fault.c signal.c system.c time.c genrand.c dprintf.c util_str.c rfc1738.c substitute.c util_strlist.c util_file.c data_blob.c util.c blocking.c util_net.c fsusage.c ms_fnmatch.c mutex.c idtree.c become_daemon.c rbtree.c talloc_stack.c smb_threads.c params.c parmlist.c util_id.c', public_deps='talloc LIBCRYPTO LIBREPLACE_NETWORK CHARSET execinfo UID_WRAPPER', - public_headers='util.h dlinklist.h attr.h byteorder.h data_blob.h debug.h memory.h mutex.h safe_string.h time.h util_ldb.h talloc_stack.h xfile.h', + public_headers='attr.h byteorder.h data_blob.h debug.h memory.h mutex.h safe_string.h time.h talloc_stack.h xfile.h', + header_path='util', local_include=False, vnum='0.0.1' ) diff --git a/source4/dynconfig/wscript b/source4/dynconfig/wscript index 3b64503677..1f0c6c0372 100644 --- a/source4/dynconfig/wscript +++ b/source4/dynconfig/wscript @@ -26,6 +26,7 @@ dyn_cflags = { 'PRIVATE_DIR' : '${PRIVATEDIR}', 'MODULESDIR' : '${PREFIX}/modules', 'SETUPDIR' : '${DATADIR}/setup', + 'INCLUDEDIR' : '${PREFIX}/include', 'WINBINDD_PRIVILEGED_SOCKET_DIR' : '${WINBINDD_PRIVILEGED_SOCKET_DIR}', 'WINBINDD_SOCKET_DIR' : '${WINBINDD_SOCKET_DIR}', 'NTP_SIGND_SOCKET_DIR' : '${NTP_SIGND_SOCKET_DIR}', @@ -61,16 +62,19 @@ def configure(conf): conf.ASSERT(varname not in conf.env, "Variable %s already defined" % varname) conf.env[varname] = value + for f in dyn_cflags.keys(): + # substitute twice, as we could have substitutions containing variables + v = Utils.subst_vars(dyn_cflags[f], conf.env) + v = Utils.subst_vars(v, conf.env) + conf.ASSERT(v != '', "Empty dynconfig value for %s" % f) + conf.ASSERT(v.find('${') == -1, "Unsubstituted variable in %s : %s : %s" % (f, dyn_cflags[f], v)) + conf.env[f] = v + def dynconfig_cflags(bld): '''work out the extra CFLAGS for dynconfig.c''' cflags = [] for f in dyn_cflags.keys(): - # substitute twice, as we could have substitutions containing variables - v = Utils.subst_vars(dyn_cflags[f], bld.env) - v = Utils.subst_vars(v, bld.env) - bld.ASSERT(v != '', "Empty dynconfig value for %s" % f) - bld.ASSERT(v.find('${') == -1, "Unsubstituted variable in %s : %s : %s" % (f, dyn_cflags[f], v)) - cflags.append('-D%s="%s"' % (f, v)) + cflags.append('-D%s="%s"' % (f, bld.env[f])) return cflags def build(bld): diff --git a/source4/libcli/wscript_build b/source4/libcli/wscript_build index bded7da4ca..537faf5950 100644 --- a/source4/libcli/wscript_build +++ b/source4/libcli/wscript_build @@ -4,7 +4,7 @@ bld.BUILD_SUBDIR('wbclient') bld.SAMBA_SUBSYSTEM('LIBSAMBA-ERRORS', source='../../libcli/util/doserr.c util/errormap.c util/nterr.c', - public_headers='../../libcli/util/error.h ../../testprogs/win32/spoolss/error.h ../../libcli/util/ntstatus.h ../../libcli/util/doserr.h ../../libcli/util/werror.h', + public_headers='../../libcli/util/error.h ../../libcli/util/ntstatus.h ../../libcli/util/doserr.h ../../libcli/util/werror.h', deps='talloc' ) diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build index 48bdecd3b3..f85f95ff4f 100644 --- a/source4/librpc/wscript_build +++ b/source4/librpc/wscript_build @@ -5,7 +5,8 @@ bld.SAMBA_LIBRARY('LIBNDR', source='ndr/ndr_string.c ../../librpc/ndr/ndr_basic.c ../../librpc/ndr/uuid.c ../../librpc/ndr/ndr.c ../../librpc/ndr/ndr_misc.c ../../librpc/gen_ndr/ndr_misc.c', # PC_FILES='../librpc/ndr.pc', public_deps='LIBSAMBA-ERRORS talloc LIBSAMBA-UTIL CHARSET LIBSAMBA-HOSTCONFIG', - public_headers='../../librpc/ndr/libndr.h PIDL_COMMON/misc.h PIDL_COMMON/ndr_misc.h', + public_headers='../../librpc/gen_ndr/misc.h ../../librpc/gen_ndr/ndr_misc.h', + header_path='gen_ndr', depends_on='PIDL_MISC', vnum='0.0.1' ) @@ -327,7 +328,7 @@ bld.SAMBA_LIBRARY('NDR_STANDARD', # PC_FILES='../librpc/ndr_standard.pc', deps='NDR_SECURITY', public_deps='LIBNDR', - public_headers='../../librpc/gen_ndr/samr.h ../../librpc/gen_ndr/ndr_samr.h ../rpc_server/lsa/lsa.h ../torture/rpc/netlogon.h ../../librpc/gen_ndr/atsvc.h ../../librpc/gen_ndr/ndr_atsvc.h ../../librpc/ndr/ndr_svcctl.h ../../librpc/gen_ndr/ndr_svcctl.h ../../librpc/gen_ndr/svcctl.h' + public_headers='../../librpc/gen_ndr/samr.h ../../librpc/gen_ndr/ndr_samr.h ../rpc_server/lsa/lsa.h ../torture/rpc/netlogon.h ../../librpc/gen_ndr/atsvc.h ../../librpc/gen_ndr/ndr_atsvc.h ../../librpc/gen_ndr/ndr_svcctl.h ../../librpc/gen_ndr/svcctl.h' ) diff --git a/source4/wscript_build b/source4/wscript_build index 5d46ca48b8..e0b942b274 100644 --- a/source4/wscript_build +++ b/source4/wscript_build @@ -113,5 +113,5 @@ bld.BUILD_SUBDIR('../libcli/named_pipe_auth') bld.BUILD_SUBDIR('heimdal_build') bld.BUILD_SUBDIR('lib/smbreadline') bld.BUILD_SUBDIR('../codepages') - - +bld.BUILD_SUBDIR('setup') +bld.BUILD_SUBDIR('scripting') -- cgit