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)
#! /usr/bin/env python # encoding: utf-8 import TaskGen from TaskGen import taskgen,feature from Constants import* TaskGen.declare_chain(name='luac',rule='${LUAC} -s -o ${TGT} ${SRC}',ext_in='.lua',ext_out='.luac',reentrant=0,install='LUADIR',) def init_lua(self): self.default_chmod=O755 def detect(conf): conf.find_program('luac',var='LUAC',mandatory=True) feature('lua')(init_lua)
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)
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)
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)
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)
libs=self.to_list(self.uselib) for l in libs: val=self.env['CCDEFINES_'+l] if val:milst+=val self.env['DEFLINES']=["%s %s"%(x[0],Utils.trimquotes('='.join(x[1:])))for x in[y.split('=')for y in milst]] y=self.env['CCDEFINES_ST'] self.env['_CCDEFFLAGS']=[y%x for x in milst] def c_hook(self,node): task=self.create_task('cc') try:obj_ext=self.obj_ext except AttributeError:obj_ext='_%d.o'%self.idx task.defines=self.scanner_defines task.inputs=[node] task.outputs=[node.change_ext(obj_ext)] self.compiled_tasks.append(task) cc_str='${CC} ${CCFLAGS} ${CPPFLAGS} ${_CCINCFLAGS} ${_CCDEFFLAGS} ${CC_SRC_F}${SRC} ${CC_TGT_F}${TGT}' link_str='${LINK_CC} ${CCLNK_SRC_F}${SRC} ${CCLNK_TGT_F}${TGT} ${LINKFLAGS} ${_LIBDIRFLAGS} ${_LIBFLAGS}' cls=Task.simple_task_type('cc',cc_str,'GREEN',ext_out='.o',ext_in='.c') cls.scan=ccroot.scan cls.vars.append('CCDEPS') cls=Task.simple_task_type('cc_link',link_str,color='YELLOW',ext_in='.o') cls.maxjobs=1 TaskGen.declare_order('apply_incpaths','apply_defines_cc','apply_core','apply_lib_vars','apply_obj_vars_cc','apply_obj_vars') feature('cc')(init_cc) before('apply_type_vars')(init_cc) after('default_cc')(init_cc) feature('cc')(apply_obj_vars_cc) feature('cc')(apply_defines_cc) extension(EXT_CC)(c_hook)
type='int', default=1, dest='want_rpath', help='set rpath to 1 or 0 [Default 1]') opt.add_option('--header-ext', type='string', default='', help='header extension for moc files', dest='qt_header_ext') for i in 'qtdir qtbin qtlibs'.split(): opt.add_option('--' + i, type='string', default='', dest=i) if sys.platform == "darwin": opt.add_option('--no-qt4-framework', action="store_false", help='do not use the framework version of Qt4 in OS X', dest='use_qt4_osxframework', default=True) opt.add_option('--translate', action="store_true", help="collect translation strings", dest="trans_qt4", default=False) extension(EXT_RCC)(create_rcc_task) extension(EXT_UI)(create_uic_task) extension('.ts')(add_lang) feature('qt4')(apply_qt4) after('apply_link')(apply_qt4) extension(EXT_QT4)(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)
try:os.stat(file) except OSError: file='%s/share/kde4/apps/cmake/modules/KDELibsDependencies.cmake'%prefix try:os.stat(file) except OSError:conf.fatal('could not open %s'%file) try: txt=Utils.readf(file) except(OSError,IOError): conf.fatal('could not read %s'%file) txt=txt.replace('\\\n','\n') fu=re.compile('#(.*)\n') txt=fu.sub('',txt) setregexp=re.compile('([sS][eE][tT]\s*\()\s*([^\s]+)\s+\"([^"]+)\"\)') found=setregexp.findall(txt) for(_,key,val)in found: conf.env[key]=val conf.env['LIB_KDECORE']='kdecore' conf.env['LIB_KDEUI']='kdeui' conf.env['LIB_KIO']='kio' conf.env['LIB_KHTML']='khtml' conf.env['LIB_KPARTS']='kparts' conf.env['LIBPATH_KDECORE']=conf.env['KDE4_LIB_INSTALL_DIR'] conf.env['CPPPATH_KDECORE']=conf.env['KDE4_INCLUDE_INSTALL_DIR'] conf.env.append_value('CPPPATH_KDECORE',conf.env['KDE4_INCLUDE_INSTALL_DIR']+"/KDE") conf.env['MSGFMT']=conf.find_program('msgfmt') Task.simple_task_type('msgfmt','${MSGFMT} ${SRC} -o ${TGT}',color='BLUE',shell=False) feature('msgfmt')(init_msgfmt) feature('msgfmt')(apply_msgfmt) after('init_msgfmt')(apply_msgfmt)
'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 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)
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)
) 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)
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)
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)
value=env['LIBPATH_'+var] if value: core=env[coreval] accu=[] for lib in value: if var!='QTCORE': if lib in core: continue accu.append('-Wl,--rpath='+lib) env['RPATH_'+var]=accu process_rpath(vars,'LIBPATH_QTCORE') process_rpath(vars_debug,'LIBPATH_QTCORE_DEBUG') env['QTLOCALE']=str(env['PREFIX'])+'/share/locale' def detect(conf): detect_qt4(conf) 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('--header-ext',type='string',default='',help='header extension for moc files',dest='qt_header_ext') for i in'qtdir qtbin qtlibs'.split(): opt.add_option('--'+i,type='string',default='',dest=i) if sys.platform=="darwin": opt.add_option('--no-qt4-framework',action="store_false",help='do not use the framework version of Qt4 in OS X',dest='use_qt4_osxframework',default=True) opt.add_option('--translate',action="store_true",help="collect translation strings",dest="trans_qt4",default=False) extension(EXT_RCC)(create_rcc_task) extension(EXT_UI)(create_uic_task) extension('.ts')(add_lang) feature('qt4')(apply_qt4) after('apply_link')(apply_qt4) extension(EXT_QT4)(cxx_hook)
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)
opt.add_option('--checkfilter', action = 'store', default = False, 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')
"--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)
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)
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)
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)
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)
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)
def getstr(varname): return getattr(Options.options, varname, '') conf.define('GNOMELOCALEDIR', os.path.join(conf.env['DATADIR'], 'locale')) xml2po = conf.find_program('xml2po', var='XML2PO') xsltproc2po = conf.find_program('xsltproc', var='XSLTPROC2PO') conf.env['XML2POFLAGS'] = '-e -p' conf.env['SCROLLKEEPER_DATADIR'] = Utils.cmd_output( "scrollkeeper-config --pkgdatadir", silent=1).strip() conf.env['DB2OMF'] = Utils.cmd_output( "/usr/bin/pkg-config --variable db2omf gnome-doc-utils", silent=1).strip() 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]') feature('gnome_doc')(init_gnome_doc) feature('gnome_doc')(apply_gnome_doc) after('init_gnome_doc')(apply_gnome_doc) feature('xml_to')(init_xml_to) feature('xml_to')(apply_xml_to) after('init_xml_to')(apply_xml_to) feature('gnome_sgml2man')(apply_gnome_sgml2man)
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)
pass 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)
conf.define('ENABLE_NLS',1) conf.define('HAVE_BIND_TEXTDOMAIN_CODESET',1) conf.define('HAVE_DCGETTEXT',1) conf.check(header_name='dlfcn.h',define_name='HAVE_DLFCN_H') conf.define('HAVE_GETTEXT',1) conf.check(header_name='inttypes.h',define_name='HAVE_INTTYPES_H') conf.check(header_name='locale.h',define_name='HAVE_LOCALE_H') conf.check(header_name='memory.h',define_name='HAVE_MEMORY_H') conf.check(header_name='stdint.h',define_name='HAVE_STDINT_H') conf.check(header_name='stdlib.h',define_name='HAVE_STDLIB_H') conf.check(header_name='strings.h',define_name='HAVE_STRINGS_H') conf.check(header_name='string.h',define_name='HAVE_STRING_H') conf.check(header_name='sys/stat.h',define_name='HAVE_SYS_STAT_H') conf.check(header_name='sys/types.h',define_name='HAVE_SYS_TYPES_H') conf.check(header_name='unistd.h',define_name='HAVE_UNISTD_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]') taskgen(init_gnome_doc) feature('gmome_doc')(init_gnome_doc) taskgen(apply_gnome_doc) feature('gnome_doc')(apply_gnome_doc) after('init_gnome_doc')(apply_gnome_doc) taskgen(init_xml_to) feature('xml_to')(init_xml_to) taskgen(apply_xml_to) feature('xml_to')(apply_xml_to) after('init_xml_to')(apply_xml_to) taskgen(apply_gnome_sgml2man) feature('gnome_sgml2man')(apply_gnome_sgml2man)
'--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)
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)
return task cc_str = '${CC} ${CCFLAGS} ${CPPFLAGS} ${_CCINCFLAGS} ${_CCDEFFLAGS} ${CC_SRC_F}${SRC} ${CC_TGT_F}${TGT}' cls = Task.simple_task_type('cc', cc_str, 'GREEN', ext_out='.o', ext_in='.c', shell=False) cls.scan = ccroot.scan cls.vars.append('CCDEPS') link_str = '${LINK_CC} ${CCLNK_SRC_F}${SRC} ${CCLNK_TGT_F}${TGT[0].abspath(env)} ${LINKFLAGS}' cls = Task.simple_task_type('cc_link', link_str, color='YELLOW', ext_in='.o', ext_out='.bin', shell=False) cls.maxjobs = 1 cls.install = Utils.nada feature('cc')(init_cc) before('apply_type_vars')(init_cc) after('default_cc')(init_cc) feature('cc')(apply_obj_vars_cc) after('apply_incpaths')(apply_obj_vars_cc) feature('cc')(apply_defines_cc) after('apply_lib_vars')(apply_defines_cc) extension(EXT_CC)(c_hook)
task.set_outputs(node.change_ext('.di')) 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)
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)
os.stat(file) except OSError: conf.fatal("could not open %s" % file) try: txt = Utils.readf(file) except (OSError, IOError): conf.fatal("could not read %s" % file) txt = txt.replace("\\\n", "\n") fu = re.compile("#(.*)\n") txt = fu.sub("", txt) setregexp = re.compile('([sS][eE][tT]\s*\()\s*([^\s]+)\s+"([^"]+)"\)') found = setregexp.findall(txt) for (_, key, val) in found: conf.env[key] = val conf.env["LIB_KDECORE"] = "kdecore" conf.env["LIB_KDEUI"] = "kdeui" conf.env["LIB_KIO"] = "kio" conf.env["LIB_KHTML"] = "khtml" conf.env["LIB_KPARTS"] = "kparts" conf.env["LIBPATH_KDECORE"] = conf.env["KDE4_LIB_INSTALL_DIR"] conf.env["CPPPATH_KDECORE"] = conf.env["KDE4_INCLUDE_INSTALL_DIR"] conf.env.append_value("CPPPATH_KDECORE", conf.env["KDE4_INCLUDE_INSTALL_DIR"] + "/KDE") conf.env["MSGFMT"] = conf.find_program("msgfmt") Task.simple_task_type("msgfmt", "${MSGFMT} ${SRC} -o ${TGT}", color="BLUE", shell=False) feature("msgfmt")(init_msgfmt) feature("msgfmt")(apply_msgfmt) after("init_msgfmt")(apply_msgfmt)
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)
) 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)
def apply_iso(self): 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)
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)
conf.fatal("Python module not found.") def detect(conf): python=conf.find_program('python',var='PYTHON') if not python:return 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) 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)
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)
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)
#! /usr/bin/env python # encoding: UTF-8 import TaskGen from TaskGen import feature def edje(self): self.default_chmod=0664 bld_rule = '${EDJE} '+'-id '+self.cwd+' -fd '+self.cwd+' ${SRC} ${TGT}' TaskGen.declare_chain(name='edje_cc', rule=bld_rule, ext_in='.edc', ext_out='.edj', reentrant=0, install=None) def detect(conf): conf.find_program('edje_cc', var='EDJE', mandatory=True) feature('edje')(edje)
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)
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)
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)
fail=True ret=''+str(e) else: pass stats=getattr(self.generator.bld,'utest_results',[]) stats.append((filename,fail,ret)) self.generator.bld.utest_results=stats finally: testlock.release() cls=Task.task_type_from_func('utest',func=exec_test,color='RED',ext_in='.bin') old=cls.runnable_status def test_status(self): if getattr(Options.options,'all_tests',False): return RUN_ME return old(self) cls.runnable_status=test_status cls.quiet=1 def summary(bld): lst=getattr(bld,'utest_results',[]) if lst: Utils.pprint('CYAN','execution summary') for(f,fail,ret)in lst: col=fail and'RED'or'GREEN' Utils.pprint(col,(fail and'FAIL'or'ok')+" "+f) if fail:Utils.pprint('NORMAL',ret.replace('\\n','\n')) def set_options(opt): opt.add_option('--alltests',action='store_true',default=False,help='Exec all unit tests',dest='all_tests') feature('test')(make_test) after('apply_link','vars_target_cprogram')(make_test)
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)
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)
def detect(conf): detect_qt4(conf) 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( "--header-ext", type="string", default="", help="header extension for moc files", dest="qt_header_ext" ) for i in "qtdir qtbin qtlibs".split(): opt.add_option("--" + i, type="string", default="", dest=i) if sys.platform == "darwin": opt.add_option( "--no-qt4-framework", action="store_false", help="do not use the framework version of Qt4 in OS X", dest="use_qt4_osxframework", default=True, ) opt.add_option( "--translate", action="store_true", help="collect translation strings", dest="trans_qt4", default=False ) extension(EXT_RCC)(create_rcc_task) extension(EXT_UI)(create_uic_task) extension(".ts")(add_lang) feature("qt4")(apply_qt4) after("apply_link")(apply_qt4) extension(EXT_QT4)(cxx_hook)
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)
tsk.set_inputs([node]) 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)
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)
txt = Utils.readf(file) except (OSError, IOError): conf.fatal('could not read %s' % file) txt = txt.replace('\\\n', '\n') fu = re.compile('#(.*)\n') txt = fu.sub('', txt) setregexp = re.compile('([sS][eE][tT]\s*\()\s*([^\s]+)\s+\"([^"]+)\"\)') found = setregexp.findall(txt) for (_, key, val) in found: conf.env[key] = val conf.env['LIB_KDECORE'] = 'kdecore' conf.env['LIB_KDEUI'] = 'kdeui' conf.env['LIB_KIO'] = 'kio' conf.env['LIB_KHTML'] = 'khtml' conf.env['LIB_KPARTS'] = 'kparts' conf.env['LIBPATH_KDECORE'] = conf.env['KDE4_LIB_INSTALL_DIR'] conf.env['CPPPATH_KDECORE'] = conf.env['KDE4_INCLUDE_INSTALL_DIR'] conf.env.append_value('CPPPATH_KDECORE', conf.env['KDE4_INCLUDE_INSTALL_DIR'] + "/KDE") conf.env['MSGFMT'] = conf.find_program('msgfmt') Task.simple_task_type('msgfmt', '${MSGFMT} ${SRC} -o ${TGT}', color='BLUE', shell=False) feature('msgfmt')(init_msgfmt) feature('msgfmt')(apply_msgfmt) after('init_msgfmt')(apply_msgfmt)