build: fixes from ita
authorAndrew Tridgell <tridge@samba.org>
Wed, 17 Mar 2010 10:46:38 +0000 (21:46 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:40 +0000 (20:26 +1000)
buildtools/wafsamba/samba_pidl.py
buildtools/wafsamba/samba_utils.py
buildtools/wafsamba/wafsamba.py
lib/replace/wscript
librpc/wscript_build
source4/dsdb/wscript_build
source4/heimdal_build/wscript_build
source4/librpc/wscript_build
source4/wscript
source4/wscript_build

index d239bb07b329671b9267b5fc1a69a37a58cf42c5..9269566111122b9eacf71e719402686add680d80 100644 (file)
 # waf build tool for building IDL files with pidl
 
 from TaskGen import taskgen, before
-import Build, os, string
+import Build, os, string, Utils
 from samba_utils import *
 
-def SAMBA_PIDL(bld, directory, source, options=''):
+def SAMBA_PIDL(bld, pname, source, options=''):
     '''Build a IDL file using pidl.
        This will produce 7 output files'''
 
-    name = os.path.basename(string.replace(source, '.idl', ''))
-    name = "PIDL_%s" % name.upper()
+    bname = source[0:-4];
+    name = "PIDL_%s" % bname.upper()
 
     if not SET_TARGET_TYPE(bld, name, 'PIDL'):
         return
 
     bld.SET_BUILD_GROUP('build_source')
-    t = bld(name=name, source=source, options=options)
-    t.mappings['.idl'] = process_pidl
+
+    gen_ndr_dir = '../gen_ndr/'
+    out_files = []
+    out_files.append(gen_ndr_dir + 'ndr_%s.c' % bname)
+    out_files.append(gen_ndr_dir + 'ndr_%s.h' % bname)
+    out_files.append(gen_ndr_dir + '%s.h' % bname)
+    out_files.append(gen_ndr_dir + 'ndr_%s_s.c' % bname)
+    out_files.append(gen_ndr_dir + 'ndr_%s_c.c' % bname)
+    out_files.append(gen_ndr_dir + 'ndr_%s_c.h' % bname)
+    out_files.append(gen_ndr_dir + 'py_%s.c' % bname)
+
+    pidl = bld.srcnode.find_resource('pidl/pidl').relpath_gen(bld.path)
+    t = bld(rule='${PIDL} ${PIDL_BUILD_TYPES} ${OPTIONS} --outputdir ${OUTPUTDIR} -- ${SRC[0].abspath(env)}',
+            ext_out = '.c',
+            before = 'cc',
+            shell = False,
+            source=source,
+            target = out_files,
+            name=name)
+
     t.env.PIDL = "../../pidl/pidl"
     t.env.PIDL_BUILD_TYPES = '--header --ndr-parser --client --python --server'.split()
     t.env.OPTIONS = options
+    t.env.OUTPUTDIR = bld.BUILD_PATH(gen_ndr_dir)
+
+    # I'm creating the list of headers for the tables rule here.
+    # then the tables rule itself is below
+    #t.collect_headers = [bld.path.find_or_declare(out_files[1])] #, bld.path.find_or_declare(out_files[6])]
+    #if name.rfind('PIDL') > -1:
+    #   print name, "t.coll", t.collect_headers
+    #print name, "so bld.PIDL_STUFF is defined", id(bld)
+    try:
+         bld.PIDL_STUFF[name] = [bld.path.find_or_declare(out_files[1])]
+    except AttributeError:
+         bld.PIDL_STUFF = {}
+         bld.PIDL_STUFF[name] = [bld.path.find_or_declare(out_files[1])]
+
+    # I think I need to build this list as absolute paths, then
+    # re-do as relative paths in the tables rule
+    t.more_includes = '#' + bld.path.relpath_gen(bld.srcnode)
+    #if not 'PIDL_HEADERS' in bld.env:
+    #    bld.env.PIDL_HEADERS = []
+    #bld.env.PIDL_HEADERS.append(gen_ndr_dir + 'ndr_%s.h' % bname)
+
+
 
 Build.BuildContext.SAMBA_PIDL = SAMBA_PIDL
 
 
-@taskgen
-def process_pidl(self, node, options=''):
-    '''Generate the list of output nodes for a given input IDL
-       file, and create the task to build them'''
-    bname       = node.file_base()
-    # the output of pidl needs to go in the gen_ndr directory
-    gen_ndr_dir = "../gen_ndr/"
-    c_node     = NEW_NODE(node, gen_ndr_dir + 'ndr_%s.c' % bname)
-    h1_node    = NEW_NODE(node, gen_ndr_dir + '%s.h' % bname)
-    h2_node    = NEW_NODE(node, gen_ndr_dir + 'ndr_%s.h' % bname)
-    s_node     = NEW_NODE(node, gen_ndr_dir + 'ndr_%s_s.c' % bname)
-    cli_node   = NEW_NODE(node, gen_ndr_dir + 'ndr_%s_c.c' % bname)
-    cli_h_node = NEW_NODE(node, gen_ndr_dir + 'ndr_%s_c.h' % bname)
-    py_node    = NEW_NODE(node, gen_ndr_dir + 'py_%s.c' % bname)
-    t = self.create_task('pidl', node, [c_node, h1_node, h2_node, s_node,
-                                        cli_node, cli_h_node, py_node])
-    # setup ${OUTPUTDIR} in the pidl rule, and make sure it exists
-    t.env.OUTPUTDIR = os.path.dirname(c_node.abspath(self.env))
-    if not os.path.isdir(t.env.OUTPUTDIR):
-        os.mkdir(t.env.OUTPUTDIR, 0777)
-
-
-# the pidl task itself
-import Task
-Task.simple_task_type('pidl',
-                      '${PIDL} ${PIDL_BUILD_TYPES} ${OPTIONS} --outputdir ${OUTPUTDIR} -- ${SRC}',
-                      color='BLUE', before='cc', shell=False)
+#################################################################
+# define a set of Samba PIDL targets
+def SAMBA_PIDL_LIST(bld, name, source, options=''):
+    for p in source.split():
+        bld.SAMBA_PIDL(name, p, options)
+Build.BuildContext.SAMBA_PIDL_LIST = SAMBA_PIDL_LIST
+
+
+#################################################################
+# the rule for generating the NDR tables
+from TaskGen import feature, before
+@feature('collect')
+@before('exec_rule')
+def collect(self):
+    for (name, hd) in self.bld.PIDL_STUFF.items():
+        y = self.bld.name_to_obj(name, self.env)
+        if not y:
+            raise "!"+str(name)
+        y.post()
+        for node in hd:
+            self.source += " " + node.relpath_gen(self.path)
+
+def SAMBA_PIDL_TABLES(bld, name, target):
+    headers = bld.env.PIDL_HEADERS
+    # this print line should tell us what we ended up with
+    # we're ending up with the wrong relative path
+    #print "tables target=%s curdir=%s headers=%s" % (target, bld.curdir, headers)
+    t = bld(
+            features = 'collect',
+            rule='${SRC} --output ${TGT} > ${TGT}',
+            ext_out = '.c',
+            before = 'cc',
+            shell = True,
+            source = '../../librpc/tables.pl',
+            target=target,
+            name=name)
+    print name
+Build.BuildContext.SAMBA_PIDL_TABLES = SAMBA_PIDL_TABLES
+
index 0c8a832c70c1435497de2c51131601b45b046cf9..bdbd3c7b932062930c164ce7b35ccb23a1f5ecd4 100644 (file)
@@ -157,7 +157,7 @@ def ADD_COMMAND(opt, name, function):
 Options.Handler.ADD_COMMAND = ADD_COMMAND
 
 
-@feature('cprogram cc')
+@feature('cprogram','cc','cshlib')
 @before('apply_core')
 def process_depends_on(self):
     '''The new depends_on attribute for build rules
@@ -169,6 +169,27 @@ def process_depends_on(self):
             y = self.bld.name_to_obj(x, self.env)
             y.post()
 
+            if getattr(y, 'more_includes', None):
+                  self.includes += " " + y.more_includes
+
+
+#@feature('cprogram cc cshlib')
+#@before('apply_core')
+#def process_generated_dependencies(self):
+#    '''Ensure that any dependent source generation happens
+#       before any task that requires the output'''
+#    if getattr(self , 'depends_on', None):
+#        lst = self.to_list(self.depends_on)
+#        for x in lst:
+#            y = self.bld.name_to_obj(x, self.env)
+#            y.post()
+
+
+def FIND_TASKGEN(bld, name):
+    '''find a waf task generator given a target name'''
+    return bld.name_to_obj(name)
+Build.BuildContext.FIND_TASKGEN = FIND_TASKGEN
+
 
 #import TaskGen, Task
 #
@@ -179,3 +200,24 @@ def process_depends_on(self):
 #
 #for y in ['cc', 'cxx']:
 #    TaskGen.classes[y].post_run = new_post_run
+
+def ENABLE_MAGIC_ORDERING(bld):
+    '''enable automatic build order constraint calculation
+       see page 35 of the waf book'''
+    print "Enabling magic ordering"
+    bld.use_the_magic()
+Build.BuildContext.ENABLE_MAGIC_ORDERING = ENABLE_MAGIC_ORDERING
+
+
+def BUILD_PATH(bld, relpath):
+    '''return a relative build path, given a relative path
+       for example, if called in the source4/librpc directory, with the path
+       gen_ndr/tables.c, then it will return default/source4/gen_ndr/tables.c
+    '''
+
+    ret = os.path.normpath(os.path.join(os.path.relpath(bld.curdir, bld.env.TOPDIR), relpath))
+    ret = 'default/%s' % ret
+    return ret
+Build.BuildContext.BUILD_PATH = BUILD_PATH
+
+
index 58f98fe1ca0df4d2108e950e6c641de4ac6d5dcd..932b9e3bd09b13581c420a864de7cff8742ec96d 100644 (file)
@@ -8,6 +8,7 @@ from TaskGen import extension
 
 # bring in the other samba modules
 from samba_utils import *
+# should be enabled from the above?
 from samba_autoconf import *
 from samba_patterns import *
 from samba_pidl import *
@@ -110,12 +111,13 @@ def ADD_DEPENDENCIES(bld, name, deps):
             sys.stderr.write("Removing dependency %s from target %s\n" % (d, name))
             del(lib_deps[name][d])
 
+    target_cache = LOCAL_CACHE(bld, 'TARGET_TYPE')
+
     # extract out the system dependencies
     sysdeps = []
     localdeps = []
     add_objects = []
     cache = LOCAL_CACHE(bld, 'EMPTY_TARGETS')
-    target_cache = LOCAL_CACHE(bld, 'TARGET_TYPE')
     predeclare = LOCAL_CACHE(bld, 'PREDECLARED_TARGET')
     for d in list2:
         recurse = False
@@ -188,7 +190,8 @@ def SAMBA_LIBRARY(bld, libname, source,
                   cflags='',
                   output_type=None,
                   realname=None,
-                  autoproto=None):
+                  autoproto=None,
+                  depends_on=''):
     if not SET_TARGET_TYPE(bld, libname, 'LIBRARY'):
         return
 
