123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 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 :py:class:`waflib.Context.Context`
- * new task classes deriving from :py:class:`waflib.Task.Task`
- * new methods to :py:class:`waflib.Configure.ConfigurationContext` and :py:class:`waflib.Build.BuildContext` through :py:func:`waflib.Configure.conf`
- * new task generator methods to :py:class:`waflib.TaskGen.task_gen` through :py:func:`waflib.TaskGen.taskgen_method`, :py:func:`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')
- .. toctree::
- tools/clang
- tools/clangxx
- tools/compiler_c
- tools/compiler_cxx
- tools/ar
- tools/gcc
- tools/gxx
- tools/icc
- tools/icpc
- tools/suncc
- tools/suncxx
- tools/xlc
- tools/xlcxx
- tools/msvc
- tools/winres
- tools/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 :py:mod:`waflib.Tools.c_config` which provides the :py:func:`waflib.Tools.c_config.check` and
- :py:func:`waflib.Tools.c_config.check_cfg` functions.
- .. toctree::
- tools/ccroot
- tools/c
- tools/cxx
- tools/c_config
- tools/c_osx
- tools/c_preproc
- tools/c_tests
- tools/c_aliases
- Assembly
- --------
- The following tools provide support for assembly. The module :py:mod:`waflib.Tools.asm` is loaded automatically by :py:mod:`waflib.Tools.nasm` or :py:mod:`waflib.Tools.gas`.
- .. toctree::
- tools/gas
- tools/nasm
- tools/asm
- 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.
- .. toctree::
- tools/compiler_d
- tools/dmd
- tools/ldc2
- tools/gdc
- tools/d_config
- tools/d
- tools/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.
- .. toctree::
- tools/compiler_fc
- tools/g95
- tools/gfortran
- tools/ifort
- tools/fc
- tools/fc_config
- tools/fc_scan
- C/C++-related applications
- --------------------------
- The next tools provide support for code generators used in C and C++ projects.
- .. toctree::
- tools/bison
- tools/flex
- tools/dbus
- tools/vala
- tools/glib2
- tools/qt5
- tools/perl
- tools/python
- tools/ruby
- Other compilers and tools
- -------------------------
- .. _extras: https://gitlab.com/ita1024/waf/tree/master/waflib/extras
- 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.
- .. toctree::
- tools/waf_unit_test
- tools/tex
- tools/javaw
- tools/cs
- tools/gnu_dirs
- tools/intltool
- tools/lua
- tools/md5_tstamp
- tools/nobuild
|