Difference between revisions of "AMBuild API (2.0)"
m |
m (→Contexts: Fixed markup typo.) |
||
Line 16: | Line 16: | ||
Contexts are implemented in <tt>ambuild2/frontend/base_gen.py</tt>. They are the entry point for using AMBuild. They have the following properties: | Contexts are implemented in <tt>ambuild2/frontend/base_gen.py</tt>. They are the entry point for using AMBuild. They have the following properties: | ||
− | * ''compiler'' - An instance of a <tt>Compiler</tt> object, or <tt>None</tt> if <tt>DetectCompilers</ | + | * ''compiler'' - An instance of a <tt>Compiler</tt> object, or <tt>None</tt> if <tt>DetectCompilers</tt> was never called. Calling <tt>DetectCompilers</tt> will set the <tt>compiler</tt> field for this and all future contexts. |
* ''parent'' - The context that loaded the current context. | * ''parent'' - The context that loaded the current context. | ||
* ''script'' - The path, relative to <tt>sourcePath</tt>, of the current build script. | * ''script'' - The path, relative to <tt>sourcePath</tt>, of the current build script. |
Revision as of 19:26, 17 October 2013
AMBuild scripts have access to the following object types:
- Context: Exposed as the builder, this is the entry point for the API and is known as a configure context.
- NodeBuilder: Represents a node in the dependency graph that may or may not be committed to the database.
- Compiler: An abstraction representing a C++ compiler environment.
- Vendor: An abstraction representing a C++ compiler vendor (GCC, MSVC, Clang, etc).
- BinaryBuilder: An abstraction for building C++ compilation jobs.
As a general rule, AMBuild uses the following conventions:
- Methods starting with an upper-case letter are considered public API.
- Methods starting with a lower-case letter are considered private and should not be used.
- Properties and attributes ending with an underscore are considered private and should not be used.
- Spaces are used instead of tabs, and two-space indents are preferred.
Contexts
Contexts are implemented in ambuild2/frontend/base_gen.py. They are the entry point for using AMBuild. They have the following properties:
- compiler - An instance of a Compiler object, or None if DetectCompilers was never called. Calling DetectCompilers will set the compiler field for this and all future contexts.
- parent - The context that loaded the current context.
- script - The path, relative to sourcePath, of the current build script.
- sourcePath - The absolute path to the source tree.
- options - The result of evaluating command-line options from configure.py, via the optparse module.
- buildPath - The absolute path to the build folder.
- buildFolder - The working directory of jobs in this context, relative to buildPath.
Methods:
- SetBuildFolder(folder) - Sets the working directory of jobs in this context, relative to buildPath.
- folder - A string representing the folder path. '.' and './' are allowed.
- Returns None.
- DetectCompilers() - Detects C and C++ compilers and raises an exception if neither are available or they do not match. Should only be called once.
- Returns a Compiler object that is also accessible via the compiler attribute.
- RunBuildScripts(files, vars={}) - Runs additional build scripts.
- files - An iterable containing a list of file paths relative to path of the current build script, or a string containing such a path.
- vars - An optional dictionary of global variables to set in each child build script. The dictionary is merged with global variables passed into our current script.
- Returns None.