diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-03-20 16:27:48 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-04-06 20:26:47 +1000 |
commit | 8f1b809d2ccb083cb84532e98b04a12fb1039e22 (patch) | |
tree | e2e453049331e712e3312bc1c30e33c6ae683c54 | |
parent | 9cb39847c068305d544bcacd6887c57412e16586 (diff) | |
download | samba-8f1b809d2ccb083cb84532e98b04a12fb1039e22.tar.gz samba-8f1b809d2ccb083cb84532e98b04a12fb1039e22.tar.bz2 samba-8f1b809d2ccb083cb84532e98b04a12fb1039e22.zip |
build: nearly there on samba4 build
-rwxr-xr-x | buildtools/compare_config_h.sh | 5 | ||||
-rwxr-xr-x | buildtools/mktowscript/mktowscript.pl | 4 | ||||
-rwxr-xr-x | buildtools/waf-svn | bin | 90543 -> 90898 bytes | |||
-rw-r--r-- | buildtools/wafsamba/samba_asn1.py | 34 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_autoconf.py | 37 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_autoproto.py | 7 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_pidl.py | 11 | ||||
-rw-r--r-- | buildtools/wafsamba/samba_utils.py | 59 | ||||
-rw-r--r-- | buildtools/wafsamba/wafsamba.py | 413 | ||||
-rw-r--r-- | lib/replace/wscript | 12 | ||||
-rw-r--r-- | lib/socket_wrapper/wscript | 1 | ||||
-rw-r--r-- | source4/dsdb/wscript_build | 4 | ||||
-rw-r--r-- | source4/dynconfig/wscript_build | 2 | ||||
-rw-r--r-- | source4/heimdal_build/wscript_build | 125 | ||||
-rw-r--r-- | source4/heimdal_build/wscript_configure | 1 | ||||
-rw-r--r-- | source4/lib/tls/wscript | 4 | ||||
-rw-r--r-- | source4/librpc/idl/wscript_build | 5 | ||||
-rw-r--r-- | source4/librpc/wscript_build | 5 | ||||
-rw-r--r-- | source4/wscript | 43 | ||||
-rw-r--r-- | source4/wscript_build | 46 |
20 files changed, 347 insertions, 471 deletions
diff --git a/buildtools/compare_config_h.sh b/buildtools/compare_config_h.sh index 09f47b2b99..6daa743ed2 100755 --- a/buildtools/compare_config_h.sh +++ b/buildtools/compare_config_h.sh @@ -8,6 +8,5 @@ grep ^.define $HOME/samba_old/source4/include/config.h | sort > old-config.h comm -23 old-config.h waf-config.h -echo - -diff -u old-config.h waf-config.h +#echo +#diff -u old-config.h waf-config.h diff --git a/buildtools/mktowscript/mktowscript.pl b/buildtools/mktowscript/mktowscript.pl index 98c1b7ed32..a05506bcbd 100755 --- a/buildtools/mktowscript/mktowscript.pl +++ b/buildtools/mktowscript/mktowscript.pl @@ -50,6 +50,10 @@ sub strlist($) $s =~ s/\bLIBTALLOC\b/talloc/g; $s =~ s/\bTALLOC\b/talloc/g; $s =~ s/\bLIBTEVENT\b/tevent/g; + $s =~ s/\bTEVENT\b/tevent/g; + $s =~ s/\bTSOCKET\b/LIBTSOCKET/g; + $s =~ s/\bGENSEC\b/gensec/g; + $s =~ s/\bLIBTDB\b/tdb/g; $s =~ s/\bRESOLV\b/resolv/g; return trim(join(' ', split(/\s+/, $s))); diff --git a/buildtools/waf-svn b/buildtools/waf-svn Binary files differindex dc7ee21865..740082d654 100755 --- a/buildtools/waf-svn +++ b/buildtools/waf-svn diff --git a/buildtools/wafsamba/samba_asn1.py b/buildtools/wafsamba/samba_asn1.py index 3af43b8912..27dc43931f 100644 --- a/buildtools/wafsamba/samba_asn1.py +++ b/buildtools/wafsamba/samba_asn1.py @@ -3,6 +3,7 @@ from TaskGen import taskgen, before import Build, os, string, Utils from samba_utils import * +from samba_autoconf import * # not sure if we need this exec_rule stuff ..., i'll leave it in for now @@ -16,7 +17,8 @@ def add_comp(self): def SAMBA_ASN1(bld, name, source, options='', directory='', - option_file=None): + option_file=None, + includes=''): '''Build a ASN1 file using the asn1 compiler. This will produce 2 output files''' bname = os.path.basename(source)[0:-5]; @@ -59,7 +61,7 @@ def SAMBA_ASN1(bld, name, source, shell = True, source = source, target = out_files, - name=name) + name=name + '_ASN1') t.env.ASN1NAME = asn1name t.env.ASN1OPTIONS = options @@ -67,24 +69,40 @@ def SAMBA_ASN1(bld, name, source, if option_file is not None: t.env.OPTION_FILE = "--option-file=%s" % os.path.normpath(os.path.join(bld.curdir, option_file)) + cfile = out_files[0][0:-2] + '.c' + hfile = out_files[1][0:-3] + '.h', # now generate a .c file from the .x file t = bld(rule='''( echo '#include "config.h"' && cat ${SRC} ) > ${TGT}''', source = out_files[0], - target = out_files[0][0:-2] + '.c', + target = cfile, shell = True, ext_out = '.c', ext_in = '.x', - depends_on = name, - name = name + "_C") + depends_on = name + '_ASN1', + name = name + '_C') # and generate a .h file from the .hx file t = bld(rule='cp ${SRC} ${TGT}', source = out_files[1], ext_out = '.c', ext_in = '.x', - target = out_files[1][0:-3] + '.h', - depends_on = name, - name = name + "_H") + target = hfile, + depends_on = name + '_ASN1', + name = name + '_H') + + bld.SET_BUILD_GROUP('main') + + includes = TO_LIST(includes) + includes.append(os.path.dirname(out_files[0])) + + t = bld(features = 'cc', + source = cfile, + target = name, + ccflags = CURRENT_CFLAGS(bld, name, ''), + depends_on = '', + samba_deps = TO_LIST('HEIMDAL_ROKEN'), + samba_includes = includes, + local_include = True) Build.BuildContext.SAMBA_ASN1 = SAMBA_ASN1 diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py index 76878a166b..f7519858cc 100644 --- a/buildtools/wafsamba/samba_autoconf.py +++ b/buildtools/wafsamba/samba_autoconf.py @@ -33,7 +33,7 @@ def CHECK_HEADER(conf, h, add_headers=True): def CHECK_HEADERS(conf, list, add_headers=True): '''check for a list of headers''' ret = True - for hdr in to_list(list): + for hdr in TO_LIST(list): if not CHECK_HEADER(conf, hdr, add_headers): ret = False return ret @@ -43,7 +43,8 @@ def CHECK_HEADERS(conf, list, add_headers=True): def CHECK_TYPES(conf, list): '''check for a list of types''' ret = True - for t in to_list(list): + lst = TO_LIST(list) + for t in TO_LIST(list): if not conf.check(type_name=t, header_name=conf.env.hlist): ret = False return ret @@ -80,7 +81,7 @@ def CHECK_VARIABLE(conf, v, define=None, always=False, headers=None): '''check for a variable declaration (or define)''' hdrs='' if headers is not None: - hlist = to_list(headers) + hlist = TO_LIST(headers) else: hlist = conf.env.hlist for h in hlist: @@ -113,7 +114,7 @@ def CHECK_DECLS(conf, vars, reverse=False, headers=None): When reverse==True then use HAVE_xxx_DECL instead of HAVE_DECL_xxx ''' ret = True - for v in to_list(vars): + for v in TO_LIST(vars): if not reverse: define='HAVE_DECL_%s' % v.upper() else: @@ -135,7 +136,7 @@ def CHECK_FUNC(conf, f, checklink=False): def CHECK_FUNCS(conf, list, checklink=False): '''check for a list of functions''' ret = True - for f in to_list(list): + for f in TO_LIST(list): if not CHECK_FUNC(conf, f, checklink): ret = False return ret @@ -146,12 +147,12 @@ def CHECK_SIZEOF(conf, vars, headers=None, define=None): '''check the size of a type''' hdrs='' if headers is not None: - hlist = to_list(headers) + hlist = TO_LIST(headers) else: hlist = conf.env.hlist for h in hlist: hdrs += '#include <%s>\n' % h - for v in to_list(vars): + for v in TO_LIST(vars): if define is None: define_name = 'SIZEOF_%s' % string.replace(v.upper(), ' ', '_') else: @@ -179,7 +180,7 @@ def CHECK_CODE(conf, code, define, '''check if some code compiles and/or runs''' hdrs='' if headers is not None: - hlist = to_list(headers) + hlist = TO_LIST(headers) else: hlist = conf.env.hlist for h in hlist: @@ -207,7 +208,7 @@ def CHECK_CODE(conf, code, define, execute=execute, define_name = define, mandatory = mandatory, - ccflags=to_list(cflags), + ccflags=TO_LIST(cflags), includes=includes, msg=msg): conf.DEFINE(define, 1) @@ -224,7 +225,7 @@ def CHECK_STRUCTURE_MEMBER(conf, structname, member, '''check for a structure member''' hdrs='' if headers is not None: - hlist = to_list(headers) + hlist = TO_LIST(headers) else: hlist = conf.env.hlist for h in hlist: @@ -286,21 +287,21 @@ def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False): # first see if the functions are in libc if checklibc: remaining = [] - for f in to_list(list): + for f in TO_LIST(list): if not CHECK_FUNC(conf, f): remaining.append(f) else: - remaining = to_list(list) + remaining = TO_LIST(list) if remaining == []: - LOCAL_CACHE_SET(conf, 'EMPTY_TARGETS', library.upper(), True) + SET_TARGET_TYPE(conf, library, 'EMPTY') return True if not conf.check(lib=library, uselib_store=library): conf.ASSERT(not mandatory, "Mandatory library '%s' not found for functions '%s'" % (library, list)) # if it isn't a mandatory library, then remove it from dependency lists - LOCAL_CACHE_SET(conf, 'EMPTY_TARGETS', library.upper(), True) + SET_TARGET_TYPE(conf, library, 'EMPTY') return False conf.define('HAVE_LIB%s' % string.replace(library.upper(),'-','_'), 1) @@ -343,7 +344,7 @@ def CONFIG_PATH(conf, name, default): def ADD_CFLAGS(conf, flags): if not 'EXTRA_CFLAGS' in conf.env: conf.env['EXTRA_CFLAGS'] = [] - conf.env['EXTRA_CFLAGS'].extend(to_list(flags)) + conf.env['EXTRA_CFLAGS'].extend(TO_LIST(flags)) ############################################################## # add some extra include directories to all builds @@ -351,16 +352,16 @@ def ADD_CFLAGS(conf, flags): def ADD_EXTRA_INCLUDES(conf, includes): if not 'EXTRA_INCLUDES' in conf.env: conf.env['EXTRA_INCLUDES'] = [] - conf.env['EXTRA_INCLUDES'].extend(to_list(includes)) + conf.env['EXTRA_INCLUDES'].extend(TO_LIST(includes)) ############################################################## # work out the current flags. local flags are added first -def CURRENT_CFLAGS(bld, cflags): +def CURRENT_CFLAGS(bld, target, cflags): if not 'EXTRA_CFLAGS' in bld.env: list = [] else: list = bld.env['EXTRA_CFLAGS']; - ret = to_list(cflags) + ret = TO_LIST(cflags) ret.extend(list) return ret diff --git a/buildtools/wafsamba/samba_autoproto.py b/buildtools/wafsamba/samba_autoproto.py index 19e4dbf94e..71274ead75 100644 --- a/buildtools/wafsamba/samba_autoproto.py +++ b/buildtools/wafsamba/samba_autoproto.py @@ -5,7 +5,10 @@ import Build, os, string, Utils from samba_utils import * # rule for heimdal prototype generation -def HEIMDAL_AUTOPROTO(bld, header, source, options='-q -P comment -o'): +def HEIMDAL_AUTOPROTO(bld, header, source, options=None, group='main'): + bld.SET_BUILD_GROUP(group) + if options is None: + options='-q -P comment -o' t = bld(rule='${PERL} -W ../heimdal/cf/make-proto.pl ${OPTIONS} ${TGT[0].abspath(env)} ${SRC}', source=source, target=header, @@ -26,8 +29,8 @@ def SAMBA_AUTOPROTO(bld, header, source): source = source, target = header, ext_out='.c', + before ='cc', rule = '../script/mkproto.pl --srcdir=.. --builddir=. --public=/dev/null --private=${TGT} ${SRC}' ) Build.BuildContext.SAMBA_AUTOPROTO = SAMBA_AUTOPROTO - diff --git a/buildtools/wafsamba/samba_pidl.py b/buildtools/wafsamba/samba_pidl.py index 938a0dc839..d37e7f1d23 100644 --- a/buildtools/wafsamba/samba_pidl.py +++ b/buildtools/wafsamba/samba_pidl.py @@ -30,11 +30,11 @@ def SAMBA_PIDL(bld, pname, source, options='', output_dir='.'): table_header_idx = None out_files = [] - options_list = to_list(options) + options_list = TO_LIST(options) for o in options_list: if o in options_map: - ofiles = to_list(options_map[o]) + ofiles = TO_LIST(options_map[o]) for f in ofiles: out_files.append(os.path.join(output_dir, f % bname)) if f == 'ndr_%s.h': @@ -53,7 +53,7 @@ def SAMBA_PIDL(bld, pname, source, options='', output_dir='.'): name = name) t.env.PIDL = "../pidl/pidl" - t.env.OPTIONS = to_list(options) + t.env.OPTIONS = TO_LIST(options) t.env.OUTPUTDIR = 'bin/' + bld.BUILD_PATH(output_dir) @@ -67,7 +67,7 @@ Build.BuildContext.SAMBA_PIDL = SAMBA_PIDL def SAMBA_PIDL_LIST(bld, name, source, options='', output_dir='.'): '''A wrapper for building a set of IDL files''' - for p in to_list(source): + for p in TO_LIST(source): bld.SAMBA_PIDL(name, p, options=options, output_dir=output_dir) Build.BuildContext.SAMBA_PIDL_LIST = SAMBA_PIDL_LIST @@ -91,13 +91,12 @@ def SAMBA_PIDL_TABLES(bld, name, target): headers = bld.env.PIDL_HEADERS t = bld( features = 'collect', - rule = '${SRC} --output ${TGT} > ${TGT}', + rule = '${SRC} --output ${TGT} | sed "s|default/||" > ${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 diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py index 7a1d56e22a..5db9f2542a 100644 --- a/buildtools/wafsamba/samba_utils.py +++ b/buildtools/wafsamba/samba_utils.py @@ -8,6 +8,7 @@ from Logs import debug from TaskGen import extension import shlex +# TODO: make this a --option LIB_PATH="shared" @@ -30,16 +31,6 @@ def SET_TARGET_TYPE(ctx, target, value): "Target '%s' re-defined as %s - was %s" % (target, value, cache[target])) debug("task_gen: Skipping duplicate target %s (curdir=%s)" % (target, ctx.curdir)) return False - assumed = LOCAL_CACHE(ctx, 'ASSUMED_TARGET') - if target in assumed: - #if assumed[target] != value: - # print "Target '%s' was assumed of type '%s' but is '%s'" % (target, assumed[target], value) - ASSERT(ctx, assumed[target] == value, - "Target '%s' was assumed of type '%s' but is '%s'" % (target, assumed[target], value)) - predeclared = LOCAL_CACHE(ctx, 'PREDECLARED_TARGET') - if target in predeclared: - ASSERT(ctx, predeclared[target] == value, - "Target '%s' was predeclared of type '%s' but is '%s'" % (target, predeclared[target], value)) LOCAL_CACHE_SET(ctx, 'TARGET_TYPE', target, value) debug("task_gen: Target '%s' created of type '%s' in %s" % (target, value, ctx.curdir)) return True @@ -110,17 +101,11 @@ Build.BuildContext.ASSERT = ASSERT # create a list of files by pre-pending each with a subdir name def SUBDIR(bld, subdir, list): ret = '' - for l in to_list(list): + for l in TO_LIST(list): ret = ret + subdir + '/' + l + ' ' return ret Build.BuildContext.SUBDIR = SUBDIR -############################################## -# remove .. elements from a path list -def NORMPATH(bld, ilist): - return " ".join([os.path.normpath(p) for p in to_list(ilist)]) -Build.BuildContext.NORMPATH = NORMPATH - ####################################################### # d1 += d2 def dict_concat(d1, d2): @@ -158,7 +143,7 @@ def ADD_COMMAND(opt, name, function): Options.Handler.ADD_COMMAND = ADD_COMMAND -@feature('*') +@feature('cc', 'cshlib', 'cprogram') @before('apply_core','exec_rule') def process_depends_on(self): '''The new depends_on attribute for build rules @@ -174,7 +159,7 @@ def process_depends_on(self): self.includes += " " + y.more_includes -#@feature('cprogram cc cshlib') +#@feature('cprogram', 'cc', 'cshlib') #@before('apply_core') #def process_generated_dependencies(self): # '''Ensure that any dependent source generation happens @@ -186,12 +171,6 @@ def process_depends_on(self): # 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 # #old_post_run = Task.Task.post_run @@ -230,22 +209,39 @@ def dbg(self): if self.target == 'HEIMDAL_HEIM_ASN1': print "@@@@@@@@@@@@@@2", self.includes, self.env._CCINCFLAGS - -def to_list(str): +def unique_list(seq): + '''return a uniquified list in the same order as the existing list''' + seen = {} + result = [] + for item in seq: + if item in seen: continue + seen[item] = True + result.append(item) + return result + +def TO_LIST(str): '''Split a list, preserving quoted strings and existing lists''' if isinstance(str, list): return str - return shlex.split(str) + lst = str.split() + # the string may have had quotes in it, now we + # check if we did have quotes, and use the slower shlex + # if we need to + for e in lst: + if e[0] == '"': + return shlex.split(str) + return lst @conf -def SUBST_ENV_VAR(conf, varname): +def SUBST_ENV_VAR(ctx, varname): '''Substitute an environment variable for any embedded variables''' - return Utils.subst_vars(conf.env[varname], conf.env) + return Utils.subst_vars(ctx.env[varname], ctx.env) +Build.BuildContext.SUBST_ENV_VAR = SUBST_ENV_VAR def ENFORCE_GROUP_ORDERING(bld): '''enforce group ordering for the project. This - makes the group ordering apply even when you specify + makes the group ordering apply only when you specify a target with --target''' if Options.options.compile_targets: @feature('*') @@ -280,4 +276,3 @@ Build.BuildContext.ENFORCE_GROUP_ORDERING = ENFORCE_GROUP_ORDERING # raise Utils.WafError('object %r was not found in uselib_local (required by add_objects %r)' % (x, self.name)) # y.post() # self.env.append_unique('INC_PATHS', y.env.INC_PATHS) - diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py index 2498eedd75..e90bd35ef4 100644 --- a/buildtools/wafsamba/wafsamba.py +++ b/buildtools/wafsamba/wafsamba.py @@ -8,12 +8,13 @@ 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 * from samba_asn1 import * from samba_autoproto import * +from samba_python import * +from samba_deps import * LIB_PATH="shared" @@ -35,154 +36,17 @@ def ADD_INIT_FUNCTION(bld, subsystem, init_function): bld.ASSERT(subsystem is not None, "You must specify a subsystem for init_function '%s'" % init_function) cache = LOCAL_CACHE(bld, 'INIT_FUNCTIONS') if not subsystem in cache: - cache[subsystem] = '' - cache[subsystem] += '%s,' % init_function + cache[subsystem] = [] + cache[subsystem].append(init_function) Build.BuildContext.ADD_INIT_FUNCTION = ADD_INIT_FUNCTION -################################################################ -# recursively build the dependency list for a target -def FULL_DEPENDENCIES(bld, cache, target, chain, path): - if not target in cache: - return {} - deps = cache[target].copy() - for t in cache[target]: - bld.ASSERT(t not in chain, "Circular dependency for %s: %s->%s" % (t, path, t)); - c2 = chain.copy() - c2[t] = True - dict_concat(deps, FULL_DEPENDENCIES(bld, cache, t, c2, "%s->%s" % (path, t))) - return deps - -############################################################ -# check our build dependencies for circular dependencies -def CHECK_TARGET_DEPENDENCY(bld, target): - cache = LOCAL_CACHE(bld, 'LIB_DEPS') - return FULL_DEPENDENCIES(bld, cache, target, { target:True }, target) - -############################################################ -# check that all dependencies have been declared -def CHECK_DEPENDENCIES(bld): - cache = LOCAL_CACHE(bld, 'LIB_DEPS') - target_cache = LOCAL_CACHE(bld, 'TARGET_TYPE') - debug('deps: Checking dependencies') - for t in cache: - deps = CHECK_TARGET_DEPENDENCY(bld, t) - for d in deps: - #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 - - -############################################################ -# pre-declare a target as being of a particular type -def PREDECLARE(bld, target, type): - cache = LOCAL_CACHE(bld, 'PREDECLARED_TARGET') - target_cache = LOCAL_CACHE(bld, 'TARGET_TYPE') - ASSERT(bld, not target in target_cache, "Target '%s' is already declared" % target) - ASSERT(bld, not target in cache, "Target '%s' already predeclared" % target) - cache[target] = type -Build.BuildContext.PREDECLARE = PREDECLARE - - - -################################################################ -# add to the dependency list. Return a new dependency list with -# any circular dependencies removed -# returns a tuple containing (systemdeps, localdeps, add_objects) -def ADD_DEPENDENCIES(bld, name, deps): - debug('deps: Calculating dependencies for %s' % name) - lib_deps = LOCAL_CACHE(bld, 'LIB_DEPS') - if not name in lib_deps: - lib_deps[name] = {} - list = to_list(deps) - list2 = [] - for d in list: - lib_deps[name][d] = True; - try: - CHECK_TARGET_DEPENDENCY(bld, name) - list2.append(d) - except AssertionError: - 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') - predeclare = LOCAL_CACHE(bld, 'PREDECLARED_TARGET') - for d in list2: - recurse = False - # strip out any dependencies on empty libraries - if d in cache: - debug("deps: Removing empty dependency '%s' from '%s'" % (d, name)) - continue - type = None - - if d in target_cache: - type = target_cache[d] - elif d in predeclare: - type = predeclare[d] - else: - type = 'SUBSYSTEM' - LOCAL_CACHE_SET(bld, 'ASSUMED_TARGET', d, type) - - if type == 'SYSLIB': - sysdeps.append(d) - elif type == 'LIBRARY': - localdeps.append(d) - elif type == 'SUBSYSTEM': - add_objects.append(d) - recurse = True - elif type == 'MODULE': - add_objects.append(d) - recurse = True - elif type == 'PYTHON': - pass - elif type == 'ASN1': - pass - elif type == 'BINARY': - pass - else: - ASSERT(bld, False, "Unknown target type '%s' for dependency %s" % ( - type, d)) - - # for some types we have to build the list recursively - if recurse and (d in lib_deps): - rec_deps = ' '.join(lib_deps[d].keys()) - (rec_sysdeps, rec_localdeps, rec_add_objects) = ADD_DEPENDENCIES(bld, d, rec_deps) - sysdeps.extend(to_list(rec_sysdeps)) - localdeps.extend(to_list(rec_localdeps)) - add_objects.extend(to_list(rec_add_objects)) - - debug('deps: Dependencies for %s: sysdeps: %u localdeps: %u add_objects=%u' % ( - name, len(sysdeps), len(localdeps), len(add_objects))) - return (' '.join(sysdeps), ' '.join(localdeps), ' '.join(add_objects)) - - -################################################################# -# return a include list for a set of library dependencies -def SAMBA_LIBRARY_INCLUDE_LIST(bld, deps): - ret = bld.curdir + ' ' - cache = LOCAL_CACHE(bld, 'INCLUDE_LIST') - for l in to_list(deps): - 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 ################################################################# # define a Samba library def SAMBA_LIBRARY(bld, libname, source, deps='', public_deps='', - includes='.', + includes='', public_headers=None, vnum=None, cflags='', @@ -190,58 +54,34 @@ def SAMBA_LIBRARY(bld, libname, source, realname=None, autoproto=None, group='main', - depends_on=''): - if not SET_TARGET_TYPE(bld, libname, 'LIBRARY'): - return + depends_on='', + local_include=True): # remember empty libraries, so we can strip the dependencies if (source == '') or (source == []): - LOCAL_CACHE_SET(bld, 'EMPTY_TARGETS', libname, True) + SET_TARGET_TYPE(bld, libname, 'EMPTY') return - (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, libname, deps) - -# bld.SET_TARGET_INCLUDE_LIST(libname, includes) - - ilist = includes + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) - ilist = bld.NORMPATH(ilist) + if not SET_TARGET_TYPE(bld, libname, 'LIBRARY'): + return -# print "LIBRARY %s add_objects=%s deps=%s uselib_local=%s ilist=%s" % (libname, add_objects, deps, localdeps, ilist) + deps += ' ' + public_deps # this print below should show that we're runnig this code - bld.SET_BUILD_GROUP(group) # <- here - bld( - features = 'cc cshlib', - source = source, - target=libname, - uselib_local = localdeps, - uselib = sysdeps, - add_objects = add_objects, - ccflags = CURRENT_CFLAGS(bld, cflags), - includes=ilist + ' . #', - export_incdirs = includes, - 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(group) 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 ../%s.so%s %s/lib%s.so%s' % (libname, soext, LIB_PATH, libname, soext), - shell = True, - after = 'cc_link', - always = True, - name = libname + '.link', + features = 'cc cshlib symlink_lib', + source = source, + target = libname, + ccflags = CURRENT_CFLAGS(bld, libname, cflags), + depends_on = depends_on, + samba_deps = TO_LIST(deps), + samba_includes = includes, + local_include = local_include, + vnum = vnum ) - #print t.rule - LOCAL_CACHE_SET(bld, 'INCLUDE_LIST', libname, ilist) + if autoproto is not None: + bld.SAMBA_AUTOPROTO(autoproto, source) Build.BuildContext.SAMBA_LIBRARY = SAMBA_LIBRARY @@ -259,64 +99,36 @@ def SAMBA_BINARY(bld, binname, source, use_hostcc=None, compiler=None, group='main', - manpages=None): - ilist = includes + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) - ilist = bld.NORMPATH(ilist) + manpages=None, + local_include=True, + subsystem=None, + needs_python=False): if not SET_TARGET_TYPE(bld, binname, 'BINARY'): return - (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, binname, deps) - - cache = LOCAL_CACHE(bld, 'INIT_FUNCTIONS') - if modules is not None: - for m in to_list(modules): - bld.ASSERT(m in cache, - "No init_function defined for module '%s' in binary '%s'" % (m, binname)) - cflags += ' -DSTATIC_%s_MODULES="%s"' % (m, cache[m]) - -# print "BINARY %s add_objects=%s deps=%s uselib_local=%s" % (binname, add_objects, deps, localdeps) + features = 'cc cprogram copy_bin' + if needs_python: + features += ' pyembed' bld.SET_BUILD_GROUP(group) bld( - features = 'cc cprogram', - source = source, - target = binname, - uselib_local = localdeps, - uselib = sysdeps, - includes = ilist + ' . #', - ccflags = CURRENT_CFLAGS(bld, cflags), - add_objects = add_objects, - top=True) - - if not Options.is_install: - bld( - source = binname, - rule = 'rm -f %s && cp ${SRC} .' % (binname), - shell = True, - after = 'cc_link', - always = True, - ext_in = '.bin', - name = binname + ".copy", - depends_on = binname - ) -Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY - - -################################################################# -# define a Samba python module -def SAMBA_PYTHON(bld, name, source, - deps='', - public_deps='', - realname=''): - - if not SET_TARGET_TYPE(bld, name, 'PYTHON'): - return + features = features, + source = source, + target = binname, + ccflags = CURRENT_CFLAGS(bld, binname, cflags), + samba_deps = TO_LIST(deps), + samba_includes = includes, + local_include = local_include, + samba_modules = modules, + top = True, + samba_subsystem= subsystem + ) - (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, name, deps) + if autoproto is not None: + bld.SAMBA_AUTOPROTO(autoproto, source) +Build.BuildContext.SAMBA_BINARY = SAMBA_BINARY - return -Build.BuildContext.SAMBA_PYTHON = SAMBA_PYTHON ################################################################# # define a Samba ET target @@ -340,33 +152,66 @@ Build.BuildContext.SAMBA_ERRTABLE = SAMBA_ERRTABLE # define a Samba module. def SAMBA_MODULE(bld, modname, source, deps='', - includes='.', + includes='', subsystem=None, init_function=None, autoproto=None, + autoproto_extra_source='', aliases=None, cflags='', - output_type=None): + output_type=None, + local_include=True, + enabled=True): + + if output_type == 'MERGED_OBJ': + # treat merged object modules as subsystems for now + SAMBA_SUBSYSTEM(bld, modname, source, + deps=deps, + includes=includes, + autoproto=autoproto, + autoproto_extra_source=autoproto_extra_source, + cflags=cflags, + local_include=local_include, + enabled=enabled) + # even though we're treating it as a subsystem, we need to + # add it to the init_function list + # TODO: we should also create an implicit dependency + # between the subsystem target and this target + bld.ADD_INIT_FUNCTION(subsystem, init_function) + return - if not SET_TARGET_TYPE(bld, modname, 'MODULE'): + if not enabled: + SET_TARGET_TYPE(bld, modname, 'DISABLED') return # remember empty modules, so we can strip the dependencies if (source == '') or (source == []): - LOCAL_CACHE_SET(bld, 'EMPTY_TARGETS', modname, True) + SET_TARGET_TYPE(bld, modname, 'EMPTY') return - (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, modname, deps) + if not SET_TARGET_TYPE(bld, modname, 'MODULE'): + return + + + bld.ADD_INIT_FUNCTION(subsystem, init_function) + + if subsystem is not None: + deps += ' ' + subsystem - ilist = includes + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) - ilist = bld.NORMPATH(ilist) bld.SET_BUILD_GROUP('main') bld( - features = 'cc', - source = source, - target=modname, - ccflags = CURRENT_CFLAGS(bld, cflags), - includes=ilist + ' . #') + features = 'cc', + source = source, + target = modname, + ccflags = CURRENT_CFLAGS(bld, modname, cflags), + samba_includes = includes, + local_include = local_include, + samba_deps = TO_LIST(deps) + ) + + if autoproto is not None: + bld.SAMBA_AUTOPROTO(autoproto, source + ' ' + autoproto_extra_source) + Build.BuildContext.SAMBA_MODULE = SAMBA_MODULE @@ -375,55 +220,85 @@ Build.BuildContext.SAMBA_MODULE = SAMBA_MODULE def SAMBA_SUBSYSTEM(bld, modname, source, deps='', public_deps='', - includes='.', + includes='', public_headers=None, cflags='', group='main', config_option=None, init_function_sentinal=None, heimdal_autoproto=None, + heimdal_autoproto_options=None, heimdal_autoproto_private=None, autoproto=None, - depends_on=''): - - if not SET_TARGET_TYPE(bld, modname, 'SUBSYSTEM'): + autoproto_extra_source='', + depends_on='', + local_include=True, + local_include_first=True, + enabled=True): + + if not enabled: + SET_TARGET_TYPE(bld, modname, 'DISABLED') return # if the caller specifies a config_option, then we create a blank # subsystem if that configuration option was found at configure time if (config_option is not None) and bld.CONFIG_SET(config_option): - source = '' + SET_TARGET_TYPE(bld, modname, 'EMPTY') + return # remember empty subsystems, so we can strip the dependencies if (source == '') or (source == []): - LOCAL_CACHE_SET(bld, 'EMPTY_TARGETS', modname, True) + SET_TARGET_TYPE(bld, modname, 'EMPTY') + return + + if not SET_TARGET_TYPE(bld, modname, 'SUBSYSTEM'): return - (sysdeps, localdeps, add_objects) = ADD_DEPENDENCIES(bld, modname, deps) + deps += ' ' + public_deps - ilist = includes + ' ' + bld.SAMBA_LIBRARY_INCLUDE_LIST(deps) - ilist = bld.NORMPATH(ilist) bld.SET_BUILD_GROUP(group) + t = bld( - features = 'cc', - source = source, - target=modname, - ccflags = CURRENT_CFLAGS(bld, cflags), - includes=ilist + ' . #', - depends_on=depends_on) - LOCAL_CACHE_SET(bld, 'INCLUDE_LIST', modname, ilist) + features = 'cc', + source = source, + target = modname, + ccflags = CURRENT_CFLAGS(bld, modname, cflags), + depends_on = depends_on, + samba_deps = TO_LIST(deps), + samba_includes = includes, + local_include = local_include, + local_include_first = local_include_first + ) if heimdal_autoproto is not None: - bld.HEIMDAL_AUTOPROTO(heimdal_autoproto, source) + bld.HEIMDAL_AUTOPROTO(heimdal_autoproto, source, options=heimdal_autoproto_options) 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) + bld.SAMBA_AUTOPROTO(autoproto, source + ' ' + autoproto_extra_source) return t Build.BuildContext.SAMBA_SUBSYSTEM = SAMBA_SUBSYSTEM +def SAMBA_GENERATOR(bld, name, rule, source, target, + group='build_source'): + '''A generic source generator target''' + + if not SET_TARGET_TYPE(bld, name, 'GENERATOR'): + return + + bld.SET_BUILD_GROUP(group) + bld( + rule=rule, + source=source, + target=target, + before='cc', + ext_out='.c') +Build.BuildContext.SAMBA_GENERATOR = SAMBA_GENERATOR + + + ############################################################### # add a new set of build rules from a subdirectory # the @runonce decorator ensures we don't end up @@ -471,3 +346,17 @@ def SET_BUILD_GROUP(bld, group): bld.set_group(group) Build.BuildContext.SET_BUILD_GROUP = SET_BUILD_GROUP + +def h_file(filename): + import stat + st = os.stat(filename) + if stat.S_ISDIR(st[stat.ST_MODE]): raise IOError('not a file') + m = Utils.md5() + m.update(str(st.st_mtime)) + m.update(str(st.st_size)) + m.update(filename) + return m.digest() + +@conf +def ENABLE_TIMESTAMP_DEPENDENCIES(conf): + Utils.h_file = h_file diff --git a/lib/replace/wscript b/lib/replace/wscript index 0f3689a808..e3f7075897 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -26,16 +26,24 @@ def set_options(opt): opt.add_option('--enable-developer', help=("Turn on developer warnings and debugging"), action="store_true", dest='developer', default=False) + opt.add_option('--timestamp-dependencies', + help=("use file timestamps instead of content for build dependencies (BROKEN)"), + action="store", dest='timestamp_dependencies', default=False) @wafsamba.runonce def configure(conf): conf.env.hlist = [] conf.env.srcdir = conf.srcdir + if Options.options.timestamp_dependencies: + conf.ENABLE_TIMESTAMP_DEPENDENCIES() + # load our local waf extensions conf.check_tool('wafsamba', tooldir=conf.srcdir + "/buildtools/wafsamba") conf.check_tool('compiler_cc') + # gccdeps can be useful for debugging recursion in #include lines + # conf.check_tool('gccdeps', tooldir=conf.srcdir + "/buildtools/wafsamba") # make the install paths available in environment conf.env.LIBDIR = Options.options.LIBDIR @@ -191,7 +199,7 @@ def configure(conf): msg="Checking for C99 vsnprintf") if Options.options.developer: - conf.ADD_CFLAGS('-Wall -g -Wfatal-errors -DDEVELOPER -W -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Werror-implicit-function-declaration -Wformat=2 -Wno-format-y2k') + conf.ADD_CFLAGS('-Wall -g -Wfatal-errors -W -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Werror-implicit-function-declaration -Wformat=2 -Wno-format-y2k') conf.SAMBA_CONFIG_H() conf.SAMBA_BUILD_ENV() @@ -302,7 +310,7 @@ def build(bld): if bld.CONFIG_SET('HAVE_INET_PTON'): NET_SOURCES.append('inet_pton.c') if bld.CONFIG_SET('HAVE_SOCKETPAIR'): NET_SOURCES.append('socketpair.c') - bld.SAMBA_SUBSYSTEM('LIBREPLACE_NETWORK', NET_SOURCES) + bld.SAMBA_SUBSYSTEM('LIBREPLACE_NETWORK', NET_SOURCES, deps='replace') CRYPT_SOURCES = [] diff --git a/lib/socket_wrapper/wscript b/lib/socket_wrapper/wscript index 0534fbcda4..edd7af69f4 100644 --- a/lib/socket_wrapper/wscript +++ b/lib/socket_wrapper/wscript @@ -8,4 +8,5 @@ def set_options(opt): def configure(conf): if Options.options.enable_socket_wrapper or Options.options.developer: conf.DEFINE('SOCKET_WRAPPER', 1) + conf.ADD_GLOBAL_DEPENDENCY('SOCKET_WRAPPER') diff --git a/source4/dsdb/wscript_build b/source4/dsdb/wscript_build index cc2f3fb901..3d3a35768f 100644 --- a/source4/dsdb/wscript_build +++ b/source4/dsdb/wscript_build @@ -12,14 +12,14 @@ bld.SAMBA_SUBSYSTEM('SAMDB', bld.SAMBA_SUBSYSTEM('SAMDB_COMMON', - source='common/util.c ./samdb/ldb_modules/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 ../../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/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', + source='schema/schema_init.c schema/schema_set.c schema/schema_query.c schema/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' ) diff --git a/source4/dynconfig/wscript_build b/source4/dynconfig/wscript_build deleted file mode 100644 index 62b2311a8b..0000000000 --- a/source4/dynconfig/wscript_build +++ /dev/null @@ -1,2 +0,0 @@ -bld.SAMBA_SUBSYSTEM('DYNCONFIG', - 'dynconfig.c') diff --git a/source4/heimdal_build/wscript_build b/source4/heimdal_build/wscript_build index 49307f39b0..3117095824 100644 --- a/source4/heimdal_build/wscript_build +++ b/source4/heimdal_build/wscript_build @@ -1,83 +1,52 @@ -#! /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 - -bld( +bld.SAMBA_GENERATOR( + name="HEIMDAL_ERRORLIST", 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="HEIMDAL_ERRORLIST" -) + target = '../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/errorlist_table.h' + ) -# normalize_table.c rules -#$(heimdalsrcdir)/lib/wind/normalize_table.h $(heimdalsrcdir)/lib/wind/normalize_table.c: $(heimdalsrcdir)/lib/wind/UnicodeData.txt $(heimdalsrcdir)/lib/wind/CompositionExclusions-3.2.0.txt $(heimdalsrcdir)/lib/wind/gen-normalize.py -# $(PYTHON) $(heimdalsrcdir)/lib/wind/gen-normalize.py $(heimdalsrcdir)/lib/wind/UnicodeData.txt $(heimdalsrcdir)/lib/wind/CompositionExclusions-3.2.0.txt $(heimdalsrcdir)/lib/wind/ - -bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[2].abspath()} ${SRC[1].parent.abspath(env)}", +bld.SAMBA_GENERATOR( + name = 'HEIMDAL_NORMALIZE_TABLE', + rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[2].abspath()} ${SRC[1].parent.abspath(env)}", source = '../heimdal/lib/wind/gen-normalize.py ../heimdal/lib/wind/UnicodeData.txt ../heimdal/lib/wind/CompositionExclusions-3.2.0.txt', - target = '../heimdal/lib/wind/normalize_table.h ../heimdal/lib/wind/normalize_table.c', - before = 'cc', - name = 'HEIMDAL_NORMALIZE_TABLE' + target = '../heimdal/lib/wind/normalize_table.h ../heimdal/lib/wind/normalize_table.c' ) -# combining_table.[ch] rules -#$(heimdalsrcdir)/lib/wind/combining_table.h $(heimdalsrcdir)/lib/wind/combining_table.c: $(heimdalsrcdir)/lib/wind/UnicodeData.txt $(heimdalsrcdir)/lib/wind/gen-combining.py -# $(PYTHON) $(heimdalsrcdir)/lib/wind/gen-combining.py $(heimdalsrcdir)/lib/wind/UnicodeData.txt $(heimdalsrcdir)/lib/wind/ - - -bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[1].parent.abspath(env)}", +bld.SAMBA_GENERATOR( + name = 'HEIMDAL_COMBINING_TABLE', + rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[1].parent.abspath(env)}", source = '../heimdal/lib/wind/gen-combining.py ../heimdal/lib/wind/UnicodeData.txt', - target = '../heimdal/lib/wind/combining_table.h ../heimdal/lib/wind/combining_table.c', - before = 'cc', - name = 'HEIMDAL_COMBINING_TABLE' + target = '../heimdal/lib/wind/combining_table.h ../heimdal/lib/wind/combining_table.c' ) -# bidi_table rules -#$(heimdalsrcdir)/lib/wind/bidi_table.h $(heimdalsrcdir)/lib/wind/bidi_table.c: $(heimdalsrcdir)/lib/wind/rfc3454.txt $(heimdalsrcdir)/lib/wind/gen-bidi.py -# $(PYTHON) $(heimdalsrcdir)/lib/wind/gen-bidi.py $(heimdalsrcdir)/lib/wind/rfc3454.txt $(heimdalsrcdir)/lib/wind/ - - -bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[1].parent.abspath(env)}", +bld.SAMBA_GENERATOR( + name = 'HEIMDAL_BIDI_TABLE', + rule="${PYTHON} ${SRC[0].abspath()} ${SRC[1].abspath()} ${SRC[1].parent.abspath(env)}", source = '../heimdal/lib/wind/gen-bidi.py ../heimdal/lib/wind/rfc3454.txt', - target = '../heimdal/lib/wind/bidi_table.h ../heimdal/lib/wind/bidi_table.c', - before = 'cc', - name = 'HEIMDAL_BIDI_TABLE' + target = '../heimdal/lib/wind/bidi_table.h ../heimdal/lib/wind/bidi_table.c' ) -# map_table rules -#$(heimdalsrcdir)/lib/wind/map_table.h $(heimdalsrcdir)/lib/wind/map_table.c: $(heimdalsrcdir)/lib/wind/rfc3454.txt $(heimdalsrcdir)/lib/wind/gen-map.py $(heimdalsrcdir)/lib/wind/stringprep.py -# $(PYTHON) $(heimdalsrcdir)/lib/wind/gen-map.py $(heimdalsrcdir)/lib/wind/rfc3454.txt $(heimdalsrcdir)/lib/wind/ - - -bld(rule="${PYTHON} ${SRC[0].abspath()} ${SRC[2].abspath()} ${SRC[2].parent.abspath(env)}", +bld.SAMBA_GENERATOR( + name = 'HEIMDAL_MAP_TABLE', + rule="${PYTHON} ${SRC[0].abspath()} ${SRC[2].abspath()} ${SRC[2].parent.abspath(env)}", source = '../heimdal/lib/wind/gen-map.py ../heimdal/lib/wind/stringprep.py ../heimdal/lib/wind/rfc3454.txt', - target = '../heimdal/lib/wind/map_table.h ../heimdal/lib/wind/map_table.c', - before = 'cc', - name = 'HEIMDAL_MAP_TABLE' + target = '../heimdal/lib/wind/map_table.h ../heimdal/lib/wind/map_table.c' ) -# 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 -# too hard to use a different output dir from input? -# the restriction is we can't modify the existing C source of heimdal. -# ok, symlink hacks to solve? it should be similar to the gen_ndr hackery of PIDL -# 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', source='../heimdal/lib/gssapi/spnego/spnego.asn1', options='--sequence=MechTypeList', + includes='../heimdal/lib/asn1', directory='lib/gssapi' ) bld.SAMBA_ASN1('HEIMDAL_GSSAPI_ASN1', '../heimdal/lib/gssapi/mech/gssapi.asn1', + includes='../heimdal/lib/asn1', directory='lib/gssapi' ) @@ -136,6 +105,7 @@ bld.SAMBA_ASN1('HEIMDAL_CMS_ASN1', bld.SAMBA_ASN1('HEIMDAL_OCSP_ASN1', '../heimdal/lib/hx509/ocsp.asn1', options='--preserve-binary=OCSPTBSRequest --preserve-binary=OCSPResponseData', + includes='../heimdal/lib/asn1', directory='lib/hx509' ) @@ -149,12 +119,14 @@ bld.SAMBA_ASN1('HEIMDAL_KX509_ASN1', bld.SAMBA_ASN1('HEIMDAL_PKCS10_ASN1', '../heimdal/lib/hx509/pkcs10.asn1', options='--preserve-binary=CertificationRequestInfo', + includes='../heimdal/lib/asn1', directory='lib/hx509' ) bld.SAMBA_ASN1('HEIMDAL_HDB_ASN1', '../heimdal/lib/hdb/hdb.asn1', + includes='../heimdal/lib/asn1', directory='lib/hdb' ) @@ -212,17 +184,16 @@ bld.SAMBA_ERRTABLE('HEIMDAL_WIND_ERR_ET', ) -# 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/lib/roken ../heimdal/include ../../lib/socket_wrapper', + includes='../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/kdc', + includes='../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' @@ -231,7 +202,7 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_KDC', bld.SAMBA_SUBSYSTEM('HEIMDAL_NTLM', source='../heimdal/lib/ntlm/ntlm.c', - includes='. ../heimdal/lib/ntlm', + includes='../heimdal/lib/ntlm', heimdal_autoproto='../heimdal/lib/ntlm/heimntlm-protos.h', deps='HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5' ) @@ -239,15 +210,15 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_NTLM', bld.SAMBA_SUBSYSTEM('HEIMDAL_HDB_KEYS', '../heimdal/lib/hdb/keys.c', - includes='. ../heimdal/lib/hdb', + includes='../heimdal/lib/hdb', deps='HEIMDAL_ROKEN HEIMDAL_HCRYPTO HEIMDAL_KRB5 HEIMDAL_HDB_ASN1' ) bld.SAMBA_SUBSYSTEM('HEIMDAL_HDB', - source='''../heimdal/lib/hdb/db.c ../heimdal/lib/hdb/dbinfo.c ../heimdal/lib/hdb/ext.c ../heimdal/lib/hdb/keytab.c + source='''../heimdal/lib/hdb/db.c ../heimdal/lib/hdb/dbinfo.c ../heimdal/lib/hdb/hdb.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/lib/hdb', + includes='../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' @@ -295,16 +266,17 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_GSSAPI', ../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/lib/gssapi ../heimdal/lib/gssapi/gssapi ../heimdal/lib/gssapi/spnego ../heimdal/lib/gssapi/krb5 ../heimdal/lib/gssapi/mech', + includes='../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', - includes='. ../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/lib/com_err', + includes='../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_options='-E KRB5_LIB -q -P comment -o', 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' ) @@ -312,35 +284,35 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_KRB5', 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', - includes='. ../heimdal/lib/asn1', + includes='../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', - includes='. ../heimdal/lib/hcrypto/imath', + includes='../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', - includes='. ../heimdal/lib/hcrypto ../heimdal/lib', + includes='../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', - includes='. ../heimdal/lib/hx509', + includes='../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', - includes='. ../heimdal/lib/wind', + includes='../heimdal/lib/wind', deps='HEIMDAL_ROKEN HEIMDAL_COM_ERR' ) @@ -377,7 +349,7 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_CLOSEFROM_H', 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', - includes='. ../heimdal/lib/roken', + includes='../heimdal/lib/roken', cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1', deps='HEIMDAL_ROKEN_PROGNAME_H HEIMDAL_ROKEN_CLOSEFROM_H resolv LIBREPLACE_NETWORK' ) @@ -385,7 +357,7 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_ROKEN_H', bld.SAMBA_SUBSYSTEM('HEIMDAL_COM_ERR', '../heimdal/lib/com_err/com_err.c ../heimdal/lib/com_err/error.c', - includes='. ../heimdal/lib/com_err', + includes='../heimdal/lib/com_err', deps='HEIMDAL_ROKEN', config_option='HAVE_COM_ERR' ) @@ -395,8 +367,8 @@ bld.SAMBA_SUBSYSTEM('HEIMDAL_COM_ERR', 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_', - includes='. ../heimdal/lib/asn1 ../heimdal/lib/roken', + cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_ -DFOO1', + includes='../heimdal/lib/asn1 ../heimdal/lib/roken', group='build_compilers', deps='HEIMDAL_ROKEN_H replace', ) @@ -406,8 +378,7 @@ 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_', - includes='.', + cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_ -DFOO2', deps='HEIMDAL_ROKEN_H replace' ) @@ -421,6 +392,7 @@ bld.SAMBA_BINARY('samba4kinit', bld.SAMBA_BINARY('samba4kpasswd', '../heimdal/kpasswd/kpasswd.c ../heimdal/lib/vers/print_version.c', + cflags='-DFOO3', includes='../heimdal/lib/roken', deps='HEIMDAL_KRB5 HEIMDAL_NTLM' ) @@ -428,7 +400,8 @@ bld.SAMBA_BINARY('samba4kpasswd', bld.SAMBA_BINARY('rkpty', '../heimdal/lib/roken/rkpty.c ../../lib/socket_wrapper/socket_wrapper.c', - deps='HEIMDAL_ROKEN OPENPTY' + deps='HEIMDAL_ROKEN OPENPTY', + cflags='-DPACKAGE="Samba"' ) HEIMDAL_GSSAPI_SPNEGO_SOURCE = ''' @@ -527,11 +500,11 @@ HEIMDAL_HX509_OBJH_SOURCE = ''' ''' bld.HEIMDAL_AUTOPROTO('../heimdal/lib/hx509/hx509-protos.h', - HEIMDAL_GSSAPI_KRB5_SOURCE, + HEIMDAL_HX509_OBJH_SOURCE, options="-R '^(_|^C)' -E HX509_LIB -q -P comment -o") bld.HEIMDAL_AUTOPROTO('../heimdal/lib/hx509/hx509-private.h', - HEIMDAL_GSSAPI_KRB5_SOURCE, + HEIMDAL_HX509_OBJH_SOURCE, options="-q -P comment -p") HEIMDAL_HEIM_ASN1_DER_SOURCE = ''' diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure index a5a637ec4a..dd31166dd5 100644 --- a/source4/heimdal_build/wscript_configure +++ b/source4/heimdal_build/wscript_configure @@ -39,7 +39,6 @@ conf.CHECK_FUNCS_IN('openpty', 'util') conf.CHECK_FUNCS_IN('gettext', 'intl') -conf.DEFINE('HAVE_COM_ERR',1) conf.DEFINE('HAVE_KRB5',1) conf.DEFINE('HAVE_GSSAPI',1) diff --git a/source4/lib/tls/wscript b/source4/lib/tls/wscript index 24929e4c80..7b30a89215 100644 --- a/source4/lib/tls/wscript +++ b/source4/lib/tls/wscript @@ -15,6 +15,8 @@ def configure(conf): if 'HAVE_GNUTLS' in conf.env and not Options.options.disable_gnutls: conf.DEFINE('ENABLE_GNUTLS', 1) + conf.CHECK_FUNCS_IN('gnutls_global_init', 'gnutls') + conf.CHECK_HEADERS('gnutls/gnutls.h') # check for gnutls_datum types @@ -28,5 +30,5 @@ def configure(conf): def build(bld): bld.SAMBA_SUBSYSTEM('LIBTLS', source='tls.c tlscert.c', - public_deps='talloc GNUTLS GCRYPT LIBSAMBA-HOSTCONFIG samba_socket' + public_deps='talloc gnutls gcrypt LIBSAMBA-HOSTCONFIG samba_socket' ) diff --git a/source4/librpc/idl/wscript_build b/source4/librpc/idl/wscript_build index 6f51a9cc94..3ebe6b8e9e 100644 --- a/source4/librpc/idl/wscript_build +++ b/source4/librpc/idl/wscript_build @@ -2,5 +2,6 @@ bld.SAMBA_PIDL_LIST('PIDL_S4', source='''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''', - options="--includedir=../../librpc/idl" - ) + options="--includedir=../librpc/idl --header --ndr-parser --client --python --server", + output_dir='../gen_ndr') + diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build index 7bafb61725..225a7f172b 100644 --- a/source4/librpc/wscript_build +++ b/source4/librpc/wscript_build @@ -4,7 +4,7 @@ bld.BUILD_SUBDIR('../../librpc/idl') bld.BUILD_SUBDIR('idl') bld.SAMBA_LIBRARY('LIBNDR', - 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', + source='ndr/ndr_string.c ../../librpc/ndr/ndr_basic.c ../../librpc/ndr/uuid.c ../../librpc/ndr/ndr.c ../../librpc/ndr/ndr_misc.c ../../librpc/gen_ndr/ndr_misc.c', # PC_FILES='../librpc/ndr.pc', public_deps='LIBSAMBA-ERRORS talloc LIBSAMBA-UTIL CHARSET LIBSAMBA-HOSTCONFIG', public_headers='../../librpc/ndr/libndr.h PIDL_COMMON/misc.h PIDL_COMMON/ndr_misc.h', @@ -625,6 +625,7 @@ bld.SAMBA_PYTHON('python_winreg', bld.SAMBA_PYTHON('python_dcerpc_misc', source='ndr/py_misc.c', deps='PYTALLOC python_dcerpc NDR_MISC NDR_KRB5PAC', + enabled=False, realname='samba/dcerpc/misc.so' ) @@ -723,6 +724,7 @@ bld.SAMBA_PYTHON('python_drsuapi', bld.SAMBA_PYTHON('python_dcerpc_security', source='ndr/py_security.c', deps='PYTALLOC python_dcerpc_misc python_dcerpc NDR_SECURITY', + enabled=False, realname='samba/dcerpc/security.so' ) @@ -730,6 +732,7 @@ bld.SAMBA_PYTHON('python_dcerpc_security', bld.SAMBA_PYTHON('python_dcerpc_xattr', source='ndr/py_xattr.c', deps='PYTALLOC python_dcerpc_misc python_dcerpc python_dcerpc_security NDR_XATTR RPC_NDR_XATTR', + enabled=False, realname='samba/dcerpc/xattr.so' ) diff --git a/source4/wscript b/source4/wscript index ca2cd68c6a..31bc3070d0 100644 --- a/source4/wscript +++ b/source4/wscript @@ -5,21 +5,19 @@ blddir = 'bin' import sys sys.path.insert(0, srcdir+"/buildtools/wafsamba") -import wafsamba - -LIBREPLACE_DIR= srcdir + '/lib/replace' -LIBLDB_DIR= srcdir + '/source4/lib/ldb' +import wafsamba, Options def set_options(opt): - opt.recurse(LIBREPLACE_DIR) - opt.recurse(LIBLDB_DIR) + opt.recurse('../lib/replace') + opt.recurse('dynconfig') + opt.recurse('scripting/python') + opt.recurse('lib/ldb') opt.recurse('selftest') opt.recurse('lib/tls') opt.recurse('../lib/nss_wrapper') opt.recurse('../lib/socket_wrapper') opt.recurse('../lib/uid_wrapper') - def configure(conf): conf.define('PACKAGE_NAME', 'samba') conf.define('PACKAGE_STRING', 'samba 4') @@ -28,11 +26,33 @@ def configure(conf): conf.define('PACKAGE_VERSION', "4") conf.define('PACKAGE_BUGREPORT', 'samba-technical@samba.org') - conf.DEFINE('_SAMBA_BUILD_', 4) + conf.DEFINE('CONFIG_H_IS_FROM_SAMBA', 1) + conf.DEFINE('_SAMBA_BUILD_', 4, add_to_cflags=True) + conf.DEFINE('HAVE_CONFIG_H', 1, add_to_cflags=True) + if Options.options.developer: + conf.ADD_CFLAGS('-DDEVELOPER -DDEBUG_PASSWORD') + + # set a lower limit on recursing in waf preprocessor + conf.env.preprocessor_recursion_limit = 10 + + # we should use the PIC options in waf instead + conf.ADD_CFLAGS('-fPIC') + + conf.ADD_EXTRA_INCLUDES('#source4 #lib #source4/lib #source4/include #lib/replace #lib/talloc') + + conf.sub_config('../lib/replace') + 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) + + # enable tool to build python extensions + conf.check_tool('python') + conf.check_python_version((2,4,2)) + conf.check_python_headers() + + conf.sub_config('dynconfig') + conf.sub_config('scripting/python') + conf.sub_config('lib/ldb') conf.sub_config('heimdal_build') conf.sub_config('lib/tls') conf.sub_config('ntvfs/sysdep') @@ -44,7 +64,4 @@ def configure(conf): conf.sub_config('../lib/socket_wrapper') conf.sub_config('../lib/uid_wrapper') - conf.DEFINE('CONFIG_H_IS_FROM_SAMBA', 1) - 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') diff --git a/source4/wscript_build b/source4/wscript_build index aa834eea18..a924dad2ee 100644 --- a/source4/wscript_build +++ b/source4/wscript_build @@ -11,40 +11,15 @@ bld.SETUP_BUILD_GROUPS() bld.SAMBA_MKVERSION('version.h') -bld.ENABLE_MAGIC_ORDERING() +# bld.ENABLE_MAGIC_ORDERING() -bld.PREDECLARE('LIBNDR', 'LIBRARY') -bld.PREDECLARE('LIBSAMBA-UTIL', 'LIBRARY') -bld.PREDECLARE('torture', 'LIBRARY') -bld.PREDECLARE('TORTURE_RAW', 'MODULE') -bld.PREDECLARE('TORTURE_RAP', 'MODULE') -bld.PREDECLARE('TORTURE_LDAP', 'MODULE') -bld.PREDECLARE('python_dcerpc_misc', 'PYTHON') -bld.PREDECLARE('python_dcerpc_security', 'PYTHON') -bld.PREDECLARE('pycredentials', 'PYTHON') -bld.PREDECLARE('pyauth', 'PYTHON') -bld.PREDECLARE('gensec', 'LIBRARY') -bld.PREDECLARE('registry', 'LIBRARY') -bld.PREDECLARE('HEIMDAL_HDB_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_SPNEGO_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_GSSAPI_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_KRB5_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_DIGEST_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_PKCS8_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_PKCS9_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_PKCS12_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_RFC2459_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_PKINIT_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_CMS_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_OCSP_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_KX509_ASN1', 'ASN1') -bld.PREDECLARE('HEIMDAL_PKCS10_ASN1', 'ASN1') +bld.TARGET_ALIAS('attr', 'XATTR') +bld.TARGET_ALIAS('execinfo', 'EXECINFO') +bld.TARGET_ALIAS('popt', 'LIBPOPT') # missing subsystems bld.SAMBA_SUBSYSTEM('pyldb_util', '') bld.SAMBA_SUBSYSTEM('pyldb', '') -bld.SAMBA_SUBSYSTEM('LIBPOPT', '') -bld.SAMBA_SUBSYSTEM('LIBCLI_SMB2', '') bld.SAMBA_SUBSYSTEM('dcerpc_mgmt', '') bld.SAMBA_SUBSYSTEM('TORTURE_LDB_MODULE', '') bld.SAMBA_SUBSYSTEM('INTL', '') @@ -52,32 +27,23 @@ bld.SAMBA_SUBSYSTEM('NDR_SAMR', '') bld.SAMBA_SUBSYSTEM('LIBLDB_CMDLINE', '') bld.SAMBA_SUBSYSTEM('NETAPI', '') bld.SAMBA_SUBSYSTEM('HDB_LDB', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') bld.SAMBA_SUBSYSTEM('SMBREADLINE', '') bld.SAMBA_SUBSYSTEM('OPENPTY', '') bld.SAMBA_SUBSYSTEM('SMBCLIENT', '') bld.SAMBA_SUBSYSTEM('BLKID', '') bld.SAMBA_SUBSYSTEM('LIBTEVENT_EXT', '') -bld.SAMBA_SUBSYSTEM('LIBTEVENT_EXT', '') bld.SAMBA_SUBSYSTEM('PTHREAD', '') bld.SAMBA_SUBSYSTEM('CRYPT', '') bld.SAMBA_SUBSYSTEM('PAM', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') bld.SAMBA_SUBSYSTEM('SASL', '') bld.SAMBA_SUBSYSTEM('smbcalls', '') -bld.SAMBA_SUBSYSTEM('SMBREADLINE', '') -bld.SAMBA_SUBSYSTEM('SMBREADLINE', '') bld.SAMBA_SUBSYSTEM('SETPROCTITLE', '') bld.SAMBA_SUBSYSTEM('ZLIB', '') bld.SAMBA_SUBSYSTEM('NDR_SRVSVC', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') -bld.SAMBA_SUBSYSTEM('SETPROCTITLE', '') -bld.SAMBA_SUBSYSTEM('HDB_LDB', '') bld.SAMBA_SUBSYSTEM('ICONV', '') bld.SAMBA_SUBSYSTEM('NDR_MISC', '') bld.SAMBA_SUBSYSTEM('SCHANNELDB', '') +bld.SAMBA_SUBSYSTEM('DCOM_PROXY_DCOM', '') bld.BUILD_SUBDIR('../lib/replace') @@ -149,5 +115,5 @@ bld.BUILD_SUBDIR('../libgpo') bld.BUILD_SUBDIR('../libcli/named_pipe_auth') bld.BUILD_SUBDIR('heimdal_build') -bld.CHECK_DEPENDENCIES() bld.ENFORCE_GROUP_ORDERING() +bld.CHECK_ORPANED_TARGETS() |