return task cxx_str = '${CXX} ${CXXFLAGS} ${CPPFLAGS} ${_CXXINCFLAGS} ${_CXXDEFFLAGS} ${CXX_SRC_F}${SRC} ${CXX_TGT_F}${TGT}' cls = Task.simple_task_type('cxx', cxx_str, color='GREEN', ext_out='.o', ext_in='.cxx', shell=False) cls.scan = ccroot.scan cls.vars.append('CXXDEPS') link_str = '${LINK_CXX} ${CXXLNK_SRC_F}${SRC} ${CXXLNK_TGT_F}${TGT[0].abspath(env)} ${LINKFLAGS}' cls = Task.simple_task_type('cxx_link', link_str, color='YELLOW', ext_in='.o', ext_out='.bin', shell=False) cls.maxjobs = 1 cls.install = Utils.nada feature('cxx')(init_cxx) before('apply_type_vars')(init_cxx) after('default_cc')(init_cxx) feature('cxx')(apply_obj_vars_cxx) after('apply_incpaths')(apply_obj_vars_cxx) feature('cxx')(apply_defines_cxx) after('apply_lib_vars')(apply_defines_cxx) extension(EXT_CXX)(cxx_hook)
task.inputs = [node] task.outputs = [node.change_ext(obj_ext)] self.compiled_tasks.append(task) self.meths.append('asm_incflags') def asm_incflags(self): if self.env['ASINCFLAGS']: self.env['_ASINCFLAGS'] = self.env['ASINCFLAGS'] if 'cxx' in self.features: self.env['_ASINCFLAGS'] = self.env['_CXXINCFLAGS'] else: self.env['_ASINCFLAGS'] = self.env['_CCINCFLAGS'] def detect(conf): comp = conf.environ.get('AS', '') if not comp: comp = conf.env['AS'] if not comp: comp = conf.find_program('as', var='AS') if not comp: comp = conf.find_program('gas', var='AS') if not comp: comp = conf.env['CC'] if not comp: return v = conf.env v['ASFLAGS'] = '' extension(EXT_ASM)(asm_hook) taskgen(asm_incflags) after('apply_obj_vars_cc')(asm_incflags) after('apply_obj_vars_cxx')(asm_incflags) before('apply_link')(asm_incflags)
conf.env['POCOM']=pocom intltool=conf.find_program('intltool-merge',var='INTLTOOL') if not intltool: if Options.platform=='win32': perl=conf.find_program('perl',var='PERL') if not perl: conf.fatal('The program perl (required by intltool) could not be found') intltooldir=Configure.find_file('intltool-merge',os.environ['PATH'].split(os.pathsep)) if not intltooldir: conf.fatal('The program intltool-merge (intltool, gettext-devel) is mandatory!') conf.env['INTLTOOL']=Utils.to_list(conf.env['PERL'])+[intltooldir+os.sep+'intltool-merge'] conf.check_message('intltool','',True,' '.join(conf.env['INTLTOOL'])) else: conf.fatal('The program intltool-merge (intltool, gettext-devel) is mandatory!') def getstr(varname): return getattr(Options.options,varname,'') prefix=conf.env['PREFIX'] datadir=getstr('datadir') if not datadir:datadir=os.path.join(prefix,'share') conf.define('LOCALEDIR',os.path.join(datadir,'locale')) conf.define('DATADIR',datadir) if conf.env['CC']or conf.env['CXX']: conf.check(header_name='locale.h') def set_options(opt): opt.add_option('--want-rpath',type='int',default=1,dest='want_rpath',help='set rpath to 1 or 0 [Default 1]') opt.add_option('--datadir',type='string',default='',dest='datadir',help='read-only application data') before('apply_core')(iapply_intltool_in_f) feature('intltool_in')(iapply_intltool_in_f) feature('intltool_po')(apply_intltool_po)
kw['env'] = env return self.generator.bld.exec_command(*k, **kw) for k in 'cc cxx winrc cc_link cxx_link static_link qxx'.split(): cls = Task.TaskBase.classes.get(k, None) if cls: cls.exec_command = exec_command_msvc conf(get_msvc_version) conf(gather_wsdk_versions) conf(gather_msvc_versions) conf(gather_icl_versions) conf(get_msvc_versions) conf(print_all_msvc_detected) conf(find_lt_names_msvc) conf(libname_msvc) conf(check_lib_msvc) conf(check_libs_msvc) conftest(no_autodetect) conftest(autodetect) conftest(find_msvc) conftest(msvc_common_flags) after('apply_link')(apply_flags_msvc) feature('cc', 'cxx')(apply_flags_msvc) feature('cprogram', 'cshlib', 'cstaticlib')(apply_obj_vars_msvc) after('apply_lib_vars')(apply_obj_vars_msvc) before('apply_obj_vars')(apply_obj_vars_msvc) feature('cprogram', 'cshlib')(apply_manifest) after('apply_link')(apply_manifest)
) conf.env['OCAMLC'] = occ conf.env['OCAMLOPT'] = opt conf.env['OCAMLLEX'] = conf.find_program('ocamllex', var='OCAMLLEX') conf.env['OCAMLYACC'] = conf.find_program('ocamlyacc', var='OCAMLYACC') conf.env['OCAMLFLAGS'] = '' conf.env['OCAMLLIB'] = Utils.cmd_output(conf.env['OCAMLC'] + ' -where').strip() + os.sep conf.env['LIBPATH_OCAML'] = Utils.cmd_output(conf.env['OCAMLC'] + ' -where').strip() + os.sep conf.env['CPPPATH_OCAML'] = Utils.cmd_output(conf.env['OCAMLC'] + ' -where').strip() + os.sep conf.env['LIB_OCAML'] = 'camlrun' feature('ocaml')(init_ml) feature('ocaml')(init_envs_ml) after('init_ml')(init_envs_ml) feature('ocaml')(apply_incpaths_ml) before('apply_vars_ml')(apply_incpaths_ml) after('init_envs_ml')(apply_incpaths_ml) feature('ocaml')(apply_vars_ml) before('apply_core')(apply_vars_ml) feature('ocaml')(apply_link_ml) after('apply_core')(apply_link_ml) extension(EXT_MLL)(mll_hook) extension(EXT_MLY)(mly_hook) extension(EXT_MLI)(mli_hook) extension(EXT_MLC)(mlc_hook) extension(EXT_ML)(ml_hook)
os.chmod(tgt, task.chmod) return 0 def apply_tar(self): Utils.def_attrs(self, fun=tar_up) self.default_install_path = 0 lst = self.to_list(self.source) self.meths.remove("apply_core") self.dict = getattr(self, "dict", {}) out = self.path.find_or_declare(self.target) ins = [] for x in Utils.to_list(self.source): node = self.path.find_resource(x) if not node: raise Utils.WafError("cannot find input file %s for processing" % x) ins.append(node) tsk = self.create_task("tar", ins, out) tsk.fun = self.fun tsk.dict = self.dict tsk.install_path = self.install_path tsk.chmod = self.chmod if not tsk.env: tsk.debug() raise Utils.WafError("task without an environment") Task.task_type_from_func("tar", func=tar_up) feature("tar")(apply_tar) before("apply_core")(apply_tar)
z.addfile(ti,fileobj=f) f.close() z.close() if task.chmod: os.chmod(tgt,task.chmod) return 0 def apply_tar(self): Utils.def_attrs(self,fun=tar_up) self.default_install_path=0 lst=self.to_list(self.source) self.meths.remove('apply_core') self.dict=getattr(self,'dict',{}) out = self.path.find_or_declare(self.target) ins = [] for x in Utils.to_list(self.source): node = self.path.find_resource(x) if not node:raise Utils.WafError('cannot find input file %s for processing'%x) ins.append(node) tsk=self.create_task('tar',ins,out) tsk.fun=self.fun tsk.dict=self.dict tsk.install_path=self.install_path tsk.chmod=self.chmod if not tsk.env: tsk.debug() raise Utils.WafError('task without an environment') Task.task_type_from_func('tar',func=tar_up) feature('tar')(apply_tar) before('apply_core')(apply_tar)
cls = Task.task_type_from_func('vnum', func=exec_vnum_link, ext_in='.bin', color='CYAN') cls.quiet = 1 def add_as_needed(conf): if conf.env.DEST_BINFMT == 'elf' and 'gcc' in (conf.env.CXX_NAME, conf.env.CC_NAME): conf.env.append_unique('LINKFLAGS', '--as-needed') feature('cc', 'cxx')(default_cc) before('apply_core')(default_cc) feature('cprogram', 'dprogram', 'cstaticlib', 'dstaticlib', 'cshlib', 'dshlib')(apply_verif) feature('cprogram', 'dprogram')(vars_target_cprogram) after('default_cc')(vars_target_cprogram) before('apply_core')(vars_target_cprogram) after('default_cc')(vars_target_cshlib) feature('cshlib', 'dshlib')(vars_target_cshlib) before('apply_core')(vars_target_cshlib) feature('cprogram', 'dprogram', 'cstaticlib', 'dstaticlib', 'cshlib', 'dshlib')(default_link_install) after('apply_link', 'vars_target_cprogram', 'vars_target_cshlib')(default_link_install) feature('cc', 'cxx')(apply_incpaths) after('apply_type_vars', 'apply_lib_vars', 'apply_core')(apply_incpaths) feature('cc', 'cxx')(apply_type_vars)
v = conf.env binfmt = v.DEST_BINFMT or Utils.unversioned_sys_platform_to_binary_format( v.DEST_OS or Utils.unversioned_sys_platform() ) if binfmt == "pe": v["D_program_PATTERN"] = "%s.exe" v["D_shlib_PATTERN"] = "lib%s.dll" v["D_staticlib_PATTERN"] = "lib%s.a" else: v["D_program_PATTERN"] = "%s" v["D_shlib_PATTERN"] = "lib%s.so" v["D_staticlib_PATTERN"] = "lib%s.a" feature("d")(init_d) before("apply_type_vars")(init_d) feature("d")(init_d) before("apply_d_libs")(init_d) feature("d")(apply_d_libs) after("apply_d_link", "init_d")(apply_d_libs) before("apply_vnum")(apply_d_libs) feature("dprogram", "dshlib", "dstaticlib")(apply_d_link) after("apply_core")(apply_d_link) feature("d")(apply_d_vars) after("apply_core")(apply_d_vars) feature("dshlib")(add_shlib_d_flags) after("apply_d_vars")(add_shlib_d_flags) extension(EXT_D)(d_hook) taskgen(generate_header) before("apply_core")(process_header) conftest(d_platform_flags)
if isinstance(filt, str): (pat, _, _) = filt.partition('.') if pat == '*': return True return pat == targ return False def test_remover(self): if not Options.options.check and not Options.options.checkall and self.target != Options.options.checkone and not match_filter( Options.options.checkfilter, self.target): self.meths[:] = [] feature('testt', 'gtest')(test_remover) before('apply_core')(test_remover) def make_test(self): if not 'cprogram' in self.features: Logs.error('test cannot be executed %s' % self) return self.default_install_path = None self.create_task('utest', self.link_task.outputs) feature('testt', 'gtest')(make_test) after('apply_link', 'vars_target_cprogram')(make_test) def gtest_attach(self):
if'ps'in outs: tsk=self.create_task('dvips',task.outputs,node.change_ext('.ps')) tsk.env.env={'TEXINPUTS':node.parent.abspath()+':'+self.path.abspath()+':'+self.path.abspath(self.env)} if'pdf'in outs: tsk=self.create_task('dvipdf',task.outputs,node.change_ext('.pdf')) tsk.env.env={'TEXINPUTS':node.parent.abspath()+':'+self.path.abspath()+':'+self.path.abspath(self.env)} elif self.type=='pdflatex': if'ps'in outs: self.create_task('pdf2ps',task.outputs,node.change_ext('.ps')) self.source=[] def detect(conf): v=conf.env for p in'tex latex pdflatex bibtex dvips dvipdf ps2pdf makeindex pdf2ps'.split(): conf.find_program(p,var=p.upper()) v[p.upper()+'FLAGS']='' v['DVIPSFLAGS']='-Ppdf' b=Task.simple_task_type b('tex','${TEX} ${TEXFLAGS} ${SRC}',color='BLUE',shell=False) b('bibtex','${BIBTEX} ${BIBTEXFLAGS} ${SRC}',color='BLUE',shell=False) b('dvips','${DVIPS} ${DVIPSFLAGS} ${SRC} -o ${TGT}',color='BLUE',after="latex pdflatex tex bibtex",shell=False) b('dvipdf','${DVIPDF} ${DVIPDFFLAGS} ${SRC} ${TGT}',color='BLUE',after="latex pdflatex tex bibtex",shell=False) b('pdf2ps','${PDF2PS} ${PDF2PSFLAGS} ${SRC} ${TGT}',color='BLUE',after="dvipdf pdflatex",shell=False) b=Task.task_type_from_func cls=b('latex',latex_build,vars=latex_vardeps) cls.scan=scan cls=b('pdflatex',pdflatex_build,vars=pdflatex_vardeps) cls.scan=scan feature('tex')(apply_tex) before('apply_core')(apply_tex)
self.env['_ASSEMBLIES'] += assemblies_flags for i in self.to_list(self.resources): self.env['_RESOURCES'].append('/resource:' + i) self.env['_FLAGS'] += self.to_list(self.flags) + self.env['FLAGS'] curnode = self.path nodes = [] for i in self.to_list(self.source): nodes.append(curnode.find_resource(i)) task = self.create_task('mcs') task.inputs = nodes task.set_outputs(self.path.find_or_declare(self.target)) Task.simple_task_type( 'mcs', '${MCS} ${SRC} /out:${TGT} ${_FLAGS} ${_ASSEMBLIES} ${_RESOURCES}', color='YELLOW') def detect(conf): mcs = conf.find_program('mcs', var='MCS') if not mcs: mcs = conf.find_program('gmcs', var='MCS') feature('cs')(init_cs) feature('cs')(apply_uselib_cs) after('init_cs')(apply_uselib_cs) feature('cs')(apply_cs) after('apply_uselib_cs')(apply_cs) before('apply_core')(apply_cs)
self.dbus_lst.append([filename, prefix, mode]) def process_dbus(self): for filename, prefix, mode in getattr(self, 'dbus_lst', []): env = self.env.copy() node = self.path.find_resource(filename) if not node: raise Utils.WafError('file not found ' + filename) env['DBUS_BINDING_TOOL_PREFIX'] = prefix env['DBUS_BINDING_TOOL_MODE'] = mode task = self.create_task('dbus_binding_tool', env) task.set_inputs(node) task.set_outputs(node.change_ext('.h')) Task.simple_task_type( 'dbus_binding_tool', '${DBUS_BINDING_TOOL} --prefix=${DBUS_BINDING_TOOL_PREFIX} --mode=${DBUS_BINDING_TOOL_MODE} --output=${TGT} ${SRC}', color='BLUE', before='cc') def detect(conf): dbus_binding_tool = conf.find_program('dbus-binding-tool', var='DBUS_BINDING_TOOL') taskgen(add_dbus_file) before('apply_core')(process_dbus)
return 0 def plist_build(task): env = task.env f = open(task.outputs[0].abspath(env), "w") f.write(task.mac_plist) f.close() return 0 Task.task_type_from_func("macapp", vars=[], func=app_build, after="cxx_link cc_link static_link") Task.task_type_from_func("macplist", vars=[], func=plist_build, after="cxx_link cc_link static_link") feature("cc", "cxx")(set_macosx_deployment_target) before("apply_lib_vars")(set_macosx_deployment_target) feature("cc", "cxx")(apply_framework) after("apply_lib_vars")(apply_framework) taskgen(create_bundle_dirs) taskgen(create_task_macapp) after("apply_link")(create_task_macapp) feature("cprogram")(create_task_macapp) after("apply_link")(create_task_macplist) feature("cprogram")(create_task_macplist) after("apply_link")(apply_link_osx) feature("cshlib")(apply_link_osx) before("apply_link", "apply_lib_vars")(apply_bundle) feature("cc", "cxx")(apply_bundle) after("apply_link")(apply_bundle_remove_dynamiclib) feature("cshlib")(apply_bundle_remove_dynamiclib)
self.obj_files.append(file) def make_objects_available(self): self.out_nodes=[] app=self.out_nodes.append for t in self.compiled_tasks:app(t.outputs[0]) c_attrs={'cxxflag':'CXXFLAGS','cflag':'CCFLAGS','ccflag':'CCFLAGS','linkflag':'LINKFLAGS','ldflag':'LINKFLAGS','lib':'LIB','libpath':'LIBPATH','staticlib':'STATICLIB','staticlibpath':'STATICLIBPATH','rpath':'RPATH',} def add_extra_flags(self): for x in self.__dict__.keys(): y=x.lower() if y[-1]=='s': y=y[:-1] if c_attrs.get(y,None): self.env.append_unique(c_attrs[y],getattr(self,x)) feature('cc','cxx')(default_cc) before('init_cc','init_cxx')(default_cc) feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(apply_verif) feature('cprogram','dprogram')(vars_target_cprogram) before('apply_core')(vars_target_cprogram) feature('cstaticlib','dstaticlib','cshlib','dshlib')(vars_target_cstaticlib) before('apply_core')(vars_target_cstaticlib) feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(install_target_cstaticlib) after('apply_objdeps','apply_link')(install_target_cstaticlib) feature('cshlib','dshlib')(install_target_cshlib) after('apply_objdeps','apply_link')(install_target_cshlib) feature('cc','cxx')(apply_incpaths) after('apply_type_vars')(apply_incpaths) feature('cc','cxx')(apply_type_vars) taskgen(apply_link) feature('cprogram','cshlib','cstaticlib')(apply_link) after('apply_core')(apply_link)
def asm_incflags(self): if self.env["ASINCFLAGS"]: self.env["_ASINCFLAGS"] = self.env["ASINCFLAGS"] if "cxx" in self.features: self.env["_ASINCFLAGS"] = self.env["_CXXINCFLAGS"] else: self.env["_ASINCFLAGS"] = self.env["_CCINCFLAGS"] def detect(conf): comp = os.environ.get("AS", "") if not comp: comp = conf.find_program("as", var="AS") if not comp: comp = conf.find_program("gas", var="AS") if not comp: comp = conf.env["CC"] if not comp: return v = conf.env v["ASFLAGS"] = "" extension(EXT_ASM)(asm_hook) taskgen(asm_incflags) after("apply_obj_vars_cc")(asm_incflags) after("apply_obj_vars_cxx")(asm_incflags) before("apply_link")(asm_incflags)
debug_level=Options.options.debug_level.upper() except AttributeError: debug_level=ccroot.DEBUG_LEVELS.CUSTOM v['CCFLAGS']+=v['CCFLAGS_'+debug_level] v['CXXFLAGS']+=v['CXXFLAGS_'+debug_level] v['LINKFLAGS']+=v['LINKFLAGS_'+debug_level] v['shlib_CCFLAGS']=[''] v['shlib_CXXFLAGS']=[''] v['shlib_LINKFLAGS']=['/DLL'] v['shlib_PATTERN']='%s.dll' v['staticlib_LINKFLAGS']=[''] v['staticlib_PATTERN']='%s.lib' v['program_PATTERN']='%s.exe' def set_options(opt): opt.add_option('-d','--debug-level',action='store',default=ccroot.DEBUG_LEVELS.DEBUG,help="Specify the debug level, does nothing if CFLAGS is set in the environment. [Allowed Values: '%s']"%"', '".join(ccroot.DEBUG_LEVELS.ALL),choices=ccroot.DEBUG_LEVELS.ALL,dest='debug_level') taskgen(apply_msvc_obj_vars) feature('cc','cxx')(apply_msvc_obj_vars) after('apply_obj_vars_cc')(apply_msvc_obj_vars) after('apply_obj_vars_cxx')(apply_msvc_obj_vars) taskgen(apply_link_msvc) feature('cc','cxx')(apply_link_msvc) after('apply_core')(apply_link_msvc) before('apply_obj_vars_cc')(apply_link_msvc) before('apply_obj_vars_cxx')(apply_link_msvc) taskgen(init_msvc) feature('cc','cxx')(init_msvc) before('apply_core')(init_msvc) conftest(find_msvc) conftest(msvc_common_flags)
if enum[param]: options.append('%s %r' % (option, enum[param])) env['GLIB_MKENUMS_OPTIONS'] = ' '.join(options) task.set_inputs(inputs) task.set_outputs(tgt_node) Task.task_type_from_func('glib_genmarshal', func=genmarshal_func, vars=['GLIB_GENMARSHAL_PREFIX', 'GLIB_GENMARSHAL'], color='BLUE', before='cc') Task.simple_task_type( 'glib_mkenums', '${GLIB_MKENUMS} ${GLIB_MKENUMS_OPTIONS} ${GLIB_MKENUMS_SOURCE} > ${GLIB_MKENUMS_TARGET}', color='PINK', before='cc') def detect(conf): glib_genmarshal = conf.find_program('glib-genmarshal', var='GLIB_GENMARSHAL') mk_enums_tool = conf.find_program('glib-mkenums', var='GLIB_MKENUMS') taskgen(add_marshal_file) before('apply_core')(process_marshal) taskgen(add_enums_from_template) taskgen(add_enums) before('apply_core')(process_enums)
def nasm_file(self, node): try: obj_ext = self.obj_ext except AttributeError: obj_ext = '_%d.o' % self.idx task = self.create_task('nasm') task.inputs = [node] task.outputs = [node.change_ext(obj_ext)] self.compiled_tasks.append(task) self.meths.append('apply_nasm_vars') Task.simple_task_type('nasm', nasm_str, color='BLUE', ext_out='.o', shell=False) def detect(conf): nasm = conf.find_program('nasm', var='NASM') if not nasm: nasm = conf.find_program('yasm', var='NASM') if not nasm: conf.fatal( 'could not find nasm (or yasm), install it or set PATH env var') before('apply_link')(apply_nasm_vars) extension(EXT_NASM)(nasm_file)
def d_platform_flags(conf): v = conf.env binfmt = v.DEST_BINFMT or Utils.unversioned_sys_platform_to_binary_format( v.DEST_OS or Utils.unversioned_sys_platform()) if binfmt == 'pe': v['D_program_PATTERN'] = '%s.exe' v['D_shlib_PATTERN'] = 'lib%s.dll' v['D_staticlib_PATTERN'] = 'lib%s.a' else: v['D_program_PATTERN'] = '%s' v['D_shlib_PATTERN'] = 'lib%s.so' v['D_staticlib_PATTERN'] = 'lib%s.a' feature('d')(init_d) before('apply_type_vars')(init_d) feature('d')(init_d) before('apply_d_libs')(init_d) feature('d')(apply_d_libs) after('apply_d_link', 'init_d')(apply_d_libs) before('apply_vnum')(apply_d_libs) feature('dprogram', 'dshlib', 'dstaticlib')(apply_d_link) after('apply_core')(apply_d_link) feature('d')(apply_d_vars) after('apply_core')(apply_d_vars) feature('dshlib')(add_shlib_d_flags) after('apply_d_vars')(add_shlib_d_flags) extension(EXT_D)(d_hook) taskgen(generate_header) before('apply_core')(process_header) conftest(d_platform_flags)
'print "$Config{privlib}/ExtUtils/xsubpp$Config{exe_ext}"') conf.env.EXTUTILS_TYPEMAP = read_out( 'print "$Config{privlib}/ExtUtils/typemap"') conf.env.perlext_PATTERN = '%s.' + read_out('print $Config{dlext}')[0] if getattr(Options.options, 'perlarchdir', None): conf.env.ARCHDIR_PERL = Options.options.perlarchdir else: conf.env.ARCHDIR_PERL = read_out('print $Config{sitearch}')[0] def set_options(opt): opt.add_option("--with-perl-binary", type="string", dest="perlbinary", help='Specify alternate perl binary', default=None) opt.add_option( "--with-perl-archdir", type="string", dest="perlarchdir", help='Specify directory where to install arch specific files', default=None) before('apply_incpaths', 'apply_type_vars', 'apply_lib_vars')(init_perlext) feature('perlext')(init_perlext) extension(EXT_XS)(xsubpp_file) conf(check_perl_version) conf(check_perl_module) conf(check_perl_ext_devel)
task.outputs=[node.change_ext(obj_ext)] try: self.compiled_tasks.append(task) except AttributeError: raise Utils.WafError('Have you forgotten to set the feature "cxx" on %s?'%str(self)) return task cxx_str='${CXX} ${CXXFLAGS} ${CPPFLAGS} ${_CXXINCFLAGS} ${_CXXDEFFLAGS} ${CXX_SRC_F}${SRC} ${CXX_TGT_F}${TGT}' cls=Task.simple_task_type('cxx',cxx_str,color='GREEN',ext_out='.o',ext_in='.cxx',shell=False) cls.scan=ccroot.scan cls.vars.append('CXXDEPS') link_str='${LINK_CXX} ${CXXLNK_SRC_F}${SRC} ${CXXLNK_TGT_F}${TGT} ${LINKFLAGS}' cls=Task.simple_task_type('cxx_link',link_str,color='YELLOW',ext_in='.o',shell=False) cls.maxjobs=1 cls2=Task.task_type_from_func('vnum_cxx_link',ccroot.link_vnum,cls.vars,color='CYAN',ext_in='.o') cls2.maxjobs=1 link_str='${LINK_CXX} ${CXXLNK_SRC_F}${SRC} ${CXXLNK_TGT_F}${TGT[0].abspath(env)} ${LINKFLAGS}' cls=Task.simple_task_type('dll_cxx_link',link_str,color='YELLOW',ext_in='.o',shell=False) cls.maxjobs=1 old=cls.run def run(self):return old(self)or ccroot.post_dll_link(self) cls.run=run feature('cxx')(init_cxx) before('apply_type_vars')(init_cxx) after('default_cc')(init_cxx) feature('cxx')(apply_obj_vars_cxx) after('apply_incpaths')(apply_obj_vars_cxx) feature('cxx')(apply_defines_cxx) after('apply_lib_vars')(apply_defines_cxx) extension(EXT_CXX)(cxx_hook)
ltf = libtool_config(args[0]) if options.debug: print(ltf) if options.atleast_version: if ltf >= options.atleast_version: return 0 sys.exit(1) if options.exact_version: if ltf == options.exact_version: return 0 sys.exit(1) if options.max_version: if ltf <= options.max_version: return 0 sys.exit(1) def p(x): print(" ".join(x)) if options.libs: p(ltf.get_libs()) elif options.libs_only_l: p(ltf.get_libs_only_l()) elif options.libs_only_L: p(ltf.get_libs_only_L()) elif options.libs_only_other: p(ltf.get_libs_only_other()) return 0 if __name__ == '__main__': useCmdLine() feature("libtool")(apply_link_libtool) after('apply_link')(apply_link_libtool) feature("libtool")(apply_libtool) before('apply_core')(apply_libtool)
dep.post() for dep_task in dep.tasks: task.set_run_after(dep_task) if not task.inputs: task.runnable_status = type(Task.TaskBase.run)(runnable_status, task, task.__class__) task.post_run = type(Task.TaskBase.run)(post_run, task, task.__class__) def post_run(self): for x in self.outputs: h = Utils.h_file(x.abspath(self.env)) self.generator.bld.node_sigs[self.env.variant()][x.id] = h def runnable_status(self): return Constants.RUN_ME Task.task_type_from_func('copy', vars=[], func=action_process_file_func) TaskGen.task_gen.classes['command-output'] = cmd_output_taskgen feature('cmd')(apply_cmd) feature('copy')(apply_copy) before('apply_core')(apply_copy) feature('subst')(apply_subst) before('apply_core')(apply_subst) feature('command-output')(init_cmd_output) feature('command-output')(apply_cmd_output) after('init_cmd_output')(apply_cmd_output)
conf.env.CCFLAGS_RUBYEXT=read_config("CCDLFLAGS") conf.env.rubyext_PATTERN='%s.'+read_config('DLEXT')[0] flags=read_config('LDSHARED') while flags and flags[0][0]!='-': flags=flags[1:] if len(flags)>1 and flags[1]=="ppc": flags=flags[2:] conf.env.LINKFLAGS_RUBYEXT=flags conf.env.LINKFLAGS_RUBYEXT+=read_config("LIBS") conf.env.LINKFLAGS_RUBYEXT+=read_config("LIBRUBYARG_SHARED") if Options.options.rubyarchdir: conf.env.ARCHDIR_RUBY=Options.options.rubyarchdir else: conf.env.ARCHDIR_RUBY=read_config('sitearchdir')[0] if Options.options.rubylibdir: conf.env.LIBDIR_RUBY=Options.options.rubylibdir else: conf.env.LIBDIR_RUBY=read_config('sitelibdir')[0] def set_options(opt): opt.add_option('--with-ruby-archdir',type='string',dest='rubyarchdir',help='Specify directory where to install arch specific files') opt.add_option('--with-ruby-libdir',type='string',dest='rubylibdir',help='Specify alternate ruby library path') opt.add_option('--with-ruby-binary',type='string',dest='rubybinary',help='Specify alternate ruby binary') feature('rubyext')(init_rubyext) before('apply_incpaths','apply_type_vars','apply_lib_vars','apply_bundle')(init_rubyext) after('default_cc','vars_target_cshlib')(init_rubyext) feature('rubyext')(apply_ruby_so_name) before('apply_link')(apply_ruby_so_name) conf(check_ruby_version) conf(check_ruby_ext_devel)
) def getstr(varname): return getattr(Options.options, varname, '') prefix = conf.env['PREFIX'] datadir = getstr('datadir') if not datadir: datadir = os.path.join(prefix, 'share') conf.define('LOCALEDIR', os.path.join(datadir, 'locale')) conf.define('DATADIR', datadir) if conf.env['CC'] or conf.env['CXX']: conf.check(header_name='locale.h') def set_options(opt): opt.add_option('--want-rpath', type='int', default=1, dest='want_rpath', help='set rpath to 1 or 0 [Default 1]') opt.add_option('--datadir', type='string', default='', dest='datadir', help='read-only application data') before('apply_core')(iapply_intltool_in_f) feature('intltool_in')(iapply_intltool_in_f) feature('intltool_po')(apply_intltool_po)
val=self.env[v+'_'+var] if val:self.env.append_value(v,val) def apply_cs(self): try:self.meths.remove('apply_core') except ValueError:pass assemblies_flags=[] for i in self.to_list(self.assemblies)+self.env['ASSEMBLIES']: assemblies_flags+='/r:'+i self.env['_ASSEMBLIES']+=assemblies_flags for i in self.to_list(self.resources): self.env['_RESOURCES'].append('/resource:'+i) self.env['_FLAGS']+=self.to_list(self.flags)+self.env['FLAGS'] curnode=self.path nodes=[] for i in self.to_list(self.source): nodes.append(curnode.find_resource(i)) task=self.create_task('mcs') task.inputs=nodes task.set_outputs(self.path.find_or_declare(self.target)) Task.simple_task_type('mcs','${MCS} ${SRC} /out:${TGT} ${_FLAGS} ${_ASSEMBLIES} ${_RESOURCES}',color='YELLOW') def detect(conf): mcs=conf.find_program('mcs',var='MCS') if not mcs:mcs=conf.find_program('gmcs',var='MCS') feature('cs')(init_cs) feature('cs')(apply_uselib_cs) after('init_cs')(apply_uselib_cs) feature('cs')(apply_cs) after('apply_uselib_cs')(apply_cs) before('apply_core')(apply_cs)
self.meths.remove('apply_core') self.dict = getattr(self, 'dict', {}) out = self.path.find_or_declare(self.target) ins = [] for x in Utils.to_list(self.source): node = self.path.find_resource(x) if not node: raise Utils.WafError('cannot find input file %s for processing' % x) ins.append(node) if self.dict and not self.env['DICT_HASH']: self.env = self.env.copy() keys = list(self.dict.keys()) keys.sort() lst = [self.dict[x] for x in keys] self.env['DICT_HASH'] = str(Utils.h_list(lst)) tsk = self.create_task('iso', ins, out) tsk.fun = self.fun tsk.dict = self.dict tsk.dep_vars = ['DICT_HASH'] tsk.install_path = self.install_path tsk.chmod = self.chmod if not tsk.env: tsk.debug() raise Utils.WafError('task without an environment') Task.task_type_from_func('iso', func=iso_up) feature('iso')(apply_iso) before('apply_core')(apply_iso)
#!/usr/bin/env python2 # encoding: utf-8 import Task,Utils from TaskGen import taskgen,before,after,feature def add_dbus_file(self,filename,prefix,mode): if not hasattr(self,'dbus_lst'): self.dbus_lst=[] self.meths.append('process_dbus') self.dbus_lst.append([filename,prefix,mode]) def process_dbus(self): for filename,prefix,mode in getattr(self,'dbus_lst',[]): node=self.path.find_resource(filename) if not node: raise Utils.WafError('file not found '+filename) tsk=self.create_task('dbus_binding_tool',node,node.change_ext('.h')) tsk.env.DBUS_BINDING_TOOL_PREFIX=prefix tsk.env.DBUS_BINDING_TOOL_MODE=mode Task.simple_task_type('dbus_binding_tool','${DBUS_BINDING_TOOL} --prefix=${DBUS_BINDING_TOOL_PREFIX} --mode=${DBUS_BINDING_TOOL_MODE} --output=${TGT} ${SRC}',color='BLUE',before='cc') def detect(conf): dbus_binding_tool=conf.find_program('dbus-binding-tool',var='DBUS_BINDING_TOOL') taskgen(add_dbus_file) before('apply_core')(process_dbus)
tsk.set_outputs(node.parent.find_or_declare(name2)) def exec_vnum_link(self): path=self.inputs[0].parent.abspath(self.env) try: os.remove(self.outputs[0].abspath()) except OSError,e: pass try: os.symlink(self.inputs[0].name,self.outputs[0].abspath(self.env)) except Exception,e: return 1 cls=Task.task_type_from_func('vnum',func=exec_vnum_link,ext_in='.bin',color='CYAN') cls.quiet=1 feature('cc','cxx')(default_cc) before('apply_core')(default_cc) feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(apply_verif) feature('cprogram','dprogram')(vars_target_cprogram) after('default_cc')(vars_target_cprogram) before('apply_core')(vars_target_cprogram) after('default_cc')(vars_target_cshlib) feature('cshlib','dshlib')(vars_target_cshlib) before('apply_core')(vars_target_cshlib) feature('cprogram','dprogram','cstaticlib','dstaticlib','cshlib','dshlib')(default_link_install) after('apply_link','vars_target_cprogram','vars_target_cshlib')(default_link_install) feature('cc','cxx')(apply_incpaths) after('apply_type_vars','apply_lib_vars','apply_core')(apply_incpaths) feature('cc','cxx')(apply_type_vars) after('init_cc','init_cxx')(apply_type_vars) before('apply_lib_vars')(apply_type_vars) feature('cprogram','cshlib','cstaticlib')(apply_link)
"--nopyc", action="store_false", default=1, help="Do not install bytecode compiled .pyc files (configuration) [Default:install]", dest="pyc", ) opt.add_option( "--nopyo", action="store_false", default=1, help="Do not install optimised compiled .pyo files (configuration) [Default:install]", dest="pyo", ) before("apply_incpaths", "apply_lib_vars", "apply_type_vars")(init_pyext) feature("pyext")(init_pyext) before("apply_bundle")(init_pyext) before("apply_link", "apply_lib_vars", "apply_type_vars")(pyext_shlib_ext) after("apply_bundle")(pyext_shlib_ext) feature("pyext")(pyext_shlib_ext) before("apply_incpaths", "apply_lib_vars", "apply_type_vars")(init_pyembed) feature("pyembed")(init_pyembed) extension(EXT_PY)(process_py) before("apply_core")(init_py) after("vars_target_cprogram", "vars_target_cshlib")(init_py) feature("py")(init_py) conf(check_python_headers) conf(check_python_version) conf(check_python_module)
if not conf.env.JAVA_HOME: conf.fatal('set JAVA_HOME in the system environment') javaHome = conf.env['JAVA_HOME'][0] b = Build.BuildContext() b.load_dirs(conf.srcdir, conf.blddir) dir = b.root.find_dir(conf.env.JAVA_HOME[0] + '/include') f = dir.ant_glob('**/(jni|jni_md).h', flat=False) incDirs = [x.parent.abspath() for x in f] dir = b.root.find_dir(conf.env.JAVA_HOME[0]) f = dir.ant_glob('**/*jvm.(so|dll)', flat=False) libDirs = [x.parent.abspath() for x in f] or [javaHome] for i, d in enumerate(libDirs): if conf.check(header_name='jni.h', define_name='HAVE_JNI_H', lib='jvm', libpath=d, includes=incDirs, uselib_store='JAVA', uselib='JAVA'): break else: conf.fatal('could not find lib jvm in %r (see config.log)' % libDirs) feature('jar')(jar_files) before('apply_core')(jar_files) feature('javac')(apply_java) before('apply_core')(apply_java) conf(check_java_class) conf(check_jni_headers)
parser.error("incorrect number of arguments") if options.versionNumber: print("libtool-config version %s"%REVISION) return 0 ltf=libtool_config(args[0]) if options.debug: print(ltf) if options.atleast_version: if ltf>=options.atleast_version:return 0 sys.exit(1) if options.exact_version: if ltf==options.exact_version:return 0 sys.exit(1) if options.max_version: if ltf<=options.max_version:return 0 sys.exit(1) def p(x): print(" ".join(x)) if options.libs:p(ltf.get_libs()) elif options.libs_only_l:p(ltf.get_libs_only_l()) elif options.libs_only_L:p(ltf.get_libs_only_L()) elif options.libs_only_other:p(ltf.get_libs_only_other()) return 0 if __name__=='__main__': useCmdLine() feature("libtool")(apply_link_libtool) after('apply_link')(apply_link_libtool) feature("libtool")(apply_libtool) before('apply_core')(apply_libtool)
nums=task.vnum.split('.') path=self.install_path libname=task.outputs[0].name name3=libname.replace('.dylib','.%s.dylib'%task.vnum) name2=libname.replace('.dylib','.%s.dylib'%nums[0]) name1=libname filename=task.outputs[0].abspath(task.env) bld=task.outputs[0].__class__.bld bld.install_as(path+name3,filename,env=task.env) bld.symlink_as(path+name2,name3) bld.symlink_as(path+name1,name3) def install_target_osx_cshlib(self): if not self.bld.is_install:return if getattr(self,'vnum','')and sys.platform!='win32': self.link_task.install=install_shlib Task.task_type_from_func('macapp',vars=[],func=app_build,after="cxx_link cc_link ar_link_static") feature('cc','cxx')(set_macosx_deployment_target) before('apply_lib_vars')(set_macosx_deployment_target) feature('cc','cxx')(apply_framework) after('apply_lib_vars')(apply_framework) taskgen(create_task_macapp) after('apply_link')(apply_link_osx) feature('cc','cxx')(apply_link_osx) before('apply_link','apply_lib_vars')(apply_bundle) feature('cc','cxx')(apply_bundle) after('apply_link')(apply_bundle_remove_dynamiclib) feature('cshlib')(apply_bundle_remove_dynamiclib) feature('osx')(install_target_osx_cshlib) after('install_target_cshlib')(install_target_osx_cshlib)
Utils.copy_attrs(self,task,'before after ext_in ext_out',only_if_set=True) self.tasks.append(task) task.inputs=inputs task.outputs=outputs task.dep_vars=self.to_list(self.dep_vars) for dep in self.dependencies: assert dep is not self dep.post() for dep_task in dep.tasks: task.set_run_after(dep_task) if not task.inputs: task.runnable_status=type(Task.TaskBase.run)(runnable_status,task,task.__class__) task.post_run=type(Task.TaskBase.run)(post_run,task,task.__class__) def post_run(self): for x in self.outputs: h=Utils.h_file(x.abspath(self.env)) self.generator.bld.node_sigs[self.env.variant()][x.id]=h def runnable_status(self): return Constants.RUN_ME Task.task_type_from_func('copy',vars=[],func=action_process_file_func) TaskGen.task_gen.classes['command-output']=cmd_output_taskgen feature('cmd')(apply_cmd) feature('copy')(apply_copy) before('apply_core')(apply_copy) feature('subst')(apply_subst) before('apply_core')(apply_subst) feature('command-output')(init_cmd_output) feature('command-output')(apply_cmd_output) after('init_cmd_output')(apply_cmd_output)
d_header_str='${D_COMPILER} ${D_HEADER} ${SRC}' Task.simple_task_type('d_header',d_header_str,color='BLUE',shell=False) def d_platform_flags(conf): v=conf.env binfmt=v.DEST_BINFMT or Utils.unversioned_sys_platform_to_binary_format(v.DEST_OS or Utils.unversioned_sys_platform()) if binfmt=='pe': v['D_program_PATTERN']='%s.exe' v['D_shlib_PATTERN']='lib%s.dll' v['D_staticlib_PATTERN']='lib%s.a' else: v['D_program_PATTERN']='%s' v['D_shlib_PATTERN']='lib%s.so' v['D_staticlib_PATTERN']='lib%s.a' feature('d')(init_d) before('apply_type_vars')(init_d) feature('d')(init_d) before('apply_d_libs')(init_d) feature('d')(apply_d_libs) after('apply_d_link','init_d')(apply_d_libs) before('apply_vnum')(apply_d_libs) feature('dprogram','dshlib','dstaticlib')(apply_d_link) after('apply_core')(apply_d_link) feature('d')(apply_d_vars) after('apply_core')(apply_d_vars) feature('dshlib')(add_shlib_d_flags) after('apply_d_vars')(add_shlib_d_flags) extension(EXT_D)(d_hook) taskgen(generate_header) before('apply_core')(process_header) conftest(d_platform_flags)
#! /usr/bin/env python # encoding: utf-8 import os,sys import Task from TaskGen import extension,taskgen,after,before EXT_ASM=['.s','.S','.asm','.ASM','.spp','.SPP'] as_str='${AS} ${ASFLAGS} ${_ASINCFLAGS} ${SRC} -o ${TGT}' Task.simple_task_type('asm',as_str,'PINK',ext_out='.o',shell=False) def asm_hook(self,node): try:obj_ext=self.obj_ext except AttributeError:obj_ext='_%d.o'%self.idx task=self.create_task('asm',node,node.change_ext(obj_ext)) self.compiled_tasks.append(task) self.meths.append('asm_incflags') def asm_incflags(self): if self.env['ASINCFLAGS']:self.env['_ASINCFLAGS']=self.env['ASINCFLAGS'] if'cxx'in self.features:self.env['_ASINCFLAGS']=self.env['_CXXINCFLAGS'] else:self.env['_ASINCFLAGS']=self.env['_CCINCFLAGS'] def detect(conf): conf.find_program(['gas','as'],var='AS') if not conf.env.AS:conf.env.AS=conf.env.CC extension(EXT_ASM)(asm_hook) taskgen(asm_incflags) after('apply_obj_vars_cc')(asm_incflags) after('apply_obj_vars_cxx')(asm_incflags) before('apply_link')(asm_incflags)
env=dict(os.environ) env.update(PATH=';'.join(self.env['PATH'])) kw['env']=env return self.generator.bld.exec_command(*k,**kw) for k in'cc cxx winrc cc_link cxx_link static_link'.split(): cls=Task.TaskBase.classes.get(k,None) if cls: cls.exec_command=exec_command_msvc conf(get_msvc_version) conf(gather_wsdk_versions) conf(gather_msvc_versions) conf(gather_icl_versions) conf(get_msvc_versions) conf(print_all_msvc_detected) conf(find_lt_names_msvc) conf(libname_msvc) conf(check_lib_msvc) conf(check_libs_msvc) conftest(no_autodetect) conftest(autodetect) conftest(find_msvc) conftest(msvc_common_flags) after('apply_link')(apply_flags_msvc) feature('cc','cxx')(apply_flags_msvc) feature('cprogram','cshlib','cstaticlib')(apply_obj_vars_msvc) after('apply_lib_vars')(apply_obj_vars_msvc) before('apply_obj_vars')(apply_obj_vars_msvc) feature('cprogram','cshlib')(apply_manifest) after('apply_link')(apply_manifest)
app_dirs=['Contents','Contents/MacOS','Contents/Resources'] def app_build(task): env=task.env shutil.copy2(task.inputs[0].srcpath(env),task.outputs[0].abspath(env)) return 0 def plist_build(task): env=task.env f=open(task.outputs[0].abspath(env),"w") f.write(task.mac_plist) f.close() return 0 Task.task_type_from_func('macapp',vars=[],func=app_build,after="cxx_link cc_link static_link") Task.task_type_from_func('macplist',vars=[],func=plist_build,after="cxx_link cc_link static_link") feature('cc','cxx')(set_macosx_deployment_target) before('apply_lib_vars')(set_macosx_deployment_target) feature('cc','cxx')(apply_framework) after('apply_lib_vars')(apply_framework) taskgen(create_bundle_dirs) taskgen(create_task_macapp) after('apply_link')(create_task_macapp) feature('cprogram')(create_task_macapp) after('apply_link')(create_task_macplist) feature('cprogram')(create_task_macplist) after('apply_link')(apply_link_osx) feature('cshlib')(apply_link_osx) before('apply_link','apply_lib_vars')(apply_bundle) feature('cc','cxx')(apply_bundle) after('apply_link')(apply_bundle_remove_dynamiclib) feature('cshlib')(apply_bundle_remove_dynamiclib)
help = 'Execute unit tests sprcified by pattern') def match_filter(filt, targ): if isinstance(filt, str): (pat, _, _) = filt.partition('.') if pat == '*': return True return pat == targ return False def test_remover(self): if not Options.options.check and not Options.options.checkall and self.target != Options.options.checkone and not match_filter(Options.options.checkfilter, self.target): self.meths[:] = [] feature('testt', 'gtest')(test_remover) before('apply_core')(test_remover) def make_test(self): if not 'cprogram' in self.features: Logs.error('test cannot be executed %s'%self) return self.default_install_path = None self.create_task('utest', self.link_task.outputs) feature('testt', 'gtest')(make_test) after('apply_link', 'vars_target_cprogram')(make_test) def gtest_attach(self): if not self.env.HAVE_GTEST: Logs.error('gtest is not found') self.meths[:] = []
env["GLIB_MKENUMS_OPTIONS"] = " ".join(options) task.set_inputs(inputs) task.set_outputs(tgt_node) Task.task_type_from_func( "glib_genmarshal", func=genmarshal_func, vars=["GLIB_GENMARSHAL_PREFIX", "GLIB_GENMARSHAL"], color="BLUE", before="cc cxx", ) Task.simple_task_type( "glib_mkenums", "${GLIB_MKENUMS} ${GLIB_MKENUMS_OPTIONS} ${GLIB_MKENUMS_SOURCE} > ${GLIB_MKENUMS_TARGET}", color="PINK", before="cc cxx", ) def detect(conf): glib_genmarshal = conf.find_program("glib-genmarshal", var="GLIB_GENMARSHAL") mk_enums_tool = conf.find_program("glib-mkenums", var="GLIB_MKENUMS") taskgen(add_marshal_file) before("apply_core")(process_marshal) taskgen(add_enums_from_template) taskgen(add_enums) before("apply_core")(process_enums)
env['GLIB_MKENUMS_SOURCE']=[k.srcpath(env)for k in source_list] if not enum['target']: raise Utils.WafError('missing target '+str(enum)) tgt_node=self.path.find_or_declare(enum['target']) if tgt_node.name.endswith('.c'): self.allnodes.append(tgt_node) env['GLIB_MKENUMS_TARGET']=tgt_node.abspath(env) options=[] if enum['template']: template_node=self.path.find_resource(enum['template']) options.append('--template %s'%(template_node.abspath(env))) inputs.append(template_node) params={'file-head':'--fhead','file-prod':'--fprod','file-tail':'--ftail','enum-prod':'--eprod','value-head':'--vhead','value-prod':'--vprod','value-tail':'--vtail','comments':'--comments'} for param,option in params.iteritems(): if enum[param]: options.append('%s %r'%(option,enum[param])) env['GLIB_MKENUMS_OPTIONS']=' '.join(options) task.set_inputs(inputs) task.set_outputs(tgt_node) Task.task_type_from_func('glib_genmarshal',func=genmarshal_func,vars=['GLIB_GENMARSHAL_PREFIX','GLIB_GENMARSHAL'],color='BLUE',before='cc cxx') Task.simple_task_type('glib_mkenums','${GLIB_MKENUMS} ${GLIB_MKENUMS_OPTIONS} ${GLIB_MKENUMS_SOURCE} > ${GLIB_MKENUMS_TARGET}',color='PINK',before='cc cxx') def detect(conf): glib_genmarshal=conf.find_program('glib-genmarshal',var='GLIB_GENMARSHAL') mk_enums_tool=conf.find_program('glib-mkenums',var='GLIB_MKENUMS') taskgen(add_marshal_file) before('apply_core')(process_marshal) taskgen(add_enums_from_template) taskgen(add_enums) before('apply_core')(process_enums)
if Options.options.rubylibdir: conf.env.LIBDIR_RUBY = Options.options.rubylibdir else: conf.env.LIBDIR_RUBY = read_config('sitelibdir')[0] def set_options(opt): opt.add_option( '--with-ruby-archdir', type='string', dest='rubyarchdir', help='Specify directory where to install arch specific files') opt.add_option('--with-ruby-libdir', type='string', dest='rubylibdir', help='Specify alternate ruby library path') opt.add_option('--with-ruby-binary', type='string', dest='rubybinary', help='Specify alternate ruby binary') feature('rubyext')(init_rubyext) before('apply_incpaths', 'apply_type_vars', 'apply_lib_vars', 'apply_bundle')(init_rubyext) after('default_cc', 'vars_target_cshlib')(init_rubyext) feature('rubyext')(apply_ruby_so_name) before('apply_link')(apply_ruby_so_name) conf(check_ruby_version) conf(check_ruby_ext_devel)
def check_perl_module(conf,module): cmd=[conf.env['PERL'],'-e','use %s'%module] r=Utils.pproc.call(cmd,stdout=Utils.pproc.PIPE,stderr=Utils.pproc.PIPE)==0 conf.check_message("perl module %s"%module,"",r) return r def check_perl_ext_devel(conf): if not conf.env.PERL: conf.fatal('perl detection is required first') def read_out(cmd): return Utils.to_list(Utils.cmd_output([conf.env.PERL,'-MConfig','-e',cmd])) conf.env.LINKFLAGS_PERLEXT=read_out('print $Config{lddlflags}') conf.env.CPPPATH_PERLEXT=read_out('print "$Config{archlib}/CORE"') conf.env.CCFLAGS_PERLEXT=read_out('print "$Config{ccflags} $Config{cccdlflags}"') conf.env.XSUBPP=read_out('print "$Config{privlib}/ExtUtils/xsubpp$Config{exe_ext}"') conf.env.EXTUTILS_TYPEMAP=read_out('print "$Config{privlib}/ExtUtils/typemap"') conf.env.perlext_PATTERN='%s.'+read_out('print $Config{dlext}')[0] if getattr(Options.options,'perlarchdir',None): conf.env.ARCHDIR_PERL=Options.options.perlarchdir else: conf.env.ARCHDIR_PERL=read_out('print $Config{sitearch}')[0] def set_options(opt): opt.add_option("--with-perl-binary",type="string",dest="perlbinary",help='Specify alternate perl binary',default=None) opt.add_option("--with-perl-archdir",type="string",dest="perlarchdir",help='Specify directory where to install arch specific files',default=None) before('apply_incpaths','apply_type_vars','apply_lib_vars')(init_perlext) feature('perlext')(init_perlext) extension(EXT_XS)(xsubpp_file) conf(check_perl_version) conf(check_perl_module) conf(check_perl_ext_devel)
def detect(conf): opt=conf.find_program('ocamlopt',var='OCAMLOPT') occ=conf.find_program('ocamlc',var='OCAMLC') if(not opt)or(not occ): conf.fatal('The objective caml compiler was not found:\ninstall it or make it available in your PATH') conf.env['OCAMLC']=occ conf.env['OCAMLOPT']=opt conf.env['OCAMLLEX']=conf.find_program('ocamllex',var='OCAMLLEX') conf.env['OCAMLYACC']=conf.find_program('ocamlyacc',var='OCAMLYACC') conf.env['OCAMLFLAGS']='' conf.env['OCAMLLIB']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep conf.env['LIBPATH_OCAML']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep conf.env['CPPPATH_OCAML']=Utils.cmd_output(conf.env['OCAMLC']+' -where').strip()+os.sep conf.env['LIB_OCAML']='camlrun' feature('ocaml')(init_ml) feature('ocaml')(init_envs_ml) after('init_ml')(init_envs_ml) feature('ocaml')(apply_incpaths_ml) before('apply_vars_ml')(apply_incpaths_ml) after('init_envs_ml')(apply_incpaths_ml) feature('ocaml')(apply_vars_ml) before('apply_core')(apply_vars_ml) feature('ocaml')(apply_link_ml) after('apply_core')(apply_link_ml) extension(EXT_MLL)(mll_hook) extension(EXT_MLY)(mly_hook) extension(EXT_MLI)(mli_hook) extension(EXT_MLC)(mlc_hook) extension(EXT_ML)(ml_hook)
v['shlib_PATTERN'] = '%s.dll' v['implib_PATTERN'] = '%s.lib' v['IMPLIB_ST'] = '/IMPLIB:%s' v['staticlib_LINKFLAGS'] = [''] v['staticlib_PATTERN'] = 'lib%s.lib' v['program_PATTERN'] = '%s.exe' conf(get_msvc_version) conf(gather_wsdk_versions) conf(gather_msvc_versions) conf(gather_icl_versions) conf(get_msvc_versions) conf(print_all_msvc_detected) conf(find_lt_names_msvc) conf(libname_msvc) conf(check_lib_msvc) conf(check_libs_msvc) feature('cprogram', 'cshlib', 'cstaticlib')(apply_obj_vars_msvc) after('apply_lib_vars')(apply_obj_vars_msvc) before('apply_obj_vars')(apply_obj_vars_msvc) feature('cprogram', 'cshlib', 'cstaticlib')(apply_link_msvc) before('apply_link')(apply_link_msvc) feature('cc', 'cxx')(init_msvc) after('init_cc', 'init_cxx')(init_msvc) before('apply_type_vars', 'apply_core')(init_msvc) conftest(no_autodetect) conftest(autodetect) conftest(find_msvc) conftest(msvc_common_flags)
Utils.def_attrs(self,fun=iso_up) self.default_install_path=0 lst=self.to_list(self.source) self.meths.remove('apply_core') self.dict=getattr(self,'dict',{}) out = self.path.find_or_declare(self.target) ins = [] for x in Utils.to_list(self.source): node = self.path.find_resource(x) if not node:raise Utils.WafError('cannot find input file %s for processing'%x) ins.append(node) if self.dict and not self.env['DICT_HASH']: self.env=self.env.copy() keys=list(self.dict.keys()) keys.sort() lst=[self.dict[x]for x in keys] self.env['DICT_HASH']=str(Utils.h_list(lst)) tsk=self.create_task('iso',ins,out) tsk.fun=self.fun tsk.dict=self.dict tsk.dep_vars=['DICT_HASH'] tsk.install_path=self.install_path tsk.chmod=self.chmod if not tsk.env: tsk.debug() raise Utils.WafError('task without an environment') Task.task_type_from_func('iso',func=iso_up) feature('iso')(apply_iso) before('apply_core')(apply_iso)
if not conf.env.PYTHON: conf.env.PYTHON=sys.executable python=conf.find_program('python',var='PYTHON') if not python: conf.fatal('Could not find the path of the python executable') v=conf.env v['PYCMD']='"import sys, py_compile;py_compile.compile(sys.argv[1], sys.argv[2])"' v['PYFLAGS']='' v['PYFLAGS_OPT']='-O' v['PYC']=getattr(Options.options,'pyc',1) v['PYO']=getattr(Options.options,'pyo',1) def set_options(opt): opt.add_option('--nopyc',action='store_false',default=1,help='Do not install bytecode compiled .pyc files (configuration) [Default:install]',dest='pyc') opt.add_option('--nopyo',action='store_false',default=1,help='Do not install optimised compiled .pyo files (configuration) [Default:install]',dest='pyo') before('apply_incpaths','apply_lib_vars','apply_type_vars')(init_pyext) feature('pyext')(init_pyext) before('apply_bundle')(init_pyext) before('apply_link','apply_lib_vars','apply_type_vars')(pyext_shlib_ext) after('apply_bundle')(pyext_shlib_ext) feature('pyext')(pyext_shlib_ext) before('apply_incpaths','apply_lib_vars','apply_type_vars')(init_pyembed) feature('pyembed')(init_pyembed) extension(EXT_PY)(process_py) before('apply_core')(init_py) after('vars_target_cprogram','vars_target_cshlib')(init_py) feature('py')(init_py) conf(check_python_headers) conf(check_python_version) conf(check_python_module)
found=Utils.exec_command(cmd,shell=False,log=self.log) self.check_message('Java class %s'%classname,"",not found) shutil.rmtree(javatestdir,True) return found def check_jni_headers(conf): if not conf.env.CC_NAME and not conf.env.CXX_NAME: conf.fatal('load a compiler first (gcc, g++, ..)') if not conf.env.JAVA_HOME: conf.fatal('set JAVA_HOME in the system environment') javaHome=conf.env['JAVA_HOME'][0] b=Build.BuildContext() b.load_dirs(conf.srcdir,conf.blddir) dir=b.root.find_dir(conf.env.JAVA_HOME[0]+'/include') f=dir.ant_glob('**/(jni|jni_md).h',flat=False) incDirs=[x.parent.abspath()for x in f] dir=b.root.find_dir(conf.env.JAVA_HOME[0]) f=dir.ant_glob('**/*jvm.(so|dll)',flat=False) libDirs=[x.parent.abspath()for x in f]or[javaHome] for i,d in enumerate(libDirs): if conf.check(header_name='jni.h',define_name='HAVE_JNI_H',lib='jvm',libpath=d,includes=incDirs,uselib_store='JAVA',uselib='JAVA'): break else: conf.fatal('could not find lib jvm in %r (see config.log)'%libDirs) feature('jar')(jar_files) before('apply_core')(jar_files) feature('javac')(apply_java) before('apply_core')(apply_java) conf(check_java_class) conf(check_jni_headers)
v[p.upper() + 'FLAGS'] = '' v['DVIPSFLAGS'] = '-Ppdf' b = Task.simple_task_type b('tex', '${TEX} ${TEXFLAGS} ${SRC}', color='BLUE', shell=False) b('bibtex', '${BIBTEX} ${BIBTEXFLAGS} ${SRC}', color='BLUE', shell=False) b('dvips', '${DVIPS} ${DVIPSFLAGS} ${SRC} -o ${TGT}', color='BLUE', after="latex pdflatex tex bibtex", shell=False) b('dvipdf', '${DVIPDF} ${DVIPDFFLAGS} ${SRC} ${TGT}', color='BLUE', after="latex pdflatex tex bibtex", shell=False) b('pdf2ps', '${PDF2PS} ${PDF2PSFLAGS} ${SRC} ${TGT}', color='BLUE', after="dvipdf pdflatex", shell=False) b = Task.task_type_from_func cls = b('latex', latex_build, vars=latex_vardeps) cls.scan = scan cls = b('pdflatex', pdflatex_build, vars=pdflatex_vardeps) cls.scan = scan feature('tex')(apply_tex) before('apply_core')(apply_tex)
'--nopyc', action='store_false', default=1, help= 'Do not install bytecode compiled .pyc files (configuration) [Default:install]', dest='pyc') opt.add_option( '--nopyo', action='store_false', default=1, help= 'Do not install optimised compiled .pyo files (configuration) [Default:install]', dest='pyo') before('apply_incpaths', 'apply_lib_vars', 'apply_type_vars')(init_pyext) feature('pyext')(init_pyext) before('apply_bundle')(init_pyext) before('apply_link', 'apply_lib_vars', 'apply_type_vars')(pyext_shlib_ext) after('apply_bundle')(pyext_shlib_ext) feature('pyext')(pyext_shlib_ext) before('apply_incpaths', 'apply_lib_vars', 'apply_type_vars')(init_pyembed) feature('pyembed')(init_pyembed) extension(EXT_PY)(process_py) feature('py')(byte_compile_py) before('apply_core')(init_py) after('vars_target_cprogram', 'vars_target_cstaticlib')(init_py) feature('py')(init_py) conf(check_python_headers) conf(check_python_version) conf(check_python_module)
for name,value in cmd.env_vars.iteritems(): env_vars[name]=self._subst_arg(value,None,namespace) cmd.env_vars=env_vars elif isinstance(cmd,shellcmd.Chdir): cmd.dir=self._subst_arg(cmd.dir,None,namespace) return pipeline.run(verbose=(Options.options.verbose>0)) def init_command(self): Utils.def_attrs(self,variables=None) def apply_command(self): self.meths.remove('apply_core') task=self.create_task('command') setattr(task,"dep_vars",getattr(self,"dep_vars",None)) inputs=[] for src in self.to_list(self.source): node=self.path.find_resource(src) if node is None: raise Utils.WafError("source %s not found"%src) inputs.append(node) task.set_inputs(inputs) task.set_outputs([self.path.find_or_declare(tgt)for tgt in self.to_list(self.target)]) class command_taskgen(task_gen): def __init__(self,*k,**kw): task_gen.__init__(self,*k,**kw) self.features.append('command') taskgen(init_command) feature('command')(init_command) taskgen(apply_command) feature('command')(apply_command) before('apply_core')(apply_command)
return 0 def apply_tar(self): Utils.def_attrs(self, fun=tar_up) self.default_install_path = 0 lst = self.to_list(self.source) self.meths.remove('apply_core') self.dict = getattr(self, 'dict', {}) out = self.path.find_or_declare(self.target) ins = [] for x in Utils.to_list(self.source): node = self.path.find_resource(x) if not node: raise Utils.WafError('cannot find input file %s for processing' % x) ins.append(node) tsk = self.create_task('tar', ins, out) tsk.fun = self.fun tsk.dict = self.dict tsk.install_path = self.install_path tsk.chmod = self.chmod if not tsk.env: tsk.debug() raise Utils.WafError('task without an environment') Task.task_type_from_func('tar', func=tar_up) feature('tar')(apply_tar) before('apply_core')(apply_tar)