summaryrefslogtreecommitdiff
path: root/tools/build/doc/src/path.xml
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/doc/src/path.xml')
-rw-r--r--tools/build/doc/src/path.xml249
1 files changed, 249 insertions, 0 deletions
diff --git a/tools/build/doc/src/path.xml b/tools/build/doc/src/path.xml
new file mode 100644
index 000000000..f11906db5
--- /dev/null
+++ b/tools/build/doc/src/path.xml
@@ -0,0 +1,249 @@
+<?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.modules.path">
+
+ <title>path</title>
+ <indexterm>
+ <primary>path</primary>
+ <secondary>module</secondary>
+ </indexterm>
+
+ <para>
+ Performs various path manipulations. Paths are always in a 'normalized'
+ representation. In it, a path may be either:
+
+ <itemizedlist>
+ <listitem><para><code>'.'</code>, or</para></listitem>
+ <listitem>
+ <para>
+ <code>['/'] [ ( '..' '/' )* (token '/')* token ]</code>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ In plain english, a path can be rooted, <code>'..'</code>
+ elements are allowed only at the beginning, and it never
+ ends in slash, except for the path consisting of slash only.
+ </para>
+
+ <orderedlist>
+
+ <listitem id="bbv2.reference.modules.path.make">
+ <indexterm zone="bbv2.reference.modules.path.make">
+ <primary>make</primary>
+ <secondary>path</secondary>
+ </indexterm>
+ <code language="jam">rule make ( native )</code>
+ <para>Converts the native path into normalized form.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.native">
+ <indexterm zone="bbv2.reference.modules.path.native">
+ <primary>native</primary>
+ </indexterm>
+ <code language="jam">rule native ( path )</code>
+ <para>Builds the native representation of the path.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.is-rooted">
+ <indexterm zone="bbv2.reference.modules.path.is-rooted">
+ <primary>is-rooted</primary>
+ </indexterm>
+ <code language="jam">rule is-rooted ( path )</code>
+ <para>Tests if a path is rooted.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.has-parent">
+ <indexterm zone="bbv2.reference.modules.path.has-parent">
+ <primary>has-parent</primary>
+ </indexterm>
+ <code language="jam">rule has-parent ( path )</code>
+ <para>Tests if a path has a parent.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.basename">
+ <indexterm zone="bbv2.reference.modules.path.basename">
+ <primary>basename</primary>
+ </indexterm>
+ <code language="jam">rule basename ( path )</code>
+ <para>Returns the path without any directory components.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.parent">
+ <indexterm zone="bbv2.reference.modules.path.parent">
+ <primary>parent</primary>
+ </indexterm>
+ <code language="jam">rule parent ( path )</code>
+ <para>Returns the parent directory of the path. If no parent exists, an error is issued.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.reverse">
+ <indexterm zone="bbv2.reference.modules.path.reverse">
+ <primary>reverse</primary>
+ </indexterm>
+ <code language="jam">rule reverse ( path )</code>
+ <para>
+ Returns <code language="jam">path2</code> such that
+ <code language="jam">[ join path path2 ] = "."</code>.
+ The path may not contain <code language="jam">".."</code>
+ element or be rooted.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.join">
+ <indexterm zone="bbv2.reference.modules.path.join">
+ <primary>join</primary>
+ </indexterm>
+ <code language="jam">rule join ( elements + )</code>
+ <para>
+ Concatenates the passed path elements. Generates an error if any
+ element other than the first one is rooted. Skips any empty or
+ undefined path elements.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.root">
+ <indexterm zone="bbv2.reference.modules.path.root">
+ <primary>root</primary>
+ </indexterm>
+ <code language="jam">rule root ( path root )</code>
+ <para>
+ If <code language="jam">path</code> is relative, it is rooted at
+ <code language="jam">root</code>. Otherwise, it is unchanged.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.pwd">
+ <indexterm zone="bbv2.reference.modules.path.pwd">
+ <primary>pwd</primary>
+ </indexterm>
+ <code language="jam">rule pwd ( )</code>
+ <para>Returns the current working directory.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.glob">
+ <indexterm zone="bbv2.reference.modules.path.glob">
+ <primary>glob</primary>
+ </indexterm>
+ <code language="jam">rule glob ( dirs * : patterns + : exclude-patterns * )</code>
+ <para>
+ Returns the list of files matching the given pattern in the specified
+ directory. Both directories and patterns are supplied as portable paths. Each
+ pattern should be a non-absolute path, and can't contain "." or ".." elements.
+ Each slash separated element of a pattern can contain the following special
+ characters:
+ <itemizedlist>
+ <listitem>
+ <para>'?' matches any character</para>
+ </listitem>
+ <listitem>
+ <para>'*' matches an arbitrary number of characters</para>
+ </listitem>
+ </itemizedlist>
+ A file $(d)/e1/e2/e3 (where 'd' is in $(dirs)) matches the pattern p1/p2/p3 if and
+ only if e1 matches p1, e2 matches p2 and so on.
+
+ For example:
+<programlisting language="jam">
+[ glob . : *.cpp ]
+[ glob . : */build/Jamfile ]
+</programlisting>
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.glob-tree">
+ <indexterm zone="bbv2.reference.modules.path.glob-tree">
+ <primary>glob-tree</primary>
+ </indexterm>
+ <code language="jam">rule glob-tree ( roots * : patterns + : exclude-patterns * )</code>
+ <para>
+ Recursive version of <link linkend="bbv2.reference.modules.path.glob">glob</link>.
+ Builds the glob of files while also searching in
+ the subdirectories of the given roots. An optional set of exclusion patterns
+ will filter out the matching entries from the result. The exclusions also
+ apply to the subdirectory scanning, such that directories that match the
+ exclusion patterns will not be searched.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.exists">
+ <indexterm zone="bbv2.reference.modules.path.exists">
+ <primary>exists</primary>
+ </indexterm>
+ <code language="jam">rule exists ( file )</code>
+ <para>Returns true if the specified file exists.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.all-parents">
+ <indexterm zone="bbv2.reference.modules.path.all-parents">
+ <primary>all-parents</primary>
+ </indexterm>
+ <code language="jam">rule all-parents ( path : upper_limit ? : cwd ? )</code>
+ <para>
+ Find out the absolute name of path and return the list of all the parents,
+ starting with the immediate one. Parents are returned as relative names. If
+ <code language="jam">upper_limit</code> is specified, directories above it
+ will be pruned.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.glob-in-parents">
+ <indexterm zone="bbv2.reference.modules.path.glob-in-parents">
+ <primary>glob-in-parents</primary>
+ </indexterm>
+ <code language="jam">rule glob-in-parents ( dir : patterns + : upper-limit ? )</code>
+ <para>
+ Search for <code language="jam">patterns</code> in parent directories
+ of <code language="jam">dir</code>, up to and including
+ <code language="jam">upper_limit</code>, if it is specified, or
+ till the filesystem root otherwise.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.relative">
+ <indexterm zone="bbv2.reference.modules.path.relative">
+ <primary>relative</primary>
+ </indexterm>
+ <code language="jam">rule relative ( child parent : no-error ? )</code>
+ <para>
+ Assuming <code language="jam">child</code> is a subdirectory of
+ <code language="jam">parent</code>, return the relative path from
+ <code language="jam">parent</code> to <code language="jam">child</code>.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.relative-to">
+ <indexterm zone="bbv2.reference.modules.path.relative-to">
+ <primary>relative-to</primary>
+ </indexterm>
+ <code language="jam">rule relative-to ( path1 path2 )</code>
+ <para>Returns the minimal path to path2 that is relative path1.</para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.programs-path">
+ <indexterm zone="bbv2.reference.modules.path.programs-path">
+ <primary>programs-path</primary>
+ </indexterm>
+ <code language="jam">rule programs-path ( )</code>
+ <para>
+ Returns the list of paths which are used by the operating system for
+ looking up programs.
+ </para>
+ </listitem>
+
+ <listitem id="bbv2.reference.modules.path.mkdirs">
+ <indexterm zone="bbv2.reference.modules.path.mkdirs">
+ <primary>mkdirs</primary>
+ </indexterm>
+ <code language="jam">rule makedirs ( path )</code>
+ <para>
+ Creates a directory and all parent directories that do not
+ already exist.
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+</section>