@@ -211,6 +214,7 @@ def SAMBA_LIBRARY(bld, libname, source,
         add_objects = add_objects,
         ccflags = CURRENT_CFLAGS(bld, cflags),
         includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist,
+        depends_on=depends_on,
         vnum=vnum)
 
     # put a link to the library in bin/shared
@@ -336,14 +340,6 @@ Build.BuildContext.SAMBA_ERRTABLE = SAMBA_ERRTABLE
 
 
 
-#################################################################
-# define a set of Samba PIDL targets
-def SAMBA_PIDL_LIST(bld, directory, source, options=''):
-    for p in source.split():
-        bld.SAMBA_PIDL(directory, p, options)
-Build.BuildContext.SAMBA_PIDL_LIST = SAMBA_PIDL_LIST
-
-
 ################################################################
 # build a C prototype file automatically
 def AUTOPROTO(bld, header, source):
@@ -402,7 +398,8 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
                     cflags='',
                     group='main',
                     config_option=None,
-                    init_function_sentinal=None):
+                    init_function_sentinal=None,
+                    depends_on=''):
 
     if not SET_TARGET_TYPE(bld, modname, 'SUBSYSTEM'):
         return
@@ -422,12 +419,14 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
     ilist = bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) + bld.SUBDIR(bld.curdir, include_list)
     ilist = bld.NORMPATH(ilist)
     bld.SET_BUILD_GROUP(group)
-    bld(
+    t = bld(
         features = 'cc',
         source = source,
         target=modname,
         ccflags = CURRENT_CFLAGS(bld, cflags),
-        includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist)
+        includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist,
+        depends_on=depends_on)
+    return t
 Build.BuildContext.SAMBA_SUBSYSTEM = SAMBA_SUBSYSTEM
 
 
index 5188a338afcdc357eeefe75f48a0578ade5769ee..e150c9a1050db7d6de764457e9a6ffb7b1348b95 100644 (file)
@@ -27,6 +27,7 @@ def set_options(opt):
 @wafsamba.runonce
 def configure(conf):
     conf.env.hlist = []
