Waf Tools¶
Special python modules called Waf tools provide functions and classes to help using compilers, libraries or programs. The typical usage from a user script is:
def function(ctx):
# ...
ctx.load('toolname')
Where the function is usually:
options: add command-line options used by the tool
configure: modify
conf.env, raise a configuration error if a prerequisite is not met
The tools will usually enhance the application by adding:
new commands deriving from
waflib.Context.Contextnew task classes deriving from
waflib.Task.Tasknew methods to
waflib.Configure.ConfigurationContextandwaflib.Build.BuildContextthroughwaflib.Configure.conf()new task generator methods to
waflib.TaskGen.task_genthroughwaflib.TaskGen.taskgen_method(),waflib.TaskGen.after()
As a general rule, existing methods or classes are hardly ever replaced.
C/C++ compiler detection¶
The following Waf tools are used for loading specific C or C++ compilers. They may be used directly, for example:
def options(opt):
opt.load('compiler_c')
def configure(conf):
conf.load('compiler_c')
- clang
- clangxx
- compiler_c
- compiler_cxx
- ar
- gcc
- gxx
- icc
- icpc
- suncc
- suncxx
- xlc
- xlcxx
- msvc
after_method()feature()conf()g_msvc_systemlibsall_msvc_platformsall_icl_platformssetup_msvc()get_msvc_version()target_compilergather_wsdk_versions()gather_msvc_targets()gather_vswhere_versions()gather_msvc_versions()gather_icl_versions()gather_intel_composer_versions()detect_msvc()get_msvc_versions()find_lt_names_msvc()libname_msvc()check_lib_msvc()check_libs_msvc()configure()no_autodetect()autodetect()find_msvc()visual_studio_add_flags()msvc_common_flags()apply_flags_msvc()apply_manifest()
- winres
- irixcc
C/C++ support¶
The following modules contain the functions and classes required for building C and C++ applications. They
are almost always loaded by other Waf tools. Among these, the most important from a user point of view
is waflib.Tools.c_config which provides the waflib.Tools.c_config.check() and
waflib.Tools.c_config.check_cfg() functions.
- ccroot
after_method()before_method()feature()taskgen_method()extension()conf()USELIB_VARScreate_compiled_task()to_incnodes()apply_incpaths()link_tasklink_task.colorlink_task.weightlink_task.inst_tolink_task.chmodlink_task.add_target()link_task.exec_command()link_task.exec_mf()link_task.hasrunlink_task.generatorlink_task.envlink_task.inputslink_task.outputslink_task.dep_nodeslink_task.run_afterlink_task.__annotations__link_task.__dict__link_task.__firstlineno__link_task.__static_attributes__
stlink_taskstlink_task.run_strstlink_task.chmodstlink_task.remove_before_build()stlink_task.hasrunstlink_task.generatorstlink_task.envstlink_task.inputsstlink_task.outputsstlink_task.dep_nodesstlink_task.run_afterstlink_task.__annotations__stlink_task.__firstlineno__stlink_task.__static_attributes__stlink_task.hcodestlink_task.orig_run_strstlink_task.vars
apply_skip_stlib_link_deps()apply_link()use_rec()process_use()accept_node_to_link()add_objects_from_tgen()get_uselib_vars()propagate_uselib_vars()apply_implib()apply_vnum()vnumfake_shlibfake_stlibread_shlib()read_stlib()process_lib()fake_oprocess_objs()read_object()set_full_paths_hpux()
- c
link_tasklink_task.colorlink_task.weightlink_task.inst_tolink_task.chmodlink_task.add_target()link_task.exec_command()link_task.exec_mf()link_task.hasrunlink_task.generatorlink_task.envlink_task.inputslink_task.outputslink_task.dep_nodeslink_task.run_afterlink_task.__dict__link_task.__firstlineno__link_task.__static_attributes__
stlink_taskstlink_task.run_strstlink_task.chmodstlink_task.remove_before_build()stlink_task.hasrunstlink_task.generatorstlink_task.envstlink_task.inputsstlink_task.outputsstlink_task.dep_nodesstlink_task.run_afterstlink_task.__firstlineno__stlink_task.__static_attributes__stlink_task.hcodestlink_task.orig_run_strstlink_task.vars
c_hook()ccprogramcshlibcstlib
- cxx
link_tasklink_task.colorlink_task.weightlink_task.inst_tolink_task.chmodlink_task.add_target()link_task.exec_command()link_task.exec_mf()link_task.hasrunlink_task.generatorlink_task.envlink_task.inputslink_task.outputslink_task.dep_nodeslink_task.run_afterlink_task.__annotations__link_task.__dict__link_task.__firstlineno__link_task.__static_attributes__
stlink_taskstlink_task.run_strstlink_task.chmodstlink_task.remove_before_build()stlink_task.hasrunstlink_task.generatorstlink_task.envstlink_task.inputsstlink_task.outputsstlink_task.dep_nodesstlink_task.run_afterstlink_task.__annotations__stlink_task.__firstlineno__stlink_task.__static_attributes__stlink_task.hcodestlink_task.orig_run_strstlink_task.vars
cxx_hook()cxxcxxprogramcxxprogram.run_strcxxprogram.varscxxprogram.ext_outcxxprogram.inst_tocxxprogram.hasruncxxprogram.generatorcxxprogram.envcxxprogram.inputscxxprogram.outputscxxprogram.dep_nodescxxprogram.run_aftercxxprogram.__firstlineno__cxxprogram.__static_attributes__cxxprogram.hcodecxxprogram.orig_run_str
cxxshlibcxxstlib
- c_config
after_method()feature()conf()WAF_CONFIG_Hparse_flags()validate_cfg()exec_cfg()check_cfg()build_fun()validate_c()post_check()check()test_exectest_exec_fun()check_cxx()check_cc()set_define_comment()get_define_comment()define()undefine()define_cond()is_defined()get_define()have_define()write_config_header()get_config_header()cc_add_flags()cxx_add_flags()link_add_flags()cc_load_tools()cxx_load_tools()get_cc_version()get_xlc_version()get_suncc_version()cfgtaskmulticheck()check_gcc_o_space()
- c_osx
- c_preproc
PreprocErrorPOPFILErecursion_limitgo_absoluteuse_trigraphsg_optransre_linesre_macre_funre_pragma_oncere_nlre_cpptrig_defchr_escNUMOPIDENTSTRCHARtok_typesexp_typesre_clexeracceptedignoredundefinedskippedrepl()precreduce_nums()get_num()get_term()reduce_eval()stringize()paste_tokens()reduce_tokens()eval_macro()extract_macro()extract_include()parse_char()tokenize()c_parserc_parser.__annotations__c_parser.__dict__c_parser.__firstlineno__c_parser.__static_attributes__c_parser.linesc_parser.nodepathsc_parser.nodesc_parser.namesc_parser.curfilec_parser.ban_includesc_parser.listedc_parser.cached_find_resource()c_parser.tryfind()c_parser.filter_comments()c_parser.addlines()c_parser.start()c_parser.define_name()
scan()
- c_tests
conf()feature()before_method()after_method()link_lib_test_fun()check_library()check_inline()check_large_file()grep_for_endiannessgrep_for_endianness.colorgrep_for_endianness.hasrungrep_for_endianness.generatorgrep_for_endianness.envgrep_for_endianness.inputsgrep_for_endianness.outputsgrep_for_endianness.dep_nodesgrep_for_endianness.run_aftergrep_for_endianness.__dict__grep_for_endianness.__firstlineno__grep_for_endianness.__static_attributes__grep_for_endianness.hcode
grep_for_endianness_fun()check_endianness()
- c_aliases
Assembly¶
The following tools provide support for assembly. The module waflib.Tools.asm is loaded automatically by waflib.Tools.nasm or waflib.Tools.gas.
- gas
- nasm
- asm
extension()asm_parserasmasm_hook()asmprogramasmprogram.run_strasmprogram.ext_outasmprogram.inst_toasmprogram.hasrunasmprogram.generatorasmprogram.envasmprogram.inputsasmprogram.outputsasmprogram.dep_nodesasmprogram.run_afterasmprogram.__firstlineno__asmprogram.__static_attributes__asmprogram.hcodeasmprogram.orig_run_strasmprogram.vars
asmshlibasmstlib
D language and compilers¶
The first three tools in the following list may be used for detecting D compilers. The remaining contain the support functions and classes.
- compiler_d
- dmd
- ldc2
- gdc
- d_config
- d
taskgen_method()feature()extension()link_tasklink_task.colorlink_task.weightlink_task.inst_tolink_task.chmodlink_task.add_target()link_task.exec_command()link_task.exec_mf()link_task.hasrunlink_task.generatorlink_task.envlink_task.inputslink_task.outputslink_task.dep_nodeslink_task.run_afterlink_task.__annotations__link_task.__dict__link_task.__firstlineno__link_task.__static_attributes__
stlink_taskstlink_task.run_strstlink_task.chmodstlink_task.remove_before_build()stlink_task.hasrunstlink_task.generatorstlink_task.envstlink_task.inputsstlink_task.outputsstlink_task.dep_nodesstlink_task.run_afterstlink_task.__annotations__stlink_task.__firstlineno__stlink_task.__static_attributes__stlink_task.hcodestlink_task.orig_run_strstlink_task.vars
dd_with_headerd_with_header.run_strd_with_header.hasrund_with_header.generatord_with_header.envd_with_header.inputsd_with_header.outputsd_with_header.dep_nodesd_with_header.run_afterd_with_header.__firstlineno__d_with_header.__static_attributes__d_with_header.hcoded_with_header.orig_run_strd_with_header.vars
d_headerdprogramdshlibdstlibd_hook()generate_header()process_header()
- d_scan
Fortran support¶
The first four tools in the following list are used for detecting fortran compilers. The three remaining contain the routines for compiling fortran applications.
- compiler_fc
- g95
- gfortran
- ifort
conf()after_method()feature()find_ifort()ifort_modifier_win32()ifort_modifier_darwin()ifort_modifier_platform()get_ifort_version()configure()all_ifort_platformsgather_ifort_versions()setup_ifort()get_ifort_version_win32()target_compilerdetect_ifort()get_ifort_versions()find_ifort_win32()apply_flags_ifort()apply_manifest_ifort()
- fc
extension()conf()fc_hook()modfile()get_fortran_tasks()fcfcprogramfcshlibfcstlibfcprogram_testfcprogram_test.runnable_status()fcprogram_test.exec_command()fcprogram_test.hasrunfcprogram_test.generatorfcprogram_test.envfcprogram_test.inputsfcprogram_test.outputsfcprogram_test.dep_nodesfcprogram_test.run_afterfcprogram_test.__firstlineno__fcprogram_test.__static_attributes__fcprogram_test.hcode
- fc_config
conf()feature()before_method()fc_flags()fc_add_flags()check_fortran()check_fc()fortran_modifier_darwin()fortran_modifier_win32()fortran_modifier_cygwin()check_fortran_dummy_main()is_link_verbose()check_fortran_verbose_flag()_match_ignore()parse_fortran_link()_parse_flink_line()check_fortran_clib()getoutput()link_main_routines_tg_method()mangling_schemes()mangle_name()check_fortran_mangling()set_lib_pat()detect_openmp()check_gfortran_o_space()
- fc_scan
Other compilers and tools¶
The following tools provide support for specific compilers or configurations. More tools are present in the extras folder, although they are not documented and as stable as the default tools.
- waf_unit_test
feature()after_method()taskgen_method()handle_ut_cwd()make_interpreted_test()make_test()add_test_results()utestutest.colorutest.afterutest.varsutest.runnable_status()utest.get_test_env()utest.post_run()utest.run()utest.exec_command()utest.get_cwd()utest.hasrunutest.generatorutest.envutest.inputsutest.outputsutest.dep_nodesutest.run_afterutest.__dict__utest.__firstlineno__utest.__static_attributes__utest.hcodeutest.sig_explicit_deps()
summary()set_exit_code()options()
- tex
feature()before_method()bibunitscan()known_tex_env_varsexts_deps_texexts_texre_texg_bibtex_reg_glossaries_retextex.bibtex_fun()tex.makeindex_fun()tex.makeglossaries_fun()tex._tex.exec_command()tex.scan_aux()tex.scan()tex.check_status()tex.bibfile()tex.bibunits()tex.makeindex()tex.bibtopic()tex.makeglossaries()tex.texinputs()tex.run()tex.hash_aux_nodes()tex.call_latex()tex.hasruntex.generatortex.envtex.inputstex.outputstex.dep_nodestex.run_aftertex.__dict__tex.__firstlineno__tex.__static_attributes__tex.hcode
latexpdflatexxelatexdvipsdvipdfpdf2psapply_tex()configure()
- javaw
- Usage
conf()feature()before_method()after_method()taskgen_method()apply_java()java_use_rec()use_javac_files()set_classpath()jar_files()use_jar_files()JTaskjar_createjar_create.colorjar_create.run_strjar_create.runnable_status()jar_create.hasrunjar_create.generatorjar_create.envjar_create.inputsjar_create.outputsjar_create.dep_nodesjar_create.run_afterjar_create.__firstlineno__jar_create.__static_attributes__jar_create.hcodejar_create.orig_run_strjar_create.vars
javaccreate_javadoc()javadocconfigure()check_java_class()check_jni_headers()
- cs
before_method()after_method()feature()conf()apply_cs()use_cs()debug_cs()doc_cs()mcsconfigure()options()fake_csshlibfake_csshlib.colorfake_csshlib.inst_tofake_csshlib.runnable_status()fake_csshlib.hasrunfake_csshlib.generatorfake_csshlib.envfake_csshlib.inputsfake_csshlib.outputsfake_csshlib.dep_nodesfake_csshlib.run_afterfake_csshlib.__dict__fake_csshlib.__firstlineno__fake_csshlib.__static_attributes__
read_csshlib()
- gnu_dirs
- intltool
- lua
- md5_tstamp
- nobuild
- wafcache