summaryrefslogtreecommitdiff
path: root/tools/build/v2/doc/src/project-target.xml
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/v2/doc/src/project-target.xml')
-rw-r--r--tools/build/v2/doc/src/project-target.xml144
1 files changed, 144 insertions, 0 deletions
diff --git a/tools/build/v2/doc/src/project-target.xml b/tools/build/v2/doc/src/project-target.xml
new file mode 100644
index 0000000000..1e4e39a520
--- /dev/null
+++ b/tools/build/v2/doc/src/project-target.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
+ "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
+
+<section id="bbv2.reference.class.project-target">
+
+ <title>Class project-target</title>
+ <indexterm>
+ <primary>project-target</primary>
+ </indexterm>
+
+<programlisting language="jam">
+class project-target : <link linkend="bbv2.reference.class.abstract-target">abstract-target</link> {
+ rule <link linkend="bbv2.reference.class.project-target.generate">generate</link> ( property-set )
+ rule <link linkend="bbv2.reference.class.project-target.build-dir">build-dir</link> ( )
+ rule <link linkend="bbv2.reference.class.project-target.main-target">main-target</link> ( name )
+ rule <link linkend="bbv2.reference.class.project-target.has-main-target">has-main-target</link> ( name )
+ rule <link linkend="bbv2.reference.class.project-target.find">find</link> ( id : no-error ? )
+
+ # Methods inherited from <link linkend="bbv2.reference.class.abstract-target">abstract-target</link>
+ rule <link linkend="bbv2.reference.class.abstract-target.name">name</link> ( )
+ rule <link linkend="bbv2.reference.class.abstract-target.project">project</link> ( )
+ rule <link linkend="bbv2.reference.class.abstract-target.location">location</link> ( )
+ rule <link linkend="bbv2.reference.class.abstract-target.full-name">full-name</link> ( )
+}
+</programlisting>
+
+ <para>
+ This class has the following responsibilities:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Maintaining a list of main targets in this project and building them.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+
+ <orderedlist>
+
+ <listitem id="bbv2.reference.class.project-target.generate">
+ <indexterm zone="bbv2.reference.class.project-target.generate">
+ <primary>generate</primary>
+ <secondary>Project Target</secondary>
+ </indexterm>
+ <code language="jam">rule generate ( property-set )</code>
+ <para>
+ Overrides
+ <link linkend="bbv2.reference.class.abstract-target.generate">abstract-target.generate</link>.
+
+ Generates virtual targets for all the targets contained in this project.
+ </para>
+
+ <para>
+ On success, returns:
+ <itemizedlist>
+ <listitem>a property-set with the usage requirements to be applied to dependents</listitem>
+ <listitem>a list of produced virtual targets, which may be empty.</listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.class.project-target.build-dir">
+ <indexterm zone="bbv2.reference.class.project-target.build-dir">
+ <primary>build-dir</primary>
+ <secondary>Project Target Method</secondary>
+ </indexterm>
+ <code language="jam">rule build-dir ( )</code>
+ <para>
+ Returns the root build directory of the project.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.class.project-target.main-target">
+ <indexterm zone="bbv2.reference.class.project-target.main-target">
+ <primary>main-target</primary>
+ <secondary>Project Target Method</secondary>
+ </indexterm>
+ <code language="jam">rule main-target ( name )</code>
+ <para>
+ Returns a <link linkend="bbv2.reference.class.main-target">main-target</link>
+ class instance corresponding to <literal>name</literal>.
+ Can only be called after the project has been fully loaded.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.class.project-target.has-main-target">
+ <indexterm zone="bbv2.reference.class.project-target.has-main-target">
+ <primary>has-main-target</primary>
+ <secondary>Project Target Method</secondary>
+ </indexterm>
+ <code language="jam">rule has-main-target ( name )</code>
+ <para>
+ Returns whether a <link linkend="bbv2.reference.class.main-target">main-target</link>
+ with the specified name exists.
+ Can only be called after the project has been fully loaded.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.class.project-target.find">
+ <indexterm zone="bbv2.reference.class.project-target.find">
+ <primary>find</primary>
+ <secondary>Project Target Method</secondary>
+ </indexterm>
+ <code language="jam">rule find ( id : no-error ? )</code>
+ <para>
+ Find and return the target with the specified id, treated relative to
+ self. Id may specify either a target or a file name with the target taking
+ priority. May report an error or return nothing if the target is not found
+ depending on the <literal>no-error</literal> parameter.
+ </para>
+ </listitem>
+
+ <!--
+
+ I'm not sure whether these should be considered public interfaces.
+ Leave them out for now (SW):
+
+ rule project-module ( )
+ rule get ( attribute )
+
+ -->
+
+ <!--
+
+ The following are not documented because I consider them implementation details (SW):
+
+ rule __init__ ( name : project-module parent-project ?
+ : requirements * : default-build * ) - invoked by the build system.
+
+ rule targets-to-build ( ) - internal to project-target
+ rule mark-target-as-explicit ( target-name * ) - Implementation of explicit
+ rule mark-target-as-always ( target-name * ) - Implementation of always
+ rule add-alternative ( target-instance ) - Implementation of targets.main-target-alternative
+ rule find-really ( id ) - internal to project-target
+ rule build-main-targets ( ) - internal to project-target
+ rule inherit ( parent ) - internal to project-target
+ rule add-constant ( name : value + : type ? ) - Implementation of constant/path-constant
+
+ -->
+
+ </orderedlist>
+
+</section>