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.Context
new task classes deriving from
waflib.Task.Task
new methods to
waflib.Configure.ConfigurationContext
andwaflib.Build.BuildContext
throughwaflib.Configure.conf()
new task generator methods to
waflib.TaskGen.task_gen
throughwaflib.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_systemlibs
all_msvc_platforms
all_icl_platforms
setup_msvc()
get_msvc_version()
target_compiler
gather_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_VARS
create_compiled_task()
to_incnodes()
apply_incpaths()
link_task
link_task.color
link_task.weight
link_task.inst_to
link_task.chmod
link_task.add_target()
link_task.exec_command()
link_task.exec_mf()
link_task.hasrun
link_task.generator
link_task.env
link_task.inputs
link_task.outputs
link_task.dep_nodes
link_task.run_after
link_task.__annotations__
link_task.__dict__
link_task.__firstlineno__
link_task.__static_attributes__
stlink_task
stlink_task.run_str
stlink_task.chmod
stlink_task.remove_before_build()
stlink_task.hasrun
stlink_task.generator
stlink_task.env
stlink_task.inputs
stlink_task.outputs
stlink_task.dep_nodes
stlink_task.run_after
stlink_task.__annotations__
stlink_task.__firstlineno__
stlink_task.__static_attributes__
stlink_task.hcode
stlink_task.orig_run_str
stlink_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()
vnum
fake_shlib
fake_stlib
read_shlib()
read_stlib()
process_lib()
fake_o
process_objs()
read_object()
set_full_paths_hpux()
- c
link_task
link_task.color
link_task.weight
link_task.inst_to
link_task.chmod
link_task.add_target()
link_task.exec_command()
link_task.exec_mf()
link_task.hasrun
link_task.generator
link_task.env
link_task.inputs
link_task.outputs
link_task.dep_nodes
link_task.run_after
link_task.__dict__
link_task.__firstlineno__
link_task.__static_attributes__
stlink_task
stlink_task.run_str
stlink_task.chmod
stlink_task.remove_before_build()
stlink_task.hasrun
stlink_task.generator
stlink_task.env
stlink_task.inputs
stlink_task.outputs
stlink_task.dep_nodes
stlink_task.run_after
stlink_task.__firstlineno__
stlink_task.__static_attributes__
stlink_task.hcode
stlink_task.orig_run_str
stlink_task.vars
c_hook()
c
cprogram
cshlib
cstlib
- cxx
link_task
link_task.color
link_task.weight
link_task.inst_to
link_task.chmod
link_task.add_target()
link_task.exec_command()
link_task.exec_mf()
link_task.hasrun
link_task.generator
link_task.env
link_task.inputs
link_task.outputs
link_task.dep_nodes
link_task.run_after
link_task.__annotations__
link_task.__dict__
link_task.__firstlineno__
link_task.__static_attributes__
stlink_task
stlink_task.run_str
stlink_task.chmod
stlink_task.remove_before_build()
stlink_task.hasrun
stlink_task.generator
stlink_task.env
stlink_task.inputs
stlink_task.outputs
stlink_task.dep_nodes
stlink_task.run_after
stlink_task.__annotations__
stlink_task.__firstlineno__
stlink_task.__static_attributes__
stlink_task.hcode
stlink_task.orig_run_str
stlink_task.vars
cxx_hook()
cxx
cxxprogram
cxxprogram.run_str
cxxprogram.vars
cxxprogram.ext_out
cxxprogram.inst_to
cxxprogram.hasrun
cxxprogram.generator
cxxprogram.env
cxxprogram.inputs
cxxprogram.outputs
cxxprogram.dep_nodes
cxxprogram.run_after
cxxprogram.__firstlineno__
cxxprogram.__static_attributes__
cxxprogram.hcode
cxxprogram.orig_run_str
cxxshlib
cxxstlib
- c_config
after_method()
feature()
conf()
WAF_CONFIG_H
parse_flags()
validate_cfg()
exec_cfg()
check_cfg()
build_fun()
validate_c()
post_check()
check()
test_exec
test_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()
cfgtask
multicheck()
check_gcc_o_space()
- c_osx
- c_preproc
PreprocError
POPFILE
recursion_limit
go_absolute
use_trigraphs
g_optrans
re_lines
re_mac
re_fun
re_pragma_once
re_nl
re_cpp
trig_def
chr_esc
NUM
OP
IDENT
STR
CHAR
tok_types
exp_types
re_clexer
accepted
ignored
undefined
skipped
repl()
prec
reduce_nums()
get_num()
get_term()
reduce_eval()
stringize()
paste_tokens()
reduce_tokens()
eval_macro()
extract_macro()
extract_include()
parse_char()
tokenize()
c_parser
c_parser.__annotations__
c_parser.__dict__
c_parser.__firstlineno__
c_parser.__static_attributes__
c_parser.lines
c_parser.nodepaths
c_parser.nodes
c_parser.names
c_parser.curfile
c_parser.ban_includes
c_parser.listed
c_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_endianness
grep_for_endianness.color
grep_for_endianness.hasrun
grep_for_endianness.generator
grep_for_endianness.env
grep_for_endianness.inputs
grep_for_endianness.outputs
grep_for_endianness.dep_nodes
grep_for_endianness.run_after
grep_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_parser
asm
asm_hook()
asmprogram
asmprogram.run_str
asmprogram.ext_out
asmprogram.inst_to
asmprogram.hasrun
asmprogram.generator
asmprogram.env
asmprogram.inputs
asmprogram.outputs
asmprogram.dep_nodes
asmprogram.run_after
asmprogram.__firstlineno__
asmprogram.__static_attributes__
asmprogram.hcode
asmprogram.orig_run_str
asmprogram.vars
asmshlib
asmstlib
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_task
link_task.color
link_task.weight
link_task.inst_to
link_task.chmod
link_task.add_target()
link_task.exec_command()
link_task.exec_mf()
link_task.hasrun
link_task.generator
link_task.env
link_task.inputs
link_task.outputs
link_task.dep_nodes
link_task.run_after
link_task.__annotations__
link_task.__dict__
link_task.__firstlineno__
link_task.__static_attributes__
stlink_task
stlink_task.run_str
stlink_task.chmod
stlink_task.remove_before_build()
stlink_task.hasrun
stlink_task.generator
stlink_task.env
stlink_task.inputs
stlink_task.outputs
stlink_task.dep_nodes
stlink_task.run_after
stlink_task.__annotations__
stlink_task.__firstlineno__
stlink_task.__static_attributes__
stlink_task.hcode
stlink_task.orig_run_str
stlink_task.vars
d
d_with_header
d_with_header.run_str
d_with_header.hasrun
d_with_header.generator
d_with_header.env
d_with_header.inputs
d_with_header.outputs
d_with_header.dep_nodes
d_with_header.run_after
d_with_header.__firstlineno__
d_with_header.__static_attributes__
d_with_header.hcode
d_with_header.orig_run_str
d_with_header.vars
d_header
dprogram
dshlib
dstlib
d_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_platforms
gather_ifort_versions()
setup_ifort()
get_ifort_version_win32()
target_compiler
detect_ifort()
get_ifort_versions()
find_ifort_win32()
apply_flags_ifort()
apply_manifest_ifort()
- fc
extension()
conf()
fc_hook()
modfile()
get_fortran_tasks()
fc
fcprogram
fcshlib
fcstlib
fcprogram_test
fcprogram_test.runnable_status()
fcprogram_test.exec_command()
fcprogram_test.hasrun
fcprogram_test.generator
fcprogram_test.env
fcprogram_test.inputs
fcprogram_test.outputs
fcprogram_test.dep_nodes
fcprogram_test.run_after
fcprogram_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()
utest
utest.color
utest.after
utest.vars
utest.runnable_status()
utest.get_test_env()
utest.post_run()
utest.run()
utest.exec_command()
utest.get_cwd()
utest.hasrun
utest.generator
utest.env
utest.inputs
utest.outputs
utest.dep_nodes
utest.run_after
utest.__dict__
utest.__firstlineno__
utest.__static_attributes__
utest.hcode
utest.sig_explicit_deps()
summary()
set_exit_code()
options()
- tex
feature()
before_method()
bibunitscan()
known_tex_env_vars
exts_deps_tex
exts_tex
re_tex
g_bibtex_re
g_glossaries_re
tex
tex.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.hasrun
tex.generator
tex.env
tex.inputs
tex.outputs
tex.dep_nodes
tex.run_after
tex.__dict__
tex.__firstlineno__
tex.__static_attributes__
tex.hcode
latex
pdflatex
xelatex
dvips
dvipdf
pdf2ps
apply_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()
JTask
jar_create
jar_create.color
jar_create.run_str
jar_create.runnable_status()
jar_create.hasrun
jar_create.generator
jar_create.env
jar_create.inputs
jar_create.outputs
jar_create.dep_nodes
jar_create.run_after
jar_create.__firstlineno__
jar_create.__static_attributes__
jar_create.hcode
jar_create.orig_run_str
jar_create.vars
javac
create_javadoc()
javadoc
configure()
check_java_class()
check_jni_headers()
- cs
before_method()
after_method()
feature()
conf()
apply_cs()
use_cs()
debug_cs()
doc_cs()
mcs
configure()
options()
fake_csshlib
fake_csshlib.color
fake_csshlib.inst_to
fake_csshlib.runnable_status()
fake_csshlib.hasrun
fake_csshlib.generator
fake_csshlib.env
fake_csshlib.inputs
fake_csshlib.outputs
fake_csshlib.dep_nodes
fake_csshlib.run_after
fake_csshlib.__dict__
fake_csshlib.__firstlineno__
fake_csshlib.__static_attributes__
read_csshlib()
- gnu_dirs
- intltool
- lua
- md5_tstamp
- nobuild