+    conf.env.srcdir = conf.srcdir
 
     # load our local waf extensions
     conf.check_tool('wafsamba', tooldir=conf.srcdir + "/buildtools/wafsamba")
index 2cfdeb19d7adc1185039235ed5e62f758b43e597..3b68fee963c012feac7366bdbb55e07cffef0c5f 100644 (file)
@@ -1,14 +1 @@
-COMMON_IDL=bld.SUBDIR('idl',
-                      '''atsvc.idl dcom.idl drsuapi.idl epmapper.idl initshutdown.idl
-                         misc.idl ntlmssp.idl protected_storage.idl schannel.idl trkwks.idl
-                         wmi.idl audiosrv.idl dfsblobs.idl dsbackup.idl eventlog.idl keysvc.idl
-                         msgsvc.idl ntsvcs.idl remact.idl security.idl unixinfo.idl wzcsvc.idl
-                         browser.idl dfs.idl dssetup.idl frsapi.idl krb5pac.idl
-                         named_pipe_auth.idl orpc.idl rot.idl spoolss.idl w32time.idl xattr.idl
-                         dbgidl.idl dnsserver.idl echo.idl frsrpc.idl lsa.idl nbt.idl
-                         oxidresolver.idl samr.idl srvsvc.idl winreg.idl dcerpc.idl
-                         drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl
-                         policyagent.idl scerpc.idl svcctl.idl wkssvc.idl''')
-
-bld.SAMBA_PIDL_LIST('gen_ndr', COMMON_IDL)
-
+bld.BUILD_SUBDIR('idl')
index 99ed061d27cadc207a49950ac758723db5acc115..cc2f3fb901681a00a7425b810b0b9d27c8e86051 100644 (file)
@@ -12,14 +12,14 @@ bld.SAMBA_SUBSYSTEM('SAMDB',
 
 
 bld.SAMBA_SUBSYSTEM('SAMDB_COMMON',
-       source='samdb/ldb_modules/util.c ./common/util.c common/dsdb_dn.c ./common/tests/dsdb_dn.c ../../libds/common/flag_mapping.c',
+       source='common/util.c ./samdb/ldb_modules/util.c common/dsdb_dn.c ./common/tests/dsdb_dn.c ../../libds/common/flag_mapping.c',
        autoproto='common/proto.h',
        deps='ldb NDR_DRSBLOBS LIBCLI_LDAP_NDR UTIL_LDB LIBCLI_AUTH'
        )
 
 
 bld.SAMBA_SUBSYSTEM('SAMDB_SCHEMA',
-       source='schema/schema_init.c schema/schema_set.c schema/schema_query.c schema/tests/schema_syntax.c ./schema/schema_syntax.c schema/schema_description.c schema/schema_convert_to_ol.c schema/schema_inferiors.c schema/schema_prefixmap.c',
+       source='schema/schema_init.c schema/schema_set.c schema/schema_query.c schema/schema_syntax.c ./schema/tests/schema_syntax.c schema/schema_description.c schema/schema_convert_to_ol.c schema/schema_inferiors.c schema/schema_prefixmap.c',
        autoproto='schema/proto.h',
        deps='SAMDB_COMMON NDR_DRSUAPI NDR_DRSBLOBS LDBSAMBA'
        )
index 35f09af29d786586eb4c155a0b9746fd2b750f65..c286c54c4c0ab38ec660066a6d523ca715331d89 100644 (file)
@@ -1,3 +1,18 @@
+#! /usr/bin/env python
+
+# we sould call out to a new bld.SAMBA_XXXXX() function
+# I want to hide gory details from samba devels inside the wafsamba tool
+
+print "hmmm"
+
+bld(
+    rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[1].parent.abspath(env)}",
+    source = '../heimdal/lib/wind/gen-errorlist.py ../heimdal/lib/wind/rfc3454.txt ../heimdal/lib/wind/stringprep.py',
+    target = '../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/errorlist_table.h',
+    before = 'cc',
+    name="gruik", always=True
+)
+
 bld.SAMBA_ASN1('HEIMDAL_SPNEGO_ASN1',
        '../heimdal/lib/gssapi/spnego/spnego.asn1',
        options='--sequence=MechTypeList',
index 5dba84ca5e2cedbefdfe1d50bd4e7386dd8d85ed..7bafb617253de675dcea2e17a0f85cf63d0a47cf 100644 (file)
@@ -1,14 +1,20 @@
+#! /usr/bin/env python
+
+bld.BUILD_SUBDIR('../../librpc/idl')
+bld.BUILD_SUBDIR('idl')
+
 bld.SAMBA_LIBRARY('LIBNDR',
-       'ndr/ndr_string.c ../../librpc/ndr/ndr_basic.c ../../librpc/ndr/uuid.c ../torture/ndr/ndr.c ../../librpc/ndr/ndr_misc.c ../../librpc/gen_ndr/ndr_misc.c',
+       source='ndr/ndr_string.c ../../librpc/ndr/ndr_basic.c ../../librpc/ndr/uuid.c ../torture/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 ../../librpc/gen_ndr/misc.h ../../librpc/gen_ndr/ndr_misc.h',
+       public_headers='../../librpc/ndr/libndr.h PIDL_COMMON/misc.h PIDL_COMMON/ndr_misc.h',
+        depends_on='PIDL_MISC',
        vnum='0.0.1'
        )
 
 
 bld.SAMBA_BINARY('ndrdump',
-       '../../librpc/tools/ndrdump.c',
+       source='../../librpc/tools/ndrdump.c',
        manpages='../../librpc/tools/ndrdump.1',
        installdir='BINDIR',
        deps='LIBSAMBA-HOSTCONFIG LIBSAMBA-UTIL LIBPOPT POPT_SAMBA NDR_TABLE LIBSAMBA-ERRORS'
@@ -16,309 +22,309 @@ bld.SAMBA_BINARY('ndrdump',
 
 
 bld.SAMBA_SUBSYSTEM('NDR_COMPRESSION',
-       '../../librpc/ndr/ndr_compression.c',
+       source='../../librpc/ndr/ndr_compression.c',
        public_deps='LIBSAMBA-ERRORS LIBNDR',
        deps='ZLIB LZXPRESS'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SECURITY',
-       '../../librpc/gen_ndr/ndr_security.c ../../librpc/ndr/ndr_sec_helper.c gen_ndr/ndr_server_id.c',
+       source='../../librpc/gen_ndr/ndr_security.c ../../librpc/ndr/ndr_sec_helper.c gen_ndr/ndr_server_id.c',
        public_deps='LIBNDR LIBSECURITY',
        public_headers='../libcli/security/security.h gen_ndr/server_id.h'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_AUDIOSRV',
-       '../../librpc/gen_ndr/ndr_audiosrv.c',
+       source='../../librpc/gen_ndr/ndr_audiosrv.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NAMED_PIPE_AUTH',
-       '../../librpc/gen_ndr/ndr_named_pipe_auth.c',
+       source='../../librpc/gen_ndr/ndr_named_pipe_auth.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DNSSERVER',
-       '../../librpc/gen_ndr/ndr_dnsserver.c',
+       source='../../librpc/gen_ndr/ndr_dnsserver.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WINSTATION',
-       'gen_ndr/ndr_winstation.c',
+       source='gen_ndr/ndr_winstation.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_IRPC',
-       'gen_ndr/ndr_irpc.c',
+       source='gen_ndr/ndr_irpc.c',
        public_deps='LIBNDR NDR_SECURITY NDR_NBT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DCOM',
-       '../../librpc/gen_ndr/ndr_dcom.c',
+       source='../../librpc/gen_ndr/ndr_dcom.c',
        public_deps='LIBNDR NDR_SECURITY NDR_ORPC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WMI',
-       '../../librpc/ndr/ndr_wmi.c ../../librpc/gen_ndr/ndr_wmi.c',
+       source='../../librpc/ndr/ndr_wmi.c ../../librpc/gen_ndr/ndr_wmi.c',
        public_deps='LIBNDR NDR_SECURITY NDR_DCOM'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DSBACKUP',
-       '../../librpc/gen_ndr/ndr_dsbackup.c',
+       source='../../librpc/gen_ndr/ndr_dsbackup.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_EFS',
-       '../../librpc/gen_ndr/ndr_efs.c',
+       source='../../librpc/gen_ndr/ndr_efs.c',
        public_deps='LIBNDR NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_ROT',
-       '../../librpc/gen_ndr/ndr_rot.c',
+       source='../../librpc/gen_ndr/ndr_rot.c',
        public_deps='LIBNDR NDR_ORPC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_FRSRPC',
-       '../../librpc/ndr/ndr_frsrpc.c ../../librpc/gen_ndr/ndr_frsrpc.c',
+       source='../../librpc/ndr/ndr_frsrpc.c ../../librpc/gen_ndr/ndr_frsrpc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_FRSAPI',
-       '../../librpc/gen_ndr/ndr_frsapi.c',
+       source='../../librpc/gen_ndr/ndr_frsapi.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_FRSTRANS',
-       '../../librpc/gen_ndr/ndr_frstrans.c',
+       source='../../librpc/gen_ndr/ndr_frstrans.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DRSUAPI',
-       '../../librpc/ndr/ndr_drsuapi.c ../../librpc/gen_ndr/ndr_drsuapi.c',
+       source='../../librpc/ndr/ndr_drsuapi.c ../../librpc/gen_ndr/ndr_drsuapi.c',
        public_deps='LIBNDR NDR_COMPRESSION NDR_SECURITY NDR_STANDARD ASN1_UTIL'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DRSBLOBS',
-       '../../librpc/ndr/ndr_drsblobs.c ../../librpc/gen_ndr/ndr_drsblobs.c',
+       source='../../librpc/ndr/ndr_drsblobs.c ../../librpc/gen_ndr/ndr_drsblobs.c',
        public_deps='LIBNDR NDR_DRSUAPI'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DFSBLOBS',
-       '../../librpc/gen_ndr/ndr_dfsblobs.c',
+       source='../../librpc/gen_ndr/ndr_dfsblobs.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SASL_HELPERS',
-       'gen_ndr/ndr_sasl_helpers.c',
+       source='gen_ndr/ndr_sasl_helpers.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_POLICYAGENT',
-       '../../librpc/gen_ndr/ndr_policyagent.c',
+       source='../../librpc/gen_ndr/ndr_policyagent.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_UNIXINFO',
-       '../../librpc/gen_ndr/ndr_unixinfo.c',
+       source='../../librpc/gen_ndr/ndr_unixinfo.c',
        public_deps='LIBNDR NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NFS4ACL',
-       'gen_ndr/ndr_nfs4acl.c',
+       source='gen_ndr/ndr_nfs4acl.c',
        public_deps='LIBNDR NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SPOOLSS',
-       '../../librpc/gen_ndr/ndr_spoolss.c',
+       source='../../librpc/gen_ndr/ndr_spoolss.c',
        public_deps='LIBNDR NDR_SPOOLSS_BUF NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SPOOLSS_BUF',
-       '../../librpc/ndr/ndr_spoolss_buf.c'
+       source='../../librpc/ndr/ndr_spoolss_buf.c'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_EPMAPPER',
-       '../../librpc/gen_ndr/ndr_epmapper.c',
+       source='../../librpc/gen_ndr/ndr_epmapper.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DBGIDL',
-       '../../librpc/gen_ndr/ndr_dbgidl.c',
+       source='../../librpc/gen_ndr/ndr_dbgidl.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DSSETUP',
-       '../../librpc/gen_ndr/ndr_dssetup.c',
+       source='../../librpc/gen_ndr/ndr_dssetup.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_MSGSVC',
-       '../../librpc/gen_ndr/ndr_msgsvc.c',
+       source='../../librpc/gen_ndr/ndr_msgsvc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WINSIF',
-       'gen_ndr/ndr_winsif.c',
+       source='gen_ndr/ndr_winsif.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_MGMT',
-       '../../librpc/gen_ndr/ndr_mgmt.c',
+       source='../../librpc/gen_ndr/ndr_mgmt.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_PROTECTED_STORAGE',
-       '../../librpc/gen_ndr/ndr_protected_storage.c',
+       source='../../librpc/gen_ndr/ndr_protected_storage.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_ORPC',
-       '../../librpc/ndr/ndr_orpc.c ../../librpc/gen_ndr/ndr_orpc.c',
+       source='../../librpc/ndr/ndr_orpc.c ../../librpc/gen_ndr/ndr_orpc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_OXIDRESOLVER',
-       '../../librpc/gen_ndr/ndr_oxidresolver.c',
+       source='../../librpc/gen_ndr/ndr_oxidresolver.c',
        public_deps='LIBNDR NDR_ORPC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_REMACT',
-       '../../librpc/gen_ndr/ndr_remact.c',
+       source='../../librpc/gen_ndr/ndr_remact.c',
        public_deps='LIBNDR NDR_ORPC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WZCSVC',
-       '../../librpc/gen_ndr/ndr_wzcsvc.c',
+       source='../../librpc/gen_ndr/ndr_wzcsvc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_BROWSER',
-       '../../librpc/gen_ndr/ndr_browser.c',
+       source='../../librpc/gen_ndr/ndr_browser.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_W32TIME',
-       '../../librpc/gen_ndr/ndr_w32time.c',
+       source='../../librpc/gen_ndr/ndr_w32time.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SCERPC',
-       '../../librpc/gen_ndr/ndr_scerpc.c',
+       source='../../librpc/gen_ndr/ndr_scerpc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_TRKWKS',
-       '../../librpc/gen_ndr/ndr_trkwks.c',
+       source='../../librpc/gen_ndr/ndr_trkwks.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_KEYSVC',
-       '../../librpc/gen_ndr/ndr_keysvc.c',
+       source='../../librpc/gen_ndr/ndr_keysvc.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_KRB5PAC',
-       '../../librpc/ndr/ndr_krb5pac.c ../../librpc/gen_ndr/ndr_krb5pac.c',
+       source='../../librpc/ndr/ndr_krb5pac.c ../../librpc/gen_ndr/ndr_krb5pac.c',
        public_deps='LIBNDR NDR_STANDARD NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_XATTR',
-       '../../librpc/ndr/ndr_xattr.c ../../librpc/gen_ndr/ndr_xattr.c',
+       source='../../librpc/ndr/ndr_xattr.c ../../librpc/gen_ndr/ndr_xattr.c',
        public_deps='LIBNDR NDR_SECURITY'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_OPENDB',
-       'gen_ndr/ndr_opendb.c',
+       source='gen_ndr/ndr_opendb.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NOTIFY',
-       'gen_ndr/ndr_notify.c',
+       source='gen_ndr/ndr_notify.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_SCHANNEL',
-       '../../librpc/ndr/ndr_schannel.c ../../librpc/gen_ndr/ndr_schannel.c',
+       source='../../librpc/ndr/ndr_schannel.c ../../librpc/gen_ndr/ndr_schannel.c',
        public_deps='LIBNDR NDR_NBT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NBT',
-       '../../librpc/gen_ndr/ndr_nbt.c',
+       source='../../librpc/gen_ndr/ndr_nbt.c',
        public_deps='LIBNDR NDR_NBT_BUF NDR_SECURITY NDR_STANDARD LIBCLI_NDR_NETLOGON',
        public_headers='../../librpc/gen_ndr/nbt.h'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NTP_SIGND',
-       'gen_ndr/ndr_ntp_signd.c',
+       source='gen_ndr/ndr_ntp_signd.c',
        public_deps='LIBNDR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WINSREPL',
-       'gen_ndr/ndr_winsrepl.c',
+       source='gen_ndr/ndr_winsrepl.c',
        public_deps='LIBNDR NDR_NBT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_WINBIND',
-       'gen_ndr/ndr_winbind.c',
+       source='gen_ndr/ndr_winbind.c',
        public_deps='LIBNDR NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_NTLMSSP',
-       '../../librpc/ndr/ndr_ntlmssp.c ../../librpc/gen_ndr/ndr_ntlmssp.c',
+       source='../../librpc/ndr/ndr_ntlmssp.c ../../librpc/gen_ndr/ndr_ntlmssp.c',
        public_deps='LIBNDR NDR_STANDARD'
        )
 
 
 bld.SAMBA_LIBRARY('NDR_STANDARD',
-       '../../librpc/gen_ndr/ndr_echo.c ../../librpc/gen_ndr/ndr_lsa.c ../../librpc/gen_ndr/ndr_samr.c ../../librpc/ndr/ndr_netlogon.c ../../librpc/gen_ndr/ndr_netlogon.c ../../libcli/ndr_netlogon.c ../../librpc/gen_ndr/ndr_dfs.c ../../librpc/gen_ndr/ndr_atsvc.c ../../librpc/gen_ndr/ndr_wkssvc.c ../../librpc/gen_ndr/ndr_srvsvc.c ../../librpc/ndr/ndr_svcctl.c ../../librpc/gen_ndr/ndr_svcctl.c ../../librpc/gen_ndr/ndr_winreg.c ../../librpc/gen_ndr/ndr_initshutdown.c ../../librpc/gen_ndr/ndr_eventlog.c ../../librpc/gen_ndr/ndr_ntsvcs.c',
+       source='../../librpc/gen_ndr/ndr_echo.c ../../librpc/gen_ndr/ndr_lsa.c ../../librpc/gen_ndr/ndr_samr.c ../../librpc/ndr/ndr_netlogon.c ../../librpc/gen_ndr/ndr_netlogon.c ../../libcli/ndr_netlogon.c ../../librpc/gen_ndr/ndr_dfs.c ../../librpc/gen_ndr/ndr_atsvc.c ../../librpc/gen_ndr/ndr_wkssvc.c ../../librpc/gen_ndr/ndr_srvsvc.c ../../librpc/ndr/ndr_svcctl.c ../../librpc/gen_ndr/ndr_svcctl.c ../../librpc/gen_ndr/ndr_winreg.c ../../librpc/gen_ndr/ndr_initshutdown.c ../../librpc/gen_ndr/ndr_eventlog.c ../../librpc/gen_ndr/ndr_ntsvcs.c',
        vnum='0.0.1',
        # PC_FILES='../librpc/ndr_standard.pc',
        deps='NDR_SECURITY',
@@ -327,98 +333,101 @@ bld.SAMBA_LIBRARY('NDR_STANDARD',
        )
 
 
+bld.SAMBA_PIDL_TABLES('GEN_NDR_TABLES', 'gen_ndr/tables.c')
+
 bld.SAMBA_SUBSYSTEM('NDR_TABLE',
-       '../../librpc/ndr/ndr_table.c gen_ndr/tables.c',
-       public_deps='NDR_STANDARD NDR_AUDIOSRV NDR_DSBACKUP NDR_EFS NDR_DRSUAPI NDR_POLICYAGENT NDR_UNIXINFO NDR_SPOOLSS NDR_EPMAPPER NDR_DBGIDL NDR_DSSETUP NDR_MSGSVC NDR_WINSIF NDR_MGMT NDR_PROTECTED_STORAGE NDR_OXIDRESOLVER NDR_REMACT NDR_WZCSVC NDR_BROWSER NDR_W32TIME NDR_SCERPC NDR_TRKWKS NDR_KEYSVC NDR_KRB5PAC NDR_XATTR NDR_SCHANNEL NDR_ROT NDR_DRSBLOBS NDR_NBT NDR_WINSREPL NDR_SECURITY NDR_DNSSERVER NDR_WINSTATION NDR_IRPC NDR_OPENDB NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI NDR_FRSTRANS NDR_NFS4ACL NDR_NTP_SIGND NDR_DCOM NDR_WMI NDR_NAMED_PIPE_AUTH NDR_NTLMSSP NDR_DFSBLOBS'
+       source='../../librpc/ndr/ndr_table.c gen_ndr/tables.c',
+       public_deps='NDR_STANDARD NDR_AUDIOSRV NDR_DSBACKUP NDR_EFS NDR_DRSUAPI NDR_POLICYAGENT NDR_UNIXINFO NDR_SPOOLSS NDR_EPMAPPER NDR_DBGIDL NDR_DSSETUP NDR_MSGSVC NDR_WINSIF NDR_MGMT NDR_PROTECTED_STORAGE NDR_OXIDRESOLVER NDR_REMACT NDR_WZCSVC NDR_BROWSER NDR_W32TIME NDR_SCERPC NDR_TRKWKS NDR_KEYSVC NDR_KRB5PAC NDR_XATTR NDR_SCHANNEL NDR_ROT NDR_DRSBLOBS NDR_NBT NDR_WINSREPL NDR_SECURITY NDR_DNSSERVER NDR_WINSTATION NDR_IRPC NDR_OPENDB NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI NDR_FRSTRANS NDR_NFS4ACL NDR_NTP_SIGND NDR_DCOM NDR_WMI NDR_NAMED_PIPE_AUTH NDR_NTLMSSP NDR_DFSBLOBS',
+        depends_on='GEN_NDR_TABLES'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_XATTR',
-       '../../librpc/gen_ndr/ndr_xattr_c.c',
+       source='../../librpc/gen_ndr/ndr_xattr_c.c',
        public_deps='NDR_XATTR dcerpc'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_ROT',
-       '../../librpc/gen_ndr/ndr_rot_c.c',
+       source='../../librpc/gen_ndr/ndr_rot_c.c',
        public_deps='NDR_ROT dcerpc'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_AUDIOSRV',
-       '../../librpc/gen_ndr/ndr_audiosrv_c.c',
+       source='../../librpc/gen_ndr/ndr_audiosrv_c.c',
        public_deps='NDR_AUDIOSRV dcerpc'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_ECHO',
-       '../../librpc/gen_ndr/ndr_echo_c.c',
+       source='../../librpc/gen_ndr/ndr_echo_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_DSBACKUP',
-       '../../librpc/gen_ndr/ndr_dsbackup_c.c',
+       source='../../librpc/gen_ndr/ndr_dsbackup_c.c',
        public_deps='dcerpc NDR_DSBACKUP'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_EFS',
-       '../../librpc/gen_ndr/ndr_efs_c.c',
+       source='../../librpc/gen_ndr/ndr_efs_c.c',
        public_deps='dcerpc NDR_EFS'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_LSA',
-       '../../librpc/gen_ndr/ndr_lsa_c.c',
+       source='../../librpc/gen_ndr/ndr_lsa_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_DFS',
-       '../../librpc/gen_ndr/ndr_dfs_c.c',
+       source='../../librpc/gen_ndr/ndr_dfs_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_FRSAPI',
-       '../../librpc/gen_ndr/ndr_frsapi_c.c',
+       source='../../librpc/gen_ndr/ndr_frsapi_c.c',
        public_deps='dcerpc NDR_FRSAPI'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_DRSUAPI',
-       '../../librpc/gen_ndr/ndr_drsuapi_c.c',
+       source='../../librpc/gen_ndr/ndr_drsuapi_c.c',
        public_deps='dcerpc NDR_DRSUAPI'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_POLICYAGENT',
-       '../../librpc/gen_ndr/ndr_policyagent_c.c',
+       source='../../librpc/gen_ndr/ndr_policyagent_c.c',
        public_deps='dcerpc NDR_POLICYAGENT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_UNIXINFO',
-       '../../librpc/gen_ndr/ndr_unixinfo_c.c',
+       source='../../librpc/gen_ndr/ndr_unixinfo_c.c',
        public_deps='dcerpc NDR_UNIXINFO'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_BROWSER',
-       '../../librpc/gen_ndr/ndr_browser_c.c',
+       source='../../librpc/gen_ndr/ndr_browser_c.c',
        public_deps='dcerpc NDR_BROWSER'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_IRPC',
-       'gen_ndr/ndr_irpc_c.c',
+       source='gen_ndr/ndr_irpc_c.c',
        public_deps='dcerpc NDR_IRPC'
        )
 
 
 bld.SAMBA_LIBRARY('dcerpc_samr',
-       '../../librpc/gen_ndr/ndr_samr_c.c',
+       source='../../librpc/gen_ndr/ndr_samr_c.c',
        # PC_FILES='dcerpc_samr.pc',
        vnum='0.0.1',
        public_deps='dcerpc NDR_STANDARD',
@@ -427,32 +436,32 @@ bld.SAMBA_LIBRARY('dcerpc_samr',
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_SPOOLSS',
-       '../../librpc/gen_ndr/ndr_spoolss_c.c',
+       source='../../librpc/gen_ndr/ndr_spoolss_c.c',
        public_deps='dcerpc NDR_SPOOLSS'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_WKSSVC',
-       '../../librpc/gen_ndr/ndr_wkssvc_c.c',
+       source='../../librpc/gen_ndr/ndr_wkssvc_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_SRVSVC',
-       '../../librpc/gen_ndr/ndr_srvsvc_c.c',
+       source='../../librpc/gen_ndr/ndr_srvsvc_c.c',
        public_deps='dcerpc NDR_SRVSVC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_SVCCTL',
-       '../../librpc/gen_ndr/ndr_svcctl_c.c',
+       source='../../librpc/gen_ndr/ndr_svcctl_c.c',
        public_deps='dcerpc NDR_STANDARD',
        public_headers='../../librpc/gen_ndr/ndr_svcctl_c.h'
        )
 
 
 bld.SAMBA_LIBRARY('dcerpc_atsvc',
-       '../../librpc/gen_ndr/ndr_atsvc_c.c',
+       source='../../librpc/gen_ndr/ndr_atsvc_c.c',
        # PC_FILES='dcerpc_atsvc.pc',
        vnum='0.0.1',
        public_deps='dcerpc NDR_STANDARD',
@@ -461,128 +470,128 @@ bld.SAMBA_LIBRARY('dcerpc_atsvc',
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_EVENTLOG',
-       '../../librpc/gen_ndr/ndr_eventlog_c.c',
+       source='../../librpc/gen_ndr/ndr_eventlog_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_EPMAPPER',
-       '../../librpc/gen_ndr/ndr_epmapper_c.c',
+       source='../../librpc/gen_ndr/ndr_epmapper_c.c',
        public_deps='NDR_EPMAPPER'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_DBGIDL',
-       '../../librpc/gen_ndr/ndr_dbgidl_c.c',
+       source='../../librpc/gen_ndr/ndr_dbgidl_c.c',
        public_deps='dcerpc NDR_DBGIDL'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_DSSETUP',
-       '../../librpc/gen_ndr/ndr_dssetup_c.c',
+       source='../../librpc/gen_ndr/ndr_dssetup_c.c',
        public_deps='dcerpc NDR_DSSETUP'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_MSGSVC',
-       '../../librpc/gen_ndr/ndr_msgsvc_c.c',
+       source='../../librpc/gen_ndr/ndr_msgsvc_c.c',
        public_deps='dcerpc NDR_MSGSVC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_WINSIF',
-       'gen_ndr/ndr_winsif_c.c',
+       source='gen_ndr/ndr_winsif_c.c',
        public_deps='dcerpc NDR_WINSIF'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_WINREG',
-       '../../librpc/gen_ndr/ndr_winreg_c.c',
+       source='../../librpc/gen_ndr/ndr_winreg_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_INITSHUTDOWN',
-       '../../librpc/gen_ndr/ndr_initshutdown_c.c',
+       source='../../librpc/gen_ndr/ndr_initshutdown_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_MGMT',
-       '../../librpc/gen_ndr/ndr_mgmt_c.c',
+       source='../../librpc/gen_ndr/ndr_mgmt_c.c',
        deps='NDR_MGMT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_PROTECTED_STORAGE',
-       '../../librpc/gen_ndr/ndr_protected_storage_c.c',
+       source='../../librpc/gen_ndr/ndr_protected_storage_c.c',
        public_deps='dcerpc NDR_PROTECTED_STORAGE'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_OXIDRESOLVER',
-       '../../librpc/gen_ndr/ndr_oxidresolver_c.c',
+       source='../../librpc/gen_ndr/ndr_oxidresolver_c.c',
        public_deps='dcerpc NDR_OXIDRESOLVER'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_REMACT',
-       '../../librpc/gen_ndr/ndr_remact_c.c',
+       source='../../librpc/gen_ndr/ndr_remact_c.c',
        public_deps='dcerpc NDR_REMACT'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_WZCSVC',
-       '../../librpc/gen_ndr/ndr_wzcsvc_c.c',
+       source='../../librpc/gen_ndr/ndr_wzcsvc_c.c',
        public_deps='dcerpc NDR_WZCSVC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_W32TIME',
-       '../../librpc/gen_ndr/ndr_w32time_c.c',
+       source='../../librpc/gen_ndr/ndr_w32time_c.c',
        public_deps='dcerpc NDR_W32TIME'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_SCERPC',
-       '../../librpc/gen_ndr/ndr_scerpc_c.c',
+       source='../../librpc/gen_ndr/ndr_scerpc_c.c',
        public_deps='dcerpc NDR_SCERPC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_NTSVCS',
-       '../../librpc/gen_ndr/ndr_ntsvcs_c.c',
+       source='../../librpc/gen_ndr/ndr_ntsvcs_c.c',
        public_deps='dcerpc NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_NETLOGON',
-       '../../librpc/gen_ndr/ndr_netlogon_c.c',
+       source='../../librpc/gen_ndr/ndr_netlogon_c.c',
        public_deps='NDR_STANDARD'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_TRKWKS',
-       '../../librpc/gen_ndr/ndr_trkwks_c.c',
+       source='../../librpc/gen_ndr/ndr_trkwks_c.c',
        public_deps='dcerpc NDR_TRKWKS'
        )
 
 
 bld.SAMBA_SUBSYSTEM('RPC_NDR_KEYSVC',
-       '../../librpc/gen_ndr/ndr_keysvc_c.c',
+       source='../../librpc/gen_ndr/ndr_keysvc_c.c',
        public_deps='dcerpc NDR_KEYSVC'
        )
 
 
 bld.SAMBA_SUBSYSTEM('NDR_DCERPC',
-       '../../librpc/gen_ndr/ndr_dcerpc.c',
+       source='../../librpc/gen_ndr/ndr_dcerpc.c',
        public_deps='LIBNDR',
        public_headers='rpc/dcerpc.h ../../librpc/gen_ndr/ndr_dcerpc.h'
        )
 
 
 bld.SAMBA_LIBRARY('dcerpc',
-       'rpc/dcerpc.c rpc/dcerpc_auth.c rpc/dcerpc_schannel.c rpc/dcerpc_util.c rpc/dcerpc_smb.c rpc/dcerpc_smb2.c rpc/dcerpc_sock.c rpc/dcerpc_connect.c rpc/dcerpc_secondary.c ../../librpc/rpc/binding.c ../../librpc/rpc/dcerpc_error.c',
+       source='rpc/dcerpc.c rpc/dcerpc_auth.c rpc/dcerpc_schannel.c rpc/dcerpc_util.c rpc/dcerpc_smb.c rpc/dcerpc_smb2.c rpc/dcerpc_sock.c rpc/dcerpc_connect.c rpc/dcerpc_secondary.c ../../librpc/rpc/binding.c ../../librpc/rpc/dcerpc_error.c',
        # PC_FILES='dcerpc.pc',
        deps='samba_socket LIBCLI_RESOLVE LIBCLI_SMB LIBCLI_SMB2 LIBNDR NDR_DCERPC RPC_NDR_EPMAPPER NDR_SCHANNEL RPC_NDR_NETLOGON RPC_NDR_MGMT gensec LIBCLI_AUTH LIBCLI_RAW LP_RESOLVE',
        autoproto='rpc/dcerpc_proto.h',
@@ -593,140 +602,135 @@ bld.SAMBA_LIBRARY('dcerpc',
 
 
 bld.SAMBA_PYTHON('python_dcerpc',
-       'rpc/pyrpc.c',
+       source='rpc/pyrpc.c',
        public_deps='LIBCLI_SMB LIBSAMBA-UTIL LIBSAMBA-HOSTCONFIG dcerpc_samr RPC_NDR_LSA DYNCONFIG pycredentials pyparam_util',
        realname='samba/dcerpc/base.so'
        )
 
 
 bld.SAMBA_PYTHON('python_echo',
-       '../../librpc/gen_ndr/py_echo.c',
+       source='../../librpc/gen_ndr/py_echo.c',
        deps='RPC_NDR_ECHO PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/echo.so'
        )
 
 
 bld.SAMBA_PYTHON('python_winreg',
-       '../../librpc/gen_ndr/py_winreg.c',
+       source='../../librpc/gen_ndr/py_winreg.c',
        deps='RPC_NDR_WINREG PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/winreg.so'
        )
 
 
 bld.SAMBA_PYTHON('python_dcerpc_misc',
-       'ndr/py_misc.c',
+       source='ndr/py_misc.c',
        deps='PYTALLOC python_dcerpc NDR_MISC NDR_KRB5PAC',
        realname='samba/dcerpc/misc.so'
        )
 
 
 bld.SAMBA_PYTHON('python_initshutdown',
-       '../../librpc/gen_ndr/py_initshutdown.c',
+       source='../../librpc/gen_ndr/py_initshutdown.c',
        deps='RPC_NDR_INITSHUTDOWN PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/initshutdown.so'
        )
 
 
 bld.SAMBA_PYTHON('python_epmapper',
-       '../../librpc/gen_ndr/py_epmapper.c',
+       source='../../librpc/gen_ndr/py_epmapper.c',
        deps='dcerpc PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/epmapper.so'
        )
 
 
 bld.SAMBA_PYTHON('python_mgmt',
-       '../../librpc/gen_ndr/py_mgmt.c',
+       source='../../librpc/gen_ndr/py_mgmt.c',
        deps='PYTALLOC param pycredentials dcerpc python_dcerpc',
        realname='samba/dcerpc/mgmt.so'
        )
 
 
 bld.SAMBA_PYTHON('python_atsvc',
-       '../../librpc/gen_ndr/py_atsvc.c',
+       source='../../librpc/gen_ndr/py_atsvc.c',
        deps='dcerpc_atsvc PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/atsvc.so'
        )
 
 
 bld.SAMBA_PYTHON('python_dcerpc_nbt',
-       '../../librpc/gen_ndr/py_nbt.c',
+       source='../../librpc/gen_ndr/py_nbt.c',
        deps='NDR_NBT PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/nbt.so'
        )
 
 
 bld.SAMBA_PYTHON('python_samr',
-       '../../librpc/gen_ndr/py_samr.c',
+       source='../../librpc/gen_ndr/py_samr.c',
        deps='dcerpc_samr PYTALLOC pycredentials pyparam_util python_dcerpc',
        realname='samba/dcerpc/samr.so'
        )
 
 
 bld.SAMBA_PYTHON('python_svcctl',
-       '../../librpc/gen_ndr/py_svcctl.c',
+       source='../../librpc/gen_ndr/py_svcctl.c',
        deps='RPC_NDR_SVCCTL PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/svcctl.so'
        )
 
 
 bld.SAMBA_PYTHON('python_lsa',
-       '../../librpc/gen_ndr/py_lsa.c',
+       source='../../librpc/gen_ndr/py_lsa.c',
        deps='RPC_NDR_LSA PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/lsa.so'
        )
 
 
 bld.SAMBA_PYTHON('python_wkssvc',
-       '../../librpc/gen_ndr/py_wkssvc.c',
+       source='../../librpc/gen_ndr/py_wkssvc.c',
        deps='RPC_NDR_WKSSVC PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/wkssvc.so'
        )
 
 
 bld.SAMBA_PYTHON('python_dfs',
-       '../../librpc/gen_ndr/py_dfs.c',
+       source='../../librpc/gen_ndr/py_dfs.c',
        deps='RPC_NDR_DFS PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/dfs.so'
        )
 
 
 bld.SAMBA_PYTHON('python_unixinfo',
-       '../../librpc/gen_ndr/py_unixinfo.c',
+       source='../../librpc/gen_ndr/py_unixinfo.c',
        deps='RPC_NDR_UNIXINFO PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/unixinfo.so'
        )
 
 
 bld.SAMBA_PYTHON('python_irpc',
-       'gen_ndr/py_irpc.c',
+       source='gen_ndr/py_irpc.c',
        deps='RPC_NDR_IRPC PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/irpc.so'
        )
 
 
 bld.SAMBA_PYTHON('python_drsuapi',
-       '../../librpc/gen_ndr/py_drsuapi.c',
+       source='../../librpc/gen_ndr/py_drsuapi.c',
        deps='RPC_NDR_DRSUAPI PYTALLOC pyparam_util pycredentials python_dcerpc',
        realname='samba/dcerpc/drsuapi.so'
        )
 
 
 bld.SAMBA_PYTHON('python_dcerpc_security',
-       'ndr/py_security.c',
+       source='ndr/py_security.c',
        deps='PYTALLOC python_dcerpc_misc python_dcerpc NDR_SECURITY',
        realname='samba/dcerpc/security.so'
        )
 
 
 bld.SAMBA_PYTHON('python_dcerpc_xattr',
-       'ndr/py_xattr.c',
+       source='ndr/py_xattr.c',
        deps='PYTALLOC python_dcerpc_misc python_dcerpc python_dcerpc_security NDR_XATTR RPC_NDR_XATTR',
        realname='samba/dcerpc/xattr.so'
        )
 
 
-S4_IDL=bld.SUBDIR('idl',
-                      '''irpc.idl nfs4acl.idl notify.idl ntp_signd.idl opendb.idl sasl_helpers.idl server_id.idl winbind.idl winsif.idl winsrepl.idl winstation.idl''');
-
-bld.SAMBA_PIDL_LIST('gen_ndr', S4_IDL,
-                    options="--includedir=../../librpc/idl")
index 4590d7be70467f8e6162e83b67255b6546a879d3..e9c762ec02f9860f296782759ccc0c3aee7d06ce 100644 (file)
@@ -1,3 +1,5 @@
+#! /usr/bin/env python
+
 srcdir = '..'
 blddir = 'bin'
 
@@ -16,6 +18,7 @@ def set_options(opt):
 
 def configure(conf):
     conf.DEFINE('_SAMBA_BUILD_', 4)
+    conf.find_program('python', var='PYTHON', mandatory=True)
     conf.sub_config(LIBREPLACE_DIR)
     conf.sub_config(LIBLDB_DIR)
     conf.sub_config('heimdal_build')
index 48a4060b26b7e511a1666662e20597f15e3ef88a..04fef67927cf7eb5c647938a48f474b4373b0bc7 100644 (file)
@@ -1,9 +1,15 @@
 # top level waf build script for samba4
 
+import os
+srcdir = ".."
+
+bld.env.TOPDIR = os.path.normpath(os.path.join(os.environ.get('PWD'), srcdir))
+
 # create separate build groups for building the asn1 and et compiler, then
 # building the C from ASN1 and IDL, and finally the main build process
 bld.SETUP_BUILD_GROUPS()
 
+bld.ENABLE_MAGIC_ORDERING()
 
 bld.PREDECLARE('LIBNDR', 'LIBRARY')
 bld.PREDECLARE('LIBSAMBA-UTIL', 'LIBRARY')