build: result of hack session with ita
authorAndrew Tridgell <tridge@samba.org>
Wed, 17 Mar 2010 10:53:29 +0000 (21:53 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:26:40 +0000 (20:26 +1000)
buildtools/waf-svn
buildtools/wafsamba/samba_autoconf.py
buildtools/wafsamba/samba_patterns.py
buildtools/wafsamba/samba_pidl.py
buildtools/wafsamba/samba_utils.py
buildtools/wafsamba/wafsamba.py
lib/replace/wscript
lib/tdb/wscript
source4/heimdal_build/wscript_build
source4/lib/ldb/wscript
source4/wscript

index 16588bdb43ef70ea4dba3b9fad0270685f6fc7ff..7e990fbd1c82b394fea0a65db49e72ff7af0de28 100755 (executable)
Binary files a/buildtools/waf-svn and b/buildtools/waf-svn differ
index e6f5985e15dcb51d152bab2f37b707d75d6f5325..3d18d2e2509da1e29024d98011bef81fbdececd7 100644 (file)
@@ -124,6 +124,14 @@ def ADD_CFLAGS(conf, flags):
         conf.env['EXTRA_CFLAGS'] = []
     conf.env['EXTRA_CFLAGS'].extend(flags.split())
 
+##############################################################
+# add some extra include directories to all builds
+@conf
+def ADD_EXTRA_INCLUDES(conf, includes):
+    if not 'EXTRA_INCLUDES' in conf.env:
+        conf.env['EXTRA_INCLUDES'] = []
+    conf.env['EXTRA_INCLUDES'].extend(includes.split())
+
 
 ##############################################################
 # work out the current flags. local flags are added first
index ca19d8d09aaf070e95eafcb1977c66b8a8ba460d..868aa2874e7ed352e2a946c1dbedbe2508c3e958 100644 (file)
@@ -21,68 +21,3 @@ def process_et(self, node):
     self.create_task('et', node, [c_node, h_node])
     self.allnodes.append(c_node)
 
-
-
-
-# this was my (awful) attempt at a ASN1 rule, i plan on moving it to samba_asn1.py,
-# like I did for the PIDL rules, and conver to a make-like rule
-
-################################################################################
-# a asn1 task which calls out to asn1_compile_wrapper.sh to do the work
-Task.simple_task_type('asn1',
-                     '''
-# this is the rule for now - ie. an embedded shell script!! like
-# I showed you previously, the ASN1 compiler generates weird names,
-# we need to fix the names, and add config.h header
-
-# shell script to convert ASN1 to C. This could be separated out if we want to
-set -e
-compiler=${TGT[0].compiler}
-destdir=${TGT[0].destdir}
-wrapper=${TGT[0].asn1wrapper}
-srcfile=${SRC[0].abspath(env)}
-asn1name=${TGT[0].asn1name}
-options="${TGT[0].asn1options}"
-
-# run the wrapper
-$wrapper . $destdir $compiler $srcfile $asn1name ${options} --one-code-file
-
-# that generated 3 files:
-#    ${asn1name}.hx
-#    asn1_${asn1name}.x
-#    ${asn1name}_files
-
-
-hxfile=$destdir/$asn1name.hx
-xfile=$destdir/asn1_$asn1name.x
-listfilee=$destdir/"$asn1name"_files
-
-cfile=${TGT[0].abspath(env)}
-hfile=${TGT[1].abspath(env)}
-
-cp $hxfile $hfile
-echo '#include "config.h"' > $cfile
-cat $xfile >> $cfile
-rm -f $listfile
-
-''',
-                      color='BLUE',
-                      ext_out='.c',
-                      shell = True)
-
-@extension('.asn1')
-def process_asn1(self, node):
-
-    asn1name = string.replace(node.file(), '.', '_')
-    c_node  = NEW_NODE(node, 'asn1_%s.c' % asn1name)
-    h_node  = NEW_NODE(node, '%s.h' % asn1name)
-
-    c_node.destdir      = "default/source4/heimdal/" + self.asn1directory
-    c_node.asn1options  = self.asn1options
-    c_node.asn1name     = asn1name
-    c_node.asn1wrapper  = "../heimdal_build/asn1_compile_wrapper.sh"
-    c_node.compiler     = "default/source4/heimdal_build/asn1_compile"
-
-    self.create_task('asn1', node, [c_node, h_node])
-    self.allnodes.append(c_node)
-
index 9269566111122b9eacf71e719402686add680d80..bea97acf0303ececf800bf9bdfe8f705575146ad 100644 (file)
@@ -40,33 +40,51 @@ def SAMBA_PIDL(bld, pname, source, options=''):
     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
 
 
+def SAMBA_PIDL_TDR(bld, pname, source, options=''):
+    '''Build a IDL file using pidl.
+    This will only produce the header and tdr parser'''
 
-Build.BuildContext.SAMBA_PIDL = SAMBA_PIDL
+    bname = source[0:-4];
+    name = "PIDL_%s" % bname.upper()
+
+    if not SET_TARGET_TYPE(bld, name, 'PIDL'):
+        return
+
+    bld.SET_BUILD_GROUP('build_source')
+
+    out_files = []
+    out_files.append('tdr_%s.c' % bname)
+    out_files.append('tdr_%s.h' % bname)
+
+    pidl = bld.srcnode.find_resource('pidl/pidl').relpath_gen(bld.path)
+    t = bld(rule='${PIDL} ${PIDL_BUILD_TYPES} ${OPTIONS} --outputdir ${TGT[0].parent.abspath(env)} -- ${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 --tdr-parser'
+    t.env.OPTIONS = options
+
+Build.BuildContext.SAMBA_PIDL_TDR = SAMBA_PIDL_TDR
 
 
 #################################################################
 # define a set of Samba PIDL targets
-def SAMBA_PIDL_LIST(bld, name, source, options=''):
+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
index bdbd3c7b932062930c164ce7b35ccb23a1f5ecd4..529505d3178bb28058d7c5eccf56c3cdad813c92 100644 (file)
@@ -157,8 +157,8 @@ def ADD_COMMAND(opt, name, function):
 Options.Handler.ADD_COMMAND = ADD_COMMAND
 
 
-@feature('cprogram','cc','cshlib')
-@before('apply_core')
+@feature('*')
+@before('apply_core','exec_rule')
 def process_depends_on(self):
     '''The new depends_on attribute for build rules
        allow us to specify a dependency on output from
@@ -204,8 +204,8 @@ Build.BuildContext.FIND_TASKGEN = FIND_TASKGEN
 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()
+    print "NOT Enabling magic ordering"
+    #bld.use_the_magic()
 Build.BuildContext.ENABLE_MAGIC_ORDERING = ENABLE_MAGIC_ORDERING
 
 
index 932b9e3bd09b13581c420a864de7cff8742ec96d..83f61d496270b30a37e55bafae10a7c9e7e29f22 100644 (file)
@@ -12,6 +12,8 @@ from samba_utils import *
 from samba_autoconf import *
 from samba_patterns import *
 from samba_pidl import *
+from samba_asn1 import *
+from samba_autoproto import *
 
 LIB_PATH="shared"
 
@@ -71,10 +73,10 @@ def CHECK_DEPENDENCIES(bld):
     for t in cache:
         deps = CHECK_TARGET_DEPENDENCY(bld, t)
         for d in deps:
-            #if not d in target_cache:
-            #    print "Dependency '%s' of target '%s' not declared" % (d, t)
-            ASSERT(bld, d in target_cache,
-                   "Dependency '%s' of target '%s' not declared" % (d, t))
+            if not d in target_cache:
+                print "WARNING: Dependency '%s' of target '%s' not declared" % (d, t)
+            #ASSERT(bld, d in target_cache,
+            #       "Dependency '%s' of target '%s' not declared" % (d, t))
     debug("deps: Dependencies checked for %u targets" % len(target_cache))
 Build.BuildContext.CHECK_DEPENDENCIES = CHECK_DEPENDENCIES
 
@@ -176,6 +178,8 @@ def SAMBA_LIBRARY_INCLUDE_LIST(bld, deps):
     for l in deps.split():
         if l in cache:
             ret = ret + cache[l] + ' '
+    if 'EXTRA_INCLUDES' in bld.env:
+        ret += ' ' + ' '.join(bld.env['EXTRA_INCLUDES'])
     return ret
 Build.BuildContext.SAMBA_LIBRARY_INCLUDE_LIST = SAMBA_LIBRARY_INCLUDE_LIST
 
@@ -184,13 +188,14 @@ Build.BuildContext.SAMBA_LIBRARY_INCLUDE_LIST = SAMBA_LIBRARY_INCLUDE_LIST
 def SAMBA_LIBRARY(bld, libname, source,
                   deps='',
                   public_deps='',
-                  include_list='.',
+                  includes='.',
                   public_headers=None,
                   vnum=None,
                   cflags='',
                   output_type=None,
                   realname=None,
                   autoproto=None,
+                  group='main',
                   depends_on=''):
     if not SET_TARGET_TYPE(bld, libname, 'LIBRARY'):
         return
@@ -202,9 +207,12 @@ def SAMBA_LIBRARY(bld, libname, source,
 
     (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, libname, deps)
 
-    ilist = bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) + bld.SUBDIR(bld.curdir, include_list)
+    ilist = bld.SUBDIR(bld.curdir, includes) + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps)
     ilist = bld.NORMPATH(ilist)
-    bld.SET_BUILD_GROUP('main')
+
+    # this print below should show that we're runnig this code
+    print "Setting build group for library %s to %s" % (libname, group), bld.path
+    bld.SET_BUILD_GROUP(group)   # <- here
     bld(
         features = 'cc cshlib',
         source = source,
@@ -213,32 +221,37 @@ def SAMBA_LIBRARY(bld, libname, source,
         uselib = sysdeps,
         add_objects = add_objects,
         ccflags = CURRENT_CFLAGS(bld, cflags),
-        includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist,
+        includes=ilist + ' . #',
         depends_on=depends_on,
         vnum=vnum)
 
+    # I have to set it each time? I expect it to be still
+    # set from the few lines above
+
     # put a link to the library in bin/shared
     soext=""
     if vnum is not None:
         soext = '.' + vnum.split('.')[0]
-    bld.SET_BUILD_GROUP('final')
-    bld(
+
+    t = bld(
         source = 'lib%s.so' % libname,
-        rule = 'ln -sf ../${SRC}%s %s/lib%s.so%s' %
-        (soext, LIB_PATH, libname, soext),
+        rule = 'ln -sf ../${SRC}%s %s/lib%s.so%s' % (soext, LIB_PATH, libname, soext),
+#        rule = 'ln -sf ../%s.so%s %s/lib%s.so%s' % (libname, soext, LIB_PATH, libname, soext),
         shell = True,
         after = 'cc_link',
+        always = True,
+       name = 'fff' + libname,
         )
+    #print t.rule
     LOCAL_CACHE_SET(bld, 'INCLUDE_LIST', libname, ilist)
 
 Build.BuildContext.SAMBA_LIBRARY = SAMBA_LIBRARY
 
-
 #################################################################
 # define a Samba binary
 def SAMBA_BINARY(bld, binname, source,
                  deps='',
-                 include_list='',
+                 includes='',
                  public_headers=None,
                  modules=None,
                  installdir=None,
@@ -249,7 +262,7 @@ def SAMBA_BINARY(bld, binname, source,
                  compiler=None,
                  group='main',
                  manpages=None):
-    ilist = '. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) + ' ' + include_list
+    ilist = includes + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps)
     ilist = bld.NORMPATH(ilist)
 
     if not SET_TARGET_TYPE(bld, binname, 'BINARY'):
@@ -271,17 +284,21 @@ def SAMBA_BINARY(bld, binname, source,
         target = binname,
         uselib_local = localdeps,
         uselib = sysdeps,
-        includes = ilist,
+        includes = ilist + ' . #',
         ccflags = CURRENT_CFLAGS(bld, cflags),
         add_objects = add_objects,
         top=True)
-    # put a link to the binary in bin/
+
     if not Options.is_install:
         bld(
             source = binname,
             rule = 'rm -f %s && cp ${SRC} .' % (binname),
             shell = True,
-            after = 'cc_link'
+            after = 'cc_link',
+            always = True,
+            ext_in = '.bin',
+            name = binname + ".copy",
+            depends_on = binname
             )
 Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY
 
@@ -301,32 +318,13 @@ def SAMBA_PYTHON(bld, name, source,
     return
 Build.BuildContext.SAMBA_PYTHON = SAMBA_PYTHON
 
-
-
-#################################################################
-# define a Samba ASN1 target
-def SAMBA_ASN1(bld, name, source,
-               options='',
-               directory=''):
-    if not SET_TARGET_TYPE(bld, name, 'ASN1'):
-        return
-    bld.SET_BUILD_GROUP('build_source')
-    bld(
-        features       = 'cc',
-        source         = source,
-        target         = name,
-        asn1options    = options,
-        asn1directory  = directory
-    )
-Build.BuildContext.SAMBA_ASN1 = SAMBA_ASN1
-
-
-
 #################################################################
 # define a Samba ET target
 def SAMBA_ERRTABLE(bld, name, source,
                options='',
                directory=''):
+#    print "Skipping ERRTABLE rule for %s with source=%s" % (name, source)
+#    return
     if not SET_TARGET_TYPE(bld, name, 'ET'):
         return
     bld.SET_BUILD_GROUP('build_source')
@@ -357,7 +355,7 @@ Build.BuildContext.AUTOPROTO = AUTOPROTO
 # define a Samba module.
 def SAMBA_MODULE(bld, modname, source,
                  deps='',
-                 include_list='.',
+                 includes='.',
                  subsystem=None,
                  init_function=None,
                  autoproto=None,
@@ -375,7 +373,7 @@ def SAMBA_MODULE(bld, modname, source,
 
     (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, modname, deps)
 
-    ilist = bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) + bld.SUBDIR(bld.curdir, include_list)
+    ilist = bld.SUBDIR(bld.curdir, includes) + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps)
     ilist = bld.NORMPATH(ilist)
     bld.SET_BUILD_GROUP('main')
     bld(
@@ -383,7 +381,7 @@ def SAMBA_MODULE(bld, modname, source,
         source = source,
         target=modname,
         ccflags = CURRENT_CFLAGS(bld, cflags),
-        includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist)
+        includes=ilist + ' . #')
 Build.BuildContext.SAMBA_MODULE = SAMBA_MODULE
 
 
@@ -392,13 +390,15 @@ Build.BuildContext.SAMBA_MODULE = SAMBA_MODULE
 def SAMBA_SUBSYSTEM(bld, modname, source,
                     deps='',
                     public_deps='',
-                    include_list='.',
+                    includes='.',
                     public_headers=None,
-                    autoproto=None,
                     cflags='',
                     group='main',
                     config_option=None,
                     init_function_sentinal=None,
+                    heimdal_autoproto=None,
+                    heimdal_autoproto_private=None,
+                    autoproto=None,
                     depends_on=''):
 
     if not SET_TARGET_TYPE(bld, modname, 'SUBSYSTEM'):
@@ -416,7 +416,7 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
 
     (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, modname, deps)
 
-    ilist = bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) + bld.SUBDIR(bld.curdir, include_list)
+    ilist = bld.SUBDIR(bld.curdir, includes) + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps)
     ilist = bld.NORMPATH(ilist)
     bld.SET_BUILD_GROUP(group)
     t = bld(
@@ -424,9 +424,18 @@ def SAMBA_SUBSYSTEM(bld, modname, source,
         source = source,
         target=modname,
         ccflags = CURRENT_CFLAGS(bld, cflags),
-        includes='. ' + bld.env['BUILD_DIRECTORY'] + '/default ' + ilist,
+        includes=ilist + ' . #',
         depends_on=depends_on)
+    LOCAL_CACHE_SET(bld, 'INCLUDE_LIST', modname, ilist)
+
+    if heimdal_autoproto is not None:
+        bld.HEIMDAL_AUTOPROTO(heimdal_autoproto, source)
+    if heimdal_autoproto_private is not None:
+        bld.HEIMDAL_AUTOPROTO_PRIVATE(heimdal_autoproto_private, source)
+    if autoproto is not None:
+        bld.SAMBA_AUTOPROTO(autoproto, source)
     return t
+
 Build.BuildContext.SAMBA_SUBSYSTEM = SAMBA_SUBSYSTEM
 
 
@@ -457,8 +466,10 @@ Options.Handler.ADD_COMMAND = ADD_COMMAND
 # phases happen consecutively
 @runonce
 def SETUP_BUILD_GROUPS(bld):
+    bld.p_ln = bld.srcnode # we do want to see all targets!
     bld.env['USING_BUILD_GROUPS'] = True
     bld.add_group('setup')
+    bld.add_group('base_libraries')
     bld.add_group('build_compilers')
     bld.add_group('build_source')
     bld.add_group('prototypes')
index e150c9a1050db7d6de764457e9a6ffb7b1348b95..28283cb0a4e22742dcf955f4e795c4840e9bc87a 100644 (file)
@@ -1,3 +1,5 @@
+#! /usr/bin/env python
+
 srcdir = '../..'
 blddir = 'bin'
 
@@ -8,15 +10,16 @@ import Options, os
 
 def set_options(opt):
     opt.tool_options('compiler_cc')
+    # TODO: we are not yet obeying these default paths at install time
     opt.add_option('--libdir',
-                   help=("object code libraries [PREFIX/lib]"),
-                   action="store", dest='LIBDIR', default=None)
+                   help=("object code libraries [PREFIX/lib"),
+                   action="store", dest='LIBDIR', default='${PREFIX}/lib')
     opt.add_option('--bindir',
                    help=("user executables [PREFIX/bin]"),
-                   action="store", dest='BINDIR', default=None)
+                   action="store", dest='BINDIR', default='${PREFIX}/bin')
     opt.add_option('--sbindir',
                    help=("system admin executables [PREFIX/sbin]"),
-                   action="store", dest='SBINDIR', default=None)
+                   action="store", dest='SBINDIR', default='${PREFIX}/sbin')
     opt.add_option('--enable-rpath',
                    help=("Enable use of rpath for installed binaries"),
                    action="store_true", dest='enable_rpath', default=False)
@@ -32,12 +35,13 @@ def configure(conf):
     # load our local waf extensions
     conf.check_tool('wafsamba', tooldir=conf.srcdir + "/buildtools/wafsamba")
 
-    conf.CONFIG_PATH('LIBDIR', '/lib')
-    conf.CONFIG_PATH('BINDIR', '/bin')
-    conf.CONFIG_PATH('SBINDIR', '/sbin')
-
     conf.check_tool('compiler_cc')
 
+    # make the install paths available in environment
+    conf.env.LIBDIR = Options.options.LIBDIR
+    conf.env.BINDIR = Options.options.BINDIR
+    conf.env.SBINDIR = Options.options.SBINDIR
+
     conf.env['RPATH_ON_INSTALL'] = Options.options.enable_rpath
 
     conf.DEFINE('_GNU_SOURCE', 1)
@@ -180,10 +184,16 @@ main() { foo("hello"); }
 def build(bld):
     bld.set_rpath()
 
+    # libreplace needs to put the library in the right build groups
+    # as libreplace is a base library for everything, even for our
+    # compilers, we need libreplace to build very early
+    bld.SETUP_BUILD_GROUPS()
+
     REPLACE_SOURCE = 'replace.c snprintf.c'
 
     bld.SAMBA_LIBRARY('replace',
-                      REPLACE_SOURCE)
+                      source=REPLACE_SOURCE,
+                      group='base_libraries')
 
     TEST_SOURCES = '''test/testsuite.c test/main.c test/strptime.c
                       test/os2_delete.c test/getifaddrs.c'''
index 3e39ea82c8cf2c42f46f3b0890d0f62ab8bf320e..c5e8409fa86922f8a5c48198144931b3f3a2c285 100644 (file)
@@ -28,7 +28,7 @@ def build(bld):
     bld.SAMBA_LIBRARY('tdb',
                       COMMON_SRC,
                       deps='replace',
-                      include_list='include',
+                      includes='include',
                       vnum=VERSION)
 
     bld.SAMBA_BINARY('tdbtorture',
index a29a38b643f6224e947038dcf6cc4b2a3163cdee..c684e9ac04e898fcdb4ae841ccc29c54e0409f1c 100644 (file)
@@ -3,8 +3,6 @@
 # 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',
@@ -62,6 +60,7 @@ bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[2].abspath()} ${SRC[2].parent.absp
     name = 'HEIMDAL_MAP_TABLE'
 )
 
+
 # look at the example below - the output dir is lib/gssapi, the source asn1 file is lib/gssapi/spnego/spnego.asn1
 # well ... hmm, it depens if any heimdal C file uses a #include that depends on the path. We can try a different location
 # but I'm guessing it will break the heimdal C files
@@ -71,7 +70,7 @@ bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[2].abspath()} ${SRC[2].parent.absp
 # as that is also a different out dir from input file
 # ok, but is it OK for PIDL? pidl is putting output in ../gen_ndr/ndr_$NAME.[ch] etc
 bld.SAMBA_ASN1('HEIMDAL_SPNEGO_ASN1',
-       '../heimdal/lib/gssapi/spnego/spnego.asn1',
+        source='../heimdal/lib/gssapi/spnego/spnego.asn1',
        options='--sequence=MechTypeList',
        directory='lib/gssapi'
        )
@@ -85,7 +84,7 @@ bld.SAMBA_ASN1('HEIMDAL_GSSAPI_ASN1',
 
 bld.SAMBA_ASN1('HEIMDAL_KRB5_ASN1',
        '../heimdal/lib/asn1/krb5.asn1',
-       options='--option-file=krb5.opt',
+       option_file='../heimdal/lib/asn1/krb5.opt',
        directory='lib/asn1'
        )
 
@@ -129,7 +128,7 @@ bld.SAMBA_ASN1('HEIMDAL_PKINIT_ASN1',
 
 bld.SAMBA_ASN1('HEIMDAL_CMS_ASN1',
        '../heimdal/lib/asn1/cms.asn1',
-       options='--option-file=cms.opt',
+       option_file='../heimdal/lib/asn1/cms.opt',
        directory='lib/asn1'
        )
 
@@ -213,92 +212,149 @@ bld.SAMBA_ERRTABLE('HEIMDAL_WIND_ERR_ET',
        )
 
 
-bld.SAMBA_SUBSYSTEM('HEIMDAL_KDC',
-       '../heimdal/kdc/default_config.c ../heimdal/kdc/kerberos5.c ../heimdal/kdc/krb5tgs.c ../heimdal/kdc/pkinit.c ../heimdal/kdc/log.c ../heimdal/kdc/misc.c ../heimdal/kdc/kaserver.c ../heimdal/kdc/digest.c ../heimdal/kdc/process.c ../heimdal/kdc/windc.c ../heimdal/kdc/kx509.c',
-       cflags='-I../heimdal_build -I../heimdal/kdc',
-       deps='HEIMDAL_ROKEN HEIMDAL_KRB5 HEIMDAL_HDB HEIMDAL_HEIM_ASN1 HEIMDAL_DIGEST_ASN1 HEIMDAL_KX509_ASN1 HEIMDAL_NTLM HEIMDAL_HCRYPTO'
+# try it here
+bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN',
+       '../heimdal/lib/roken/base64.c ../heimdal/lib/roken/ct.c ../heimdal/lib/roken/hex.c ../heimdal/lib/roken/bswap.c ../heimdal/lib/roken/dumpdata.c ../heimdal/lib/roken/emalloc.c ../heimdal/lib/roken/ecalloc.c ../heimdal/lib/roken/getarg.c ../heimdal/lib/roken/get_window_size.c ../heimdal/lib/roken/getdtablesize.c ../heimdal/lib/roken/h_errno.c ../heimdal/lib/roken/issuid.c ../heimdal/lib/roken/net_read.c ../heimdal/lib/roken/net_write.c ../heimdal/lib/roken/socket.c ../heimdal/lib/roken/parse_time.c ../heimdal/lib/roken/parse_units.c ../heimdal/lib/roken/resolve.c ../heimdal/lib/roken/roken_gethostby.c ../heimdal/lib/roken/signal.c ../heimdal/lib/roken/vis.c ../heimdal/lib/roken/strlwr.c ../heimdal/lib/roken/strsep_copy.c ../heimdal/lib/roken/strsep.c ../heimdal/lib/roken/strupr.c ../heimdal/lib/roken/strpool.c ../heimdal/lib/roken/estrdup.c ../heimdal/lib/roken/erealloc.c ../heimdal/lib/roken/simple_exec.c ../heimdal/lib/roken/strcollect.c ../heimdal/lib/roken/rtbl.c ../heimdal/lib/roken/cloexec.c ../heimdal/lib/roken/xfree.c replace.c',
+       includes='../heimdal_build ../heimdal/lib/roken ../heimdal/include ../../lib/socket_wrapper',
+       deps='HEIMDAL_ROKEN_PROGNAME HEIMDAL_ROKEN_CLOSEFROM resolv LIBREPLACE_NETWORK UID_WRAPPER'
        )
 
 
+bld.SAMBA_SUBSYSTEM('HEIMDAL_KDC',
+                    source='../heimdal/kdc/default_config.c ../heimdal/kdc/kerberos5.c ../heimdal/kdc/krb5tgs.c ../heimdal/kdc/pkinit.c ../heimdal/kdc/log.c ../heimdal/kdc/misc.c ../heimdal/kdc/kaserver.c ../heimdal/kdc/digest.c ../heimdal/kdc/process.c ../heimdal/kdc/windc.c ../heimdal/kdc/kx509.c',
+                    includes='../heimdal_build ../heimdal/kdc',
+                    heimdal_autoproto='../heimdal/kdc/kdc-protos.h',
+                    heimdal_autoproto_private='../heimdal/kdc/kdc-private.h',
+                    deps='HEIMDAL_ROKEN HEIMDAL_KRB5 HEIMDAL_HDB HEIMDAL_HEIM_ASN1 HEIMDAL_DIGEST_ASN1 HEIMDAL_KX509_ASN1 HEIMDAL_NTLM HEIMDAL_HCRYPTO'
+                    )
+
+
 bld.SAMBA_SUBSYSTEM('HEIMDAL_NTLM',
-       '../heimdal/lib/ntlm/ntlm.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/ntlm',
-       deps='HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5'
+                    source='../heimdal/lib/ntlm/ntlm.c',
+                    includes='../heimdal_build ../heimdal/lib/ntlm',
+                    heimdal_autoproto='../heimdal/lib/ntlm/heimntlm-protos.h',
+                    deps='HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HDB_KEYS',
        '../heimdal/lib/hdb/keys.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/hdb',
+       includes='../heimdal_build ../heimdal/lib/hdb',
        deps='HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5 HEIMDAL_HDB_ASN1'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HDB',
-       '../heimdal/lib/hdb/db.c ../heimdal/lib/hdb/dbinfo.c ../heimdal/lib/hdb/ext.c ../heimdal/lib/hdb/keytab.c ../heimdal/lib/hdb/mkey.c ../heimdal/lib/hdb/ndbm.c ../heimdal/lib/hdb/hdb_err.c hdb-glue.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/hdb',
-       deps='HDB_LDB HEIMDAL_KRB5 HEIMDAL_HDB_KEYS HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_COM_ERR HEIMDAL_HDB_ASN1'
+                    source='''../heimdal/lib/hdb/db.c ../heimdal/lib/hdb/dbinfo.c ../heimdal/lib/hdb/ext.c ../heimdal/lib/hdb/keytab.c
+                              ../heimdal/lib/hdb/mkey.c ../heimdal/lib/hdb/ndbm.c ../heimdal/lib/hdb/hdb_err.c hdb-glue.c''',
+                    includes='../heimdal_build ../heimdal/lib/hdb',
+                    heimdal_autoproto='../heimdal/lib/hdb/hdb-protos.h',
+                    heimdal_autoproto_private='../heimdal/lib/hdb/hdb-private.h',
+                    deps='HDB_LDB HEIMDAL_KRB5 HEIMDAL_HDB_KEYS HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_COM_ERR HEIMDAL_HDB_ASN1'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_GSSAPI',
-       '../heimdal/lib/gssapi/spnego/init_sec_context.c ../heimdal/lib/gssapi/spnego/external.c ../heimdal/lib/gssapi/spnego/compat.c ../heimdal/lib/gssapi/spnego/context_stubs.c ../heimdal/lib/gssapi/spnego/cred_stubs.c ../heimdal/lib/gssapi/spnego/accept_sec_context.c ../heimdal/lib/gssapi/krb5/copy_ccache.c ../heimdal/lib/gssapi/krb5/delete_sec_context.c ../heimdal/lib/gssapi/krb5/init_sec_context.c ../heimdal/lib/gssapi/krb5/context_time.c ../heimdal/lib/gssapi/krb5/init.c ../heimdal/lib/gssapi/krb5/address_to_krb5addr.c ../heimdal/lib/gssapi/krb5/get_mic.c ../heimdal/lib/gssapi/krb5/inquire_context.c ../heimdal/lib/gssapi/krb5/add_cred.c ../heimdal/lib/gssapi/krb5/inquire_cred.c ../heimdal/lib/gssapi/krb5/inquire_cred_by_oid.c ../heimdal/lib/gssapi/krb5/inquire_cred_by_mech.c ../heimdal/lib/gssapi/krb5/inquire_mechs_for_name.c ../heimdal/lib/gssapi/krb5/inquire_names_for_mech.c ../heimdal/lib/gssapi/krb5/indicate_mechs.c ../heimdal/lib/gssapi/krb5/inquire_sec_context_by_oid.c ../heimdal/lib/gssapi/krb5/export_sec_context.c ../heimdal/lib/gssapi/krb5/import_sec_context.c ../heimdal/lib/gssapi/krb5/duplicate_name.c ../heimdal/lib/gssapi/krb5/import_name.c ../heimdal/lib/gssapi/krb5/compare_name.c ../heimdal/lib/gssapi/krb5/export_name.c ../heimdal/lib/gssapi/krb5/canonicalize_name.c ../heimdal/lib/gssapi/krb5/unwrap.c ../heimdal/lib/gssapi/krb5/wrap.c ../heimdal/lib/gssapi/krb5/release_name.c ../heimdal/lib/gssapi/krb5/cfx.c ../heimdal/lib/gssapi/krb5/8003.c ../heimdal/lib/gssapi/krb5/arcfour.c ../heimdal/lib/gssapi/krb5/encapsulate.c ../heimdal/lib/gssapi/krb5/display_name.c ../heimdal/lib/gssapi/krb5/sequence.c ../heimdal/lib/gssapi/krb5/display_status.c ../heimdal/lib/gssapi/krb5/release_buffer.c ../heimdal/lib/gssapi/krb5/external.c ../heimdal/lib/gssapi/krb5/compat.c ../heimdal/lib/gssapi/krb5/creds.c ../heimdal/lib/gssapi/krb5/acquire_cred.c ../heimdal/lib/gssapi/krb5/release_cred.c ../heimdal/lib/gssapi/krb5/store_cred.c ../heimdal/lib/gssapi/krb5/set_cred_option.c ../heimdal/lib/gssapi/krb5/decapsulate.c ../heimdal/lib/gssapi/krb5/verify_mic.c ../heimdal/lib/gssapi/krb5/accept_sec_context.c ../heimdal/lib/gssapi/krb5/set_sec_context_option.c ../heimdal/lib/gssapi/krb5/process_context_token.c ../heimdal/lib/gssapi/krb5/prf.c ../heimdal/lib/gssapi/krb5/aeap.c ../heimdal/lib/gssapi/mech/context.c ../heimdal/lib/gssapi/mech/gss_krb5.c ../heimdal/lib/gssapi/mech/gss_mech_switch.c ../heimdal/lib/gssapi/mech/gss_process_context_token.c ../heimdal/lib/gssapi/mech/gss_buffer_set.c ../heimdal/lib/gssapi/mech/gss_aeap.c ../heimdal/lib/gssapi/mech/gss_add_cred.c ../heimdal/lib/gssapi/mech/gss_cred.c ../heimdal/lib/gssapi/mech/gss_add_oid_set_member.c ../heimdal/lib/gssapi/mech/gss_compare_name.c ../heimdal/lib/gssapi/mech/gss_release_oid_set.c ../heimdal/lib/gssapi/mech/gss_create_empty_oid_set.c ../heimdal/lib/gssapi/mech/gss_decapsulate_token.c ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_oid.c ../heimdal/lib/gssapi/mech/gss_canonicalize_name.c ../heimdal/lib/gssapi/mech/gss_inquire_sec_context_by_oid.c ../heimdal/lib/gssapi/mech/gss_inquire_names_for_mech.c ../heimdal/lib/gssapi/mech/gss_inquire_mechs_for_name.c ../heimdal/lib/gssapi/mech/gss_wrap_size_limit.c ../heimdal/lib/gssapi/mech/gss_names.c ../heimdal/lib/gssapi/mech/gss_verify.c ../heimdal/lib/gssapi/mech/gss_display_name.c ../heimdal/lib/gssapi/mech/gss_duplicate_oid.c ../heimdal/lib/gssapi/mech/gss_display_status.c ../heimdal/lib/gssapi/mech/gss_release_buffer.c ../heimdal/lib/gssapi/mech/gss_release_oid.c ../heimdal/lib/gssapi/mech/gss_test_oid_set_member.c ../heimdal/lib/gssapi/mech/gss_release_cred.c ../heimdal/lib/gssapi/mech/gss_set_sec_context_option.c ../heimdal/lib/gssapi/mech/gss_export_name.c ../heimdal/lib/gssapi/mech/gss_seal.c ../heimdal/lib/gssapi/mech/gss_acquire_cred.c ../heimdal/lib/gssapi/mech/gss_unseal.c ../heimdal/lib/gssapi/mech/gss_verify_mic.c ../heimdal/lib/gssapi/mech/gss_accept_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_mech.c ../heimdal/lib/gssapi/mech/gss_indicate_mechs.c ../heimdal/lib/gssapi/mech/gss_delete_sec_context.c ../heimdal/lib/gssapi/mech/gss_sign.c ../heimdal/lib/gssapi/mech/gss_utils.c ../heimdal/lib/gssapi/mech/gss_init_sec_context.c ../heimdal/lib/gssapi/mech/gss_oid_equal.c ../heimdal/lib/gssapi/mech/gss_oid_to_str.c ../heimdal/lib/gssapi/mech/gss_context_time.c ../heimdal/lib/gssapi/mech/gss_encapsulate_token.c ../heimdal/lib/gssapi/mech/gss_get_mic.c ../heimdal/lib/gssapi/mech/gss_import_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_cred.c ../heimdal/lib/gssapi/mech/gss_wrap.c ../heimdal/lib/gssapi/mech/gss_import_name.c ../heimdal/lib/gssapi/mech/gss_duplicate_name.c ../heimdal/lib/gssapi/mech/gss_unwrap.c ../heimdal/lib/gssapi/mech/gss_export_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_context.c ../heimdal/lib/gssapi/mech/gss_release_name.c ../heimdal/lib/gssapi/mech/gss_set_cred_option.c ../heimdal/lib/gssapi/mech/gss_pseudo_random.c gssapi-glue.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/gssapi -I../heimdal/lib/gssapi/gssapi -I../heimdal/lib/gssapi/spnego -I../heimdal/lib/gssapi/krb5 -I../heimdal/lib/gssapi/mech',
+                    '''
+../heimdal/lib/gssapi/spnego/init_sec_context.c ../heimdal/lib/gssapi/spnego/external.c ../heimdal/lib/gssapi/spnego/compat.c
+../heimdal/lib/gssapi/spnego/context_stubs.c ../heimdal/lib/gssapi/spnego/cred_stubs.c ../heimdal/lib/gssapi/spnego/accept_sec_context.c
+../heimdal/lib/gssapi/krb5/copy_ccache.c ../heimdal/lib/gssapi/krb5/delete_sec_context.c ../heimdal/lib/gssapi/krb5/init_sec_context.c
+../heimdal/lib/gssapi/krb5/context_time.c ../heimdal/lib/gssapi/krb5/init.c ../heimdal/lib/gssapi/krb5/address_to_krb5addr.c
+../heimdal/lib/gssapi/krb5/get_mic.c ../heimdal/lib/gssapi/krb5/inquire_context.c ../heimdal/lib/gssapi/krb5/add_cred.c
+../heimdal/lib/gssapi/krb5/inquire_cred.c ../heimdal/lib/gssapi/krb5/inquire_cred_by_oid.c ../heimdal/lib/gssapi/krb5/inquire_cred_by_mech.c
+../heimdal/lib/gssapi/krb5/inquire_mechs_for_name.c ../heimdal/lib/gssapi/krb5/inquire_names_for_mech.c ../heimdal/lib/gssapi/krb5/indicate_mechs.c
+../heimdal/lib/gssapi/krb5/inquire_sec_context_by_oid.c ../heimdal/lib/gssapi/krb5/export_sec_context.c ../heimdal/lib/gssapi/krb5/import_sec_context.c
+../heimdal/lib/gssapi/krb5/duplicate_name.c ../heimdal/lib/gssapi/krb5/import_name.c ../heimdal/lib/gssapi/krb5/compare_name.c
+../heimdal/lib/gssapi/krb5/export_name.c ../heimdal/lib/gssapi/krb5/canonicalize_name.c ../heimdal/lib/gssapi/krb5/unwrap.c
+../heimdal/lib/gssapi/krb5/wrap.c ../heimdal/lib/gssapi/krb5/release_name.c ../heimdal/lib/gssapi/krb5/cfx.c
+../heimdal/lib/gssapi/krb5/8003.c ../heimdal/lib/gssapi/krb5/arcfour.c ../heimdal/lib/gssapi/krb5/encapsulate.c
+../heimdal/lib/gssapi/krb5/display_name.c ../heimdal/lib/gssapi/krb5/sequence.c ../heimdal/lib/gssapi/krb5/display_status.c
+../heimdal/lib/gssapi/krb5/release_buffer.c ../heimdal/lib/gssapi/krb5/external.c ../heimdal/lib/gssapi/krb5/compat.c
+../heimdal/lib/gssapi/krb5/creds.c ../heimdal/lib/gssapi/krb5/acquire_cred.c ../heimdal/lib/gssapi/krb5/release_cred.c
+../heimdal/lib/gssapi/krb5/store_cred.c ../heimdal/lib/gssapi/krb5/set_cred_option.c ../heimdal/lib/gssapi/krb5/decapsulate.c
+../heimdal/lib/gssapi/krb5/verify_mic.c ../heimdal/lib/gssapi/krb5/accept_sec_context.c ../heimdal/lib/gssapi/krb5/set_sec_context_option.c
+../heimdal/lib/gssapi/krb5/process_context_token.c ../heimdal/lib/gssapi/krb5/prf.c ../heimdal/lib/gssapi/krb5/aeap.c
+../heimdal/lib/gssapi/mech/context.c ../heimdal/lib/gssapi/mech/gss_krb5.c ../heimdal/lib/gssapi/mech/gss_mech_switch.c
+../heimdal/lib/gssapi/mech/gss_process_context_token.c ../heimdal/lib/gssapi/mech/gss_buffer_set.c
+../heimdal/lib/gssapi/mech/gss_aeap.c ../heimdal/lib/gssapi/mech/gss_add_cred.c ../heimdal/lib/gssapi/mech/gss_cred.c
+../heimdal/lib/gssapi/mech/gss_add_oid_set_member.c ../heimdal/lib/gssapi/mech/gss_compare_name.c ../heimdal/lib/gssapi/mech/gss_release_oid_set.c
+../heimdal/lib/gssapi/mech/gss_create_empty_oid_set.c ../heimdal/lib/gssapi/mech/gss_decapsulate_token.c ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_oid.c
+../heimdal/lib/gssapi/mech/gss_canonicalize_name.c ../heimdal/lib/gssapi/mech/gss_inquire_sec_context_by_oid.c ../heimdal/lib/gssapi/mech/gss_inquire_names_for_mech.c
+../heimdal/lib/gssapi/mech/gss_inquire_mechs_for_name.c ../heimdal/lib/gssapi/mech/gss_wrap_size_limit.c ../heimdal/lib/gssapi/mech/gss_names.c
+../heimdal/lib/gssapi/mech/gss_verify.c ../heimdal/lib/gssapi/mech/gss_display_name.c
+../heimdal/lib/gssapi/mech/gss_duplicate_oid.c ../heimdal/lib/gssapi/mech/gss_display_status.c ../heimdal/lib/gssapi/mech/gss_release_buffer.c
+../heimdal/lib/gssapi/mech/gss_release_oid.c ../heimdal/lib/gssapi/mech/gss_test_oid_set_member.c
+../heimdal/lib/gssapi/mech/gss_release_cred.c
+../heimdal/lib/gssapi/mech/gss_set_sec_context_option.c ../heimdal/lib/gssapi/mech/gss_export_name.c ../heimdal/lib/gssapi/mech/gss_seal.c
+../heimdal/lib/gssapi/mech/gss_acquire_cred.c ../heimdal/lib/gssapi/mech/gss_unseal.c ../heimdal/lib/gssapi/mech/gss_verify_mic.c
+../heimdal/lib/gssapi/mech/gss_accept_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_cred_by_mech.c ../heimdal/lib/gssapi/mech/gss_indicate_mechs.c
+../heimdal/lib/gssapi/mech/gss_delete_sec_context.c ../heimdal/lib/gssapi/mech/gss_sign.c ../heimdal/lib/gssapi/mech/gss_utils.c
+../heimdal/lib/gssapi/mech/gss_init_sec_context.c ../heimdal/lib/gssapi/mech/gss_oid_equal.c ../heimdal/lib/gssapi/mech/gss_oid_to_str.c
+../heimdal/lib/gssapi/mech/gss_context_time.c ../heimdal/lib/gssapi/mech/gss_encapsulate_token.c ../heimdal/lib/gssapi/mech/gss_get_mic.c
+../heimdal/lib/gssapi/mech/gss_import_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_cred.c ../heimdal/lib/gssapi/mech/gss_wrap.c
+../heimdal/lib/gssapi/mech/gss_import_name.c ../heimdal/lib/gssapi/mech/gss_duplicate_name.c ../heimdal/lib/gssapi/mech/gss_unwrap.c
+../heimdal/lib/gssapi/mech/gss_export_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_context.c ../heimdal/lib/gssapi/mech/gss_release_name.c
+../heimdal/lib/gssapi/mech/gss_set_cred_option.c  ../heimdal/lib/gssapi/mech/gss_pseudo_random.c gssapi-glue.c''',
+       includes='../heimdal_build ../heimdal/lib/gssapi ../heimdal/lib/gssapi/gssapi ../heimdal/lib/gssapi/spnego ../heimdal/lib/gssapi/krb5 ../heimdal/lib/gssapi/mech',
        deps='HEIMDAL_HCRYPTO HEIMDAL_HEIM_ASN1 HEIMDAL_SPNEGO_ASN1 HEIMDAL_GSSAPI_ASN1 HEIMDAL_ROKEN HEIMDAL_KRB5'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_KRB5',
        '../heimdal/lib/krb5/acache.c ../heimdal/lib/krb5/add_et_list.c ../heimdal/lib/krb5/addr_families.c ../heimdal/lib/krb5/appdefault.c ../heimdal/lib/krb5/asn1_glue.c ../heimdal/lib/krb5/auth_context.c ../heimdal/lib/krb5/build_ap_req.c ../heimdal/lib/krb5/build_auth.c ../heimdal/lib/krb5/cache.c ../heimdal/lib/krb5/changepw.c ../heimdal/lib/krb5/codec.c ../heimdal/lib/krb5/config_file.c ../heimdal/lib/krb5/constants.c ../heimdal/lib/krb5/context.c ../heimdal/lib/krb5/convert_creds.c ../heimdal/lib/krb5/copy_host_realm.c ../heimdal/lib/krb5/crc.c ../heimdal/lib/krb5/creds.c ../heimdal/lib/krb5/crypto.c ../heimdal/lib/krb5/data.c ../heimdal/lib/krb5/eai_to_heim_errno.c ../heimdal/lib/krb5/error_string.c ../heimdal/lib/krb5/expand_hostname.c ../heimdal/lib/krb5/fcache.c ../heimdal/lib/krb5/free.c ../heimdal/lib/krb5/free_host_realm.c ../heimdal/lib/krb5/generate_seq_number.c ../heimdal/lib/krb5/generate_subkey.c ../heimdal/lib/krb5/get_addrs.c ../heimdal/lib/krb5/get_cred.c ../heimdal/lib/krb5/get_default_principal.c ../heimdal/lib/krb5/get_default_realm.c ../heimdal/lib/krb5/get_for_creds.c ../heimdal/lib/krb5/get_host_realm.c ../heimdal/lib/krb5/get_in_tkt.c ../heimdal/lib/krb5/get_port.c ../heimdal/lib/krb5/init_creds.c ../heimdal/lib/krb5/init_creds_pw.c ../heimdal/lib/krb5/kcm.c ../heimdal/lib/krb5/keyblock.c ../heimdal/lib/krb5/keytab.c ../heimdal/lib/krb5/keytab_any.c ../heimdal/lib/krb5/keytab_file.c ../heimdal/lib/krb5/keytab_memory.c ../heimdal/lib/krb5/keytab_keyfile.c ../heimdal/lib/krb5/krbhst.c ../heimdal/lib/krb5/log.c ../heimdal/lib/krb5/mcache.c ../heimdal/lib/krb5/misc.c ../heimdal/lib/krb5/mk_error.c ../heimdal/lib/krb5/mk_priv.c ../heimdal/lib/krb5/mk_rep.c ../heimdal/lib/krb5/mk_req.c ../heimdal/lib/krb5/mk_req_ext.c ../heimdal/lib/krb5/mit_glue.c ../heimdal/lib/krb5/n-fold.c ../heimdal/lib/krb5/padata.c ../heimdal/lib/krb5/pkinit.c ../heimdal/lib/krb5/plugin.c ../heimdal/lib/krb5/principal.c ../heimdal/lib/krb5/prog_setup.c ../heimdal/lib/krb5/pac.c ../heimdal/lib/krb5/prompter_posix.c ../heimdal/lib/krb5/rd_cred.c ../heimdal/lib/krb5/rd_error.c ../heimdal/lib/krb5/rd_priv.c ../heimdal/lib/krb5/rd_rep.c ../heimdal/lib/krb5/rd_req.c ../heimdal/lib/krb5/replay.c ../heimdal/lib/krb5/send_to_kdc.c ../heimdal/lib/krb5/set_default_realm.c ../heimdal/lib/krb5/store.c ../heimdal/lib/krb5/store_emem.c ../heimdal/lib/krb5/store_fd.c ../heimdal/lib/krb5/store_mem.c ../heimdal/lib/krb5/ticket.c ../heimdal/lib/krb5/time.c ../heimdal/lib/krb5/transited.c ../heimdal/lib/krb5/v4_glue.c ../heimdal/lib/krb5/version.c ../heimdal/lib/krb5/warn.c ../heimdal/lib/krb5/krb5_err.c ../heimdal/lib/krb5/heim_err.c ../heimdal/lib/krb5/k524_err.c krb5-glue.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/krb5 -I../heimdal/lib/asn1 -I../heimdal/lib/com_err',
+       includes='../heimdal_build ../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/lib/com_err',
        public_deps='HEIMDAL_COM_ERR',
+        heimdal_autoproto='../heimdal/lib/krb5/krb5-protos.h',
+        heimdal_autoproto_private='../heimdal/lib/krb5/krb5-private.h',
        deps='HEIMDAL_ROKEN HEIMDAL_PKINIT_ASN1 HEIMDAL_WIND HEIMDAL_KRB5_ASN1 HEIMDAL_HX509 HEIMDAL_HCRYPTO LIBNETIF LIBSAMBA-HOSTCONFIG INTL'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HEIM_ASN1',
        '../heimdal/lib/asn1/der_get.c ../heimdal/lib/asn1/der_put.c ../heimdal/lib/asn1/der_free.c ../heimdal/lib/asn1/der_format.c ../heimdal/lib/asn1/der_length.c ../heimdal/lib/asn1/der_copy.c ../heimdal/lib/asn1/der_cmp.c ../heimdal/lib/asn1/extra.c ../heimdal/lib/asn1/timegm.c ../heimdal/lib/asn1/asn1_err.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/asn1',
+        includes='../heimdal_build ../heimdal/lib/asn1',
        deps='HEIMDAL_ROKEN HEIMDAL_COM_ERR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HCRYPTO_IMATH',
        '../heimdal/lib/hcrypto/imath/imath.c ../heimdal/lib/hcrypto/imath/iprime.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/hcrypto/imath',
+        includes='../heimdal_build ../heimdal/lib/hcrypto/imath',
        deps='HEIMDAL_ROKEN'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HCRYPTO',
        '../heimdal/lib/hcrypto/aes.c ../heimdal/lib/hcrypto/bn.c ../heimdal/lib/hcrypto/dh.c ../heimdal/lib/hcrypto/dh-imath.c ../heimdal/lib/hcrypto/des.c ../heimdal/lib/hcrypto/dsa.c ../heimdal/lib/hcrypto/engine.c ../heimdal/lib/hcrypto/md2.c ../heimdal/lib/hcrypto/md4.c ../heimdal/lib/hcrypto/md5.c ../heimdal/lib/hcrypto/rsa.c ../heimdal/lib/hcrypto/rsa-imath.c ../heimdal/lib/hcrypto/rc2.c ../heimdal/lib/hcrypto/rc4.c ../heimdal/lib/hcrypto/rijndael-alg-fst.c ../heimdal/lib/hcrypto/rnd_keys.c ../heimdal/lib/hcrypto/sha.c ../heimdal/lib/hcrypto/sha256.c ../heimdal/lib/hcrypto/ui.c ../heimdal/lib/hcrypto/evp.c ../heimdal/lib/hcrypto/evp-hcrypto.c ../heimdal/lib/hcrypto/evp-cc.c ../heimdal/lib/hcrypto/pkcs5.c ../heimdal/lib/hcrypto/pkcs12.c ../heimdal/lib/hcrypto/rand.c ../heimdal/lib/hcrypto/rand-egd.c ../heimdal/lib/hcrypto/rand-unix.c ../heimdal/lib/hcrypto/rand-fortuna.c ../heimdal/lib/hcrypto/rand-timer.c ../heimdal/lib/hcrypto/hmac.c ../heimdal/lib/hcrypto/camellia.c ../heimdal/lib/hcrypto/camellia-ntt.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/hcrypto -I../heimdal/lib',
+       includes='../heimdal_build ../heimdal/lib/hcrypto ../heimdal/lib',
        deps='HEIMDAL_ROKEN HEIMDAL_HEIM_ASN1 HEIMDAL_HCRYPTO_IMATH HEIMDAL_RFC2459_ASN1'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_HX509',
        '../heimdal/lib/hx509/ca.c ../heimdal/lib/hx509/cert.c ../heimdal/lib/hx509/cms.c ../heimdal/lib/hx509/collector.c ../heimdal/lib/hx509/crypto.c ../heimdal/lib/hx509/error.c ../heimdal/lib/hx509/env.c ../heimdal/lib/hx509/file.c ../heimdal/lib/hx509/keyset.c ../heimdal/lib/hx509/ks_dir.c ../heimdal/lib/hx509/ks_file.c ../heimdal/lib/hx509/ks_keychain.c ../heimdal/lib/hx509/ks_mem.c ../heimdal/lib/hx509/ks_null.c ../heimdal/lib/hx509/ks_p11.c ../heimdal/lib/hx509/ks_p12.c ../heimdal/lib/hx509/lock.c ../heimdal/lib/hx509/name.c ../heimdal/lib/hx509/peer.c ../heimdal/lib/hx509/print.c ../heimdal/lib/hx509/req.c ../heimdal/lib/hx509/revoke.c ../heimdal/lib/hx509/sel.c ../heimdal/lib/hx509/hx509_err.c ../heimdal/lib/hx509/sel-lex.c ../heimdal/lib/hx509/sel-gram.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/hx509',
+       includes='../heimdal_build ../heimdal/lib/hx509',
        deps='HEIMDAL_ROKEN HEIMDAL_COM_ERR HEIMDAL_HEIM_ASN1 HEIMDAL_HCRYPTO HEIMDAL_CMS_ASN1 HEIMDAL_RFC2459_ASN1 HEIMDAL_OCSP_ASN1 HEIMDAL_PKCS8_ASN1 HEIMDAL_PKCS9_ASN1 HEIMDAL_PKCS12_ASN1 HEIMDAL_PKINIT_ASN1 HEIMDAL_PKCS10_ASN1 HEIMDAL_WIND'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_WIND',
        '../heimdal/lib/wind/wind_err.c ../heimdal/lib/wind/stringprep.c ../heimdal/lib/wind/errorlist.c ../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/normalize.c ../heimdal/lib/wind/normalize_table.c ../heimdal/lib/wind/combining.c ../heimdal/lib/wind/combining_table.c ../heimdal/lib/wind/utf8.c ../heimdal/lib/wind/bidi.c ../heimdal/lib/wind/bidi_table.c ../heimdal/lib/wind/ldap.c ../heimdal/lib/wind/map.c ../heimdal/lib/wind/map_table.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/wind',
+       includes='../heimdal_build ../heimdal/lib/wind',
        deps='HEIMDAL_ROKEN HEIMDAL_COM_ERR'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_PROGNAME',
        '../heimdal/lib/roken/getprogname.c ../heimdal/lib/roken/setprogname.c',
+        includes='../heimdal/lib/roken',
         config_option='HAVE_GETPROGNAME'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_CLOSEFROM',
        '../heimdal/lib/roken/closefrom.c',
+        includes='../heimdal/lib/roken',
         config_option='HAVE_CLOSEFROM'
        )
 
@@ -306,6 +362,7 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_CLOSEFROM',
 bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_PROGNAME_H',
        '../heimdal/lib/roken/getprogname.c ../heimdal/lib/roken/setprogname.c',
         cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1',
+        includes='../heimdal/lib/roken',
         config_option='HAVE_GETPROGNAME'
        )
 
@@ -313,36 +370,33 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_PROGNAME_H',
 bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_CLOSEFROM_H',
        '../heimdal/lib/roken/closefrom.c',
         cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1',
+        includes='../heimdal/lib/roken',
         config_option='HAVE_CLOSEFROM'
        )
 
 
-bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN',
-       '../heimdal/lib/roken/base64.c ../heimdal/lib/roken/ct.c ../heimdal/lib/roken/hex.c ../heimdal/lib/roken/bswap.c ../heimdal/lib/roken/dumpdata.c ../heimdal/lib/roken/emalloc.c ../heimdal/lib/roken/ecalloc.c ../heimdal/lib/roken/getarg.c ../heimdal/lib/roken/get_window_size.c ../heimdal/lib/roken/getdtablesize.c ../heimdal/lib/roken/h_errno.c ../heimdal/lib/roken/issuid.c ../heimdal/lib/roken/net_read.c ../heimdal/lib/roken/net_write.c ../heimdal/lib/roken/socket.c ../heimdal/lib/roken/parse_time.c ../heimdal/lib/roken/parse_units.c ../heimdal/lib/roken/resolve.c ../heimdal/lib/roken/roken_gethostby.c ../heimdal/lib/roken/signal.c ../heimdal/lib/roken/vis.c ../heimdal/lib/roken/strlwr.c ../heimdal/lib/roken/strsep_copy.c ../heimdal/lib/roken/strsep.c ../heimdal/lib/roken/strupr.c ../heimdal/lib/roken/strpool.c ../heimdal/lib/roken/estrdup.c ../heimdal/lib/roken/erealloc.c ../heimdal/lib/roken/simple_exec.c ../heimdal/lib/roken/strcollect.c ../heimdal/lib/roken/rtbl.c ../heimdal/lib/roken/cloexec.c ../heimdal/lib/roken/xfree.c replace.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/roken -I../heimdal/include -I$(socketwrappersrcdir)',
-       deps='HEIMDAL_ROKEN_PROGNAME HEIMDAL_ROKEN_CLOSEFROM resolv LIBREPLACE_NETWORK UID_WRAPPER'
-       )
-
-
 bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_H',
        '../heimdal/lib/roken/base64.c ../heimdal/lib/roken/ct.c ../heimdal/lib/roken/hex.c ../heimdal/lib/roken/bswap.c ../heimdal/lib/roken/dumpdata.c ../heimdal/lib/roken/emalloc.c ../heimdal/lib/roken/ecalloc.c ../heimdal/lib/roken/getarg.c ../heimdal/lib/roken/get_window_size.c ../heimdal/lib/roken/getdtablesize.c ../heimdal/lib/roken/h_errno.c ../heimdal/lib/roken/issuid.c ../heimdal/lib/roken/net_read.c ../heimdal/lib/roken/net_write.c ../heimdal/lib/roken/socket.c ../heimdal/lib/roken/parse_time.c ../heimdal/lib/roken/parse_units.c ../heimdal/lib/roken/resolve.c ../heimdal/lib/roken/roken_gethostby.c ../heimdal/lib/roken/signal.c ../heimdal/lib/roken/vis.c ../heimdal/lib/roken/strlwr.c ../heimdal/lib/roken/strsep_copy.c ../heimdal/lib/roken/strsep.c ../heimdal/lib/roken/strupr.c ../heimdal/lib/roken/strpool.c ../heimdal/lib/roken/estrdup.c ../heimdal/lib/roken/erealloc.c ../heimdal/lib/roken/simple_exec.c ../heimdal/lib/roken/strcollect.c ../heimdal/lib/roken/rtbl.c ../heimdal/lib/roken/cloexec.c ../heimdal/lib/roken/xfree.c replace.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/roken -DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1',
+       includes='../heimdal_build ../heimdal/lib/roken',
+        cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1',
        deps='HEIMDAL_ROKEN_PROGNAME_H HEIMDAL_ROKEN_CLOSEFROM_H resolv LIBREPLACE_NETWORK'
        )
 
 
 bld.SAMBA_SUBSYSTEM('HEIMDAL_COM_ERR',
        '../heimdal/lib/com_err/com_err.c ../heimdal/lib/com_err/error.c',
-       cflags='-I../heimdal_build -I../heimdal/lib/com_err',
+       includes='../heimdal_build ../heimdal/lib/com_err',
        deps='HEIMDAL_ROKEN',
         config_option='HAVE_COM_ERR'
        )
 
 
+# here is the asn1 compiler build rule
 bld.SAMBA_BINARY('asn1_compile',
        '../heimdal/lib/asn1/main.c ../heimdal/lib/asn1/gen.c ../heimdal/lib/asn1/gen_copy.c ../heimdal/lib/asn1/gen_decode.c ../heimdal/lib/asn1/gen_encode.c ../heimdal/lib/asn1/gen_free.c ../heimdal/lib/asn1/gen_glue.c ../heimdal/lib/asn1/gen_length.c ../heimdal/lib/asn1/gen_seq.c ../heimdal/lib/asn1/hash.c ../heimdal/lib/asn1/symbol.c ../heimdal/lib/asn1/asn1parse.c ../heimdal/lib/asn1/lex.c ../heimdal/lib/vers/print_version.c',
        use_hostcc=True,
-        cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_ -I../heimdal_build',
+        cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
+        includes='../heimdal_build ../heimdal/lib/asn1 ../heimdal/lib/roken',
         group='build_compilers',
        deps='HEIMDAL_ROKEN_H replace',
        )
@@ -352,19 +406,22 @@ bld.SAMBA_BINARY('compile_et',
        '../heimdal/lib/vers/print_version.c ../heimdal/lib/com_err/parse.c ../heimdal/lib/com_err/lex.c ../heimdal/lib/com_err/compile_et.c',
        use_hostcc=True,
         group='build_compilers',
-        cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_ -I../heimdal_build',
+        cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
+        includes='../heimdal_build',
        deps='HEIMDAL_ROKEN_H replace'
        )
 
 
 bld.SAMBA_BINARY('samba4kinit',
        '../heimdal/kuser/kinit.c ../heimdal/lib/vers/print_version.c',
+        includes='../heimdal/lib/roken',
        deps='HEIMDAL_KRB5 HEIMDAL_NTLM'
        )
 
 
 bld.SAMBA_BINARY('samba4kpasswd',
        '../heimdal/kpasswd/kpasswd.c ../heimdal/lib/vers/print_version.c',
+        includes='../heimdal/lib/roken',
        deps='HEIMDAL_KRB5 HEIMDAL_NTLM'
        )
 
@@ -374,3 +431,120 @@ bld.SAMBA_BINARY('rkpty',
        deps='HEIMDAL_ROKEN OPENPTY'
        )
 
+HEIMDAL_GSSAPI_SPNEGO_SOURCE = '''
+       ../heimdal/lib/gssapi/spnego/init_sec_context.c
+       ../heimdal/lib/gssapi/spnego/external.c
+       ../heimdal/lib/gssapi/spnego/compat.c
+       ../heimdal/lib/gssapi/spnego/context_stubs.c
+       ../heimdal/lib/gssapi/spnego/cred_stubs.c
+       ../heimdal/lib/gssapi/spnego/accept_sec_context.c
+'''
+
+bld.HEIMDAL_AUTOPROTO_PRIVATE('../heimdal/lib/gssapi/spnego/spnego-private.h',
+                              HEIMDAL_GSSAPI_SPNEGO_SOURCE)
+
+
+HEIMDAL_GSSAPI_KRB5_SOURCE = '''
+       ../heimdal/lib/gssapi/krb5/copy_ccache.c
+       ../heimdal/lib/gssapi/krb5/delete_sec_context.c
+       ../heimdal/lib/gssapi/krb5/init_sec_context.c
+       ../heimdal/lib/gssapi/krb5/context_time.c
+       ../heimdal/lib/gssapi/krb5/init.c
+       ../heimdal/lib/gssapi/krb5/address_to_krb5addr.c
+       ../heimdal/lib/gssapi/krb5/get_mic.c
+       ../heimdal/lib/gssapi/krb5/inquire_context.c
+       ../heimdal/lib/gssapi/krb5/add_cred.c
+       ../heimdal/lib/gssapi/krb5/inquire_cred.c
+       ../heimdal/lib/gssapi/krb5/inquire_cred_by_oid.c
+       ../heimdal/lib/gssapi/krb5/inquire_cred_by_mech.c
+       ../heimdal/lib/gssapi/krb5/inquire_mechs_for_name.c
+       ../heimdal/lib/gssapi/krb5/inquire_names_for_mech.c
+       ../heimdal/lib/gssapi/krb5/indicate_mechs.c
+       ../heimdal/lib/gssapi/krb5/inquire_sec_context_by_oid.c
+       ../heimdal/lib/gssapi/krb5/export_sec_context.c
+       ../heimdal/lib/gssapi/krb5/import_sec_context.c
+       ../heimdal/lib/gssapi/krb5/duplicate_name.c
+       ../heimdal/lib/gssapi/krb5/import_name.c
+       ../heimdal/lib/gssapi/krb5/compare_name.c
+       ../heimdal/lib/gssapi/krb5/export_name.c
+       ../heimdal/lib/gssapi/krb5/canonicalize_name.c
+       ../heimdal/lib/gssapi/krb5/unwrap.c
+       ../heimdal/lib/gssapi/krb5/wrap.c
+       ../heimdal/lib/gssapi/krb5/release_name.c
+       ../heimdal/lib/gssapi/krb5/cfx.c
+       ../heimdal/lib/gssapi/krb5/8003.c
+       ../heimdal/lib/gssapi/krb5/arcfour.c
+       ../heimdal/lib/gssapi/krb5/encapsulate.c
+       ../heimdal/lib/gssapi/krb5/display_name.c
+       ../heimdal/lib/gssapi/krb5/sequence.c
+       ../heimdal/lib/gssapi/krb5/display_status.c
+       ../heimdal/lib/gssapi/krb5/release_buffer.c
+       ../heimdal/lib/gssapi/krb5/external.c
+       ../heimdal/lib/gssapi/krb5/compat.c
+       ../heimdal/lib/gssapi/krb5/creds.c
+       ../heimdal/lib/gssapi/krb5/acquire_cred.c
+       ../heimdal/lib/gssapi/krb5/release_cred.c
+       ../heimdal/lib/gssapi/krb5/store_cred.c
+       ../heimdal/lib/gssapi/krb5/set_cred_option.c
+       ../heimdal/lib/gssapi/krb5/decapsulate.c
+       ../heimdal/lib/gssapi/krb5/verify_mic.c
+       ../heimdal/lib/gssapi/krb5/accept_sec_context.c
+       ../heimdal/lib/gssapi/krb5/set_sec_context_option.c
+       ../heimdal/lib/gssapi/krb5/process_context_token.c
+       ../heimdal/lib/gssapi/krb5/prf.c
+       ../heimdal/lib/gssapi/krb5/aeap.c
+'''
+
+bld.HEIMDAL_AUTOPROTO_PRIVATE('../heimdal/lib/gssapi/krb5/gsskrb5-private.h',
+                              HEIMDAL_GSSAPI_KRB5_SOURCE)
+
+
+HEIMDAL_HX509_OBJH_SOURCE = '''
+       ../heimdal/lib/hx509/ca.c
+       ../heimdal/lib/hx509/cert.c
+       ../heimdal/lib/hx509/cms.c
+       ../heimdal/lib/hx509/collector.c
+       ../heimdal/lib/hx509/crypto.c
+       ../heimdal/lib/hx509/error.c
+       ../heimdal/lib/hx509/env.c
+       ../heimdal/lib/hx509/file.c
+       ../heimdal/lib/hx509/keyset.c
+       ../heimdal/lib/hx509/ks_dir.c
+       ../heimdal/lib/hx509/ks_file.c
+       ../heimdal/lib/hx509/ks_keychain.c
+       ../heimdal/lib/hx509/ks_mem.c
+       ../heimdal/lib/hx509/ks_null.c
+       ../heimdal/lib/hx509/ks_p11.c
+       ../heimdal/lib/hx509/ks_p12.c
+       ../heimdal/lib/hx509/lock.c
+       ../heimdal/lib/hx509/name.c
+       ../heimdal/lib/hx509/peer.c
+       ../heimdal/lib/hx509/print.c
+       ../heimdal/lib/hx509/req.c
+       ../heimdal/lib/hx509/revoke.c
+       ../heimdal/lib/hx509/sel.c
+       ../heimdal/lib/hx509/hx509_err.c
+'''
+
+bld.HEIMDAL_AUTOPROTO('../heimdal/lib/hx509/hx509-protos.h',
+                      HEIMDAL_GSSAPI_KRB5_SOURCE,
+                      options="-R '^(_|^C)' -E HX509_LIB -q -P comment -o")
+
+bld.HEIMDAL_AUTOPROTO('../heimdal/lib/hx509/hx509-private.h',
+                      HEIMDAL_GSSAPI_KRB5_SOURCE,
+                      options="-q -P comment -p")
+
+HEIMDAL_HEIM_ASN1_DER_SOURCE = '''
+       ../heimdal/lib/asn1/der_get.c
+       ../heimdal/lib/asn1/der_put.c
+       ../heimdal/lib/asn1/der_free.c
+       ../heimdal/lib/asn1/der_format.c
+       ../heimdal/lib/asn1/der_length.c
+       ../heimdal/lib/asn1/der_copy.c
+       ../heimdal/lib/asn1/der_cmp.c
+'''
+
+bld.HEIMDAL_AUTOPROTO('../heimdal/lib/asn1/der-protos.h',
+                      HEIMDAL_HEIM_ASN1_DER_SOURCE,
+                      options="-q -P comment -o")
+
index 89034e61f8555faa55cf7e6e461404f89ffc1184..7093f02a5141ed30264b5913cf930ba75b8995c4 100644 (file)
@@ -17,7 +17,9 @@ def set_options(opt):
 def configure(conf):
     conf.sub_config(LIBTDB_DIR)
     conf.sub_config(LIBTEVENT_DIR)
-    conf.CONFIG_PATH('LDB_MODULESDIR', conf.env['LIBDIR'] + '/ldb')
+    # where does the default LIBDIR end up? in conf.env somewhere?
+    #
+    conf.CONFIG_PATH('LDB_MODULESDIR', conf.env.LIBDIR + '/ldb')
     conf.SAMBA_CONFIG_H()
 
 def build(bld):
@@ -42,7 +44,7 @@ def build(bld):
     bld.SAMBA_LIBRARY('ldb',
                      LDB_TDB_SRC + ' ' + COMMON_SRC + ' ' + MODULES_SRC,
                      deps='tdb tevent',
-                     include_list='include',
+                     includes='include',
                       vnum=VERSION)
 
     LDB_TOOLS='ldbadd ldbsearch ldbdel ldbmodify ldbedit ldbrename ldbtest'
index e9c762ec02f9860f296782759ccc0c3aee7d06ce..67c6f96870169c611ed18c9a8aae2870bec9e903 100644 (file)
@@ -19,14 +19,12 @@ def set_options(opt):
 def configure(conf):
     conf.DEFINE('_SAMBA_BUILD_', 4)
     conf.find_program('python', var='PYTHON', mandatory=True)
+    conf.find_program('perl', var='PERL', mandatory=True)
     conf.sub_config(LIBREPLACE_DIR)
     conf.sub_config(LIBLDB_DIR)
     conf.sub_config('heimdal_build')
 
     conf.DEFINE('CONFIG_H_IS_FROM_SAMBA', 1)
-    conf.ADD_CFLAGS('-I.. -I../lib -I../../lib  -I../.. -I../include -Idefault/source4')
-    conf.ADD_CFLAGS('-I../../lib/socket_wrapper -I../../lib/talloc -I../../lib/replace -I../../lib/tevent')
-
-    conf.ADD_CFLAGS('-I../heimdal_build -I../heimdal/lib/krb5 -I../heimdal/lib/asn1 -I../heimdal/lib/com_err -I -I../heimdal/lib/hx509 -I../heimdal/lib/roken -I../heimdal/lib/hx509 -I../heimdal/lib/asn1 -I../heimdal/lib/hcrypto -I../heimdal/lib -I../heimdal/lib/hcrypto/imath -I../heimdal/lib/wind')
+    conf.ADD_EXTRA_INCLUDES('#source4 #lib #source4/lib  #source4/include #lib/socket_wrapper #lib/talloc #lib/replace #lib/event')
 
     conf.SAMBA_CONFIG_H('include/config.h')