A-A-P home page | A-A-P Recipe Executive | |
Prev | User Manual | Next |
The :conf command is used to discover properties of the compiler and the system. With this information a program can be compiled to work on many different systems without the user to manually specify the properties. For Unix systems an alternative is using Autoconf, see Chapter 24, Using Autoconf.
TODO The ":conf" command is still under development.
:conf init Clean the configuration environment. Only needed when configure checks were done before. :conf language lang Use "lang" as the language for tests that do not have a {language} attribute. Only "C" and "C++" are currently supported. "C" is the default. A test will be done if the compiler for the language works. If not all tests for the language will fail. Example: :conf language C++ :conf header [mainoptions] headername [itemoptions] ... Check for C or C++ header file(s) "headername". Uses current value of INCLUDE. Defines HAVE_headername if "headername" is available. mainoptions: oneof first of the items that works is used, at least one is required required all items are required to exist itemoptions: header text included in the test program language C or C++ Examples: :conf header X11/Shell.h :conf header {oneof} sys/time.h times.h :conf function [mainoptions] functionname [itemoptions] ... Check for C or C++ function(s) "functionname". Uses the current value of $LIBS. Defines HAVE_functionname if "functionname" is available. Options: see ":conf header" Example: :conf function bcopy :conf type [mainoptions] typename [itemoptions] ... Check for C or C++ type(s) "typename". Uses the current value of $LIBS. Defines HAVE_typename if type "typename" is available. Options: see ":conf header". Additional itemoption: fallback type definition to use for the type when it is not available Example: :conf type size_t {fallback = unsigned long} :conf lib [mainoptions] libname,funcname [itemoptions] ... Check for library/libraries by testing if "funcname" exists when using the "libname" library. Uses the current value of $LIBS and appends "-llibname" if the test succeeds. Also appends to $_conf.LIBS. Defines HAVE_libname if library "libname" is available. Options: see ":conf header". Example: :conf lib iconv,iconv_open :conf write header filename Write the HAVE_ and other symbols collected so far into "filename". Example: :conf write header $BDIR/config.h :conf write recipe filename Write the settings in the _conf scope into "filename". Example: :conf write recipe $BDIR/config.aap The _conf scope stores variables set by configure tests. For example, $_conf.LIBS the libraries that ":conf lib" found. The _conf scope is used in the tree of scopes just before the toplevel scope, after all callstack and recipe tree scopes. Special characters in header, function and type names are changed to an underscore before defining the HAVE_ symbol. Lowercase characters are changed to uppercase. The preprocessor symbols that are gathered from the tests are available in the $_conf.have dictionary. Example: :conf header sys/time.h @if _conf.have["HAVE_SYS_TIME_H"]: :print we have time @else: :print sorry, no time. ":conf write recipe" writes the variables in the _conf scope. You can remove variables you do not want to be written. Example: saveLIBS = $?_conf.LIBS _conf.LIBS = :conf lib foo,foobar _conf.FOOLIB = $_conf.LIBS _conf.LIBS = $saveLIBS