#! /usr/bin/env python srcdir = '..' blddir = 'bin' import sys sys.path.insert(0, srcdir+"/buildtools/wafsamba") import wafsamba, Options def set_options(opt): 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') conf.define('PACKAGE_TARNAME', 'samba') conf.define('PACKAGE_URL', "") conf.define('PACKAGE_VERSION', "4") conf.define('PACKAGE_BUGREPORT', 'samba-technical@samba.org') 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 conf.ADD_EXTRA_INCLUDES('#source4 #lib #source4/lib #source4/include #lib/replace #lib/talloc #lib/tevent') conf.sub_config('../lib/replace') conf.find_program('python', var='PYTHON', mandatory=True) conf.find_program('perl', var='PERL', mandatory=True) # 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') conf.sub_config('../lib/util') conf.sub_config('../lib/zlib') conf.sub_config('../lib/util/charset') conf.sub_config('auth') conf.sub_config('../lib/nss_wrapper') conf.sub_config('../lib/socket_wrapper') conf.sub_config('../lib/uid_wrapper') conf.sub_config('lib/smbreadline') conf.SAMBA_CONFIG_H('include/config.h') from TaskGen import feature, before, after kak = {} @feature('cc', 'cxx') @after('apply_type_vars', 'apply_lib_vars', 'apply_core') def apply_incpaths(self): """used by the scanner after processing the uselib for CPPPATH after apply_core because some processing may add include paths """ lst = [] # TODO move the uselib processing out of here for lib in self.to_list(self.uselib): for path in self.env['CPPPATH_' + lib]: if not path in lst: lst.append(path) if preproc.go_absolute: for path in preproc.standard_includes: if not path in lst: lst.append(path) for path in self.to_list(self.includes): if not path in lst: if preproc.go_absolute or not os.path.isabs(path): lst.append(path) else: self.env.prepend_value('CPPPATH', path) for path in lst: try: #print len(kak.items()) node = kak[(self.path.id, path)] except KeyError: node = None if os.path.isabs(path): if preproc.go_absolute: node = self.bld.root.find_dir(path) elif path[0] == '#': node = self.bld.srcnode if len(path) > 1: node = node.find_dir(path[1:]) else: node = self.path.find_dir(path) kak[(self.path.id, path)] = node if node: self.env.append_value('INC_PATHS', node) # TODO WAF 1.6 if USE_TOP_LEVEL: self.env.append_value('INC_PATHS', self.bld.srcnode) cac = {} @feature('cc') @after('apply_incpaths') def apply_obj_vars_cc(self): """after apply_incpaths for INC_PATHS""" env = self.env app = env.append_unique cpppath_st = env['CPPPATH_ST'] global cac # local flags come first # set the user-defined includes paths for i in env['INC_PATHS']: try: app('_CCINCFLAGS', cac[i.id]) except KeyError: cac[i.id] = [cpppath_st % i.bldpath(env), cpppath_st % i.srcpath(env)] app('_CCINCFLAGS', cac[i.id]) # set the library include paths for i in env['CPPPATH']: app('_CCINCFLAGS', cpppath_st % i)