mirror of
https://github.com/boostorg/build.git
synced 2026-02-16 01:12:13 +00:00
Merged from RC_1_28_0
[SVN r13944]
This commit is contained in:
@@ -62,11 +62,12 @@ above covers most of it.
|
||||
where the user wants to declare a project-id.
|
||||
</blockquote>
|
||||
|
||||
<h3>Initialization</h3>
|
||||
<h3><a name="initialization">Initialization</a></h3>
|
||||
|
||||
<p>
|
||||
We check the name used to invoke Jam, and if the name is not the recognized
|
||||
Boost.Jam invocation we continue with the execution of the builtin <tt>Jambase</tt>.
|
||||
We check the name used to invoke Jam, and if the name is not the
|
||||
recognized Boost.Jam invocation ("<code>bjam</code>") we
|
||||
continue with the execution of the builtin <tt>Jambase</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -1598,6 +1598,9 @@ rule subvariant-target ( target : subvariant-id build-properties * : toolset var
|
||||
# Remember the path from the build root to the subvariant directory
|
||||
gSUBVARIANT_PATH($(subvariant)) = $(subvariant-id) ;
|
||||
|
||||
# Add target suppression if <suppress> was in the requirements
|
||||
local gSUPPRESS_FAKE_TARGETS = [ get-values <suppress> : $(gTARGET_REQUIREMENTS($(target))) ] $(gSUPPRESS_FAKE_TARGETS) ;
|
||||
|
||||
declare-fake-targets $(target) : $(target-files) ;
|
||||
|
||||
# set up gBUILD_PROPERTIES for include-tools (below)
|
||||
@@ -1642,7 +1645,7 @@ rule subvariant-target ( target : subvariant-id build-properties * : toolset var
|
||||
depend-on-libraries $(target-files) : $(libs) ;
|
||||
depend-on-dlls $(target-files) : $(dlls) ;
|
||||
}
|
||||
|
||||
|
||||
# dispatch to the appropriate declaration function. Here we are using an
|
||||
# FTJam-only feature (thanks, David Turner!)
|
||||
local ignored = [ $(gGENERATOR_FUNCTION($(target-type))) $(target-files)
|
||||
@@ -1783,6 +1786,9 @@ rule unit-test
|
||||
# Used to build command files from a list of sources.
|
||||
rule build-command-file ( command : sources * )
|
||||
{
|
||||
# Clean up after ourselves
|
||||
Clean clean : $(command) ;
|
||||
|
||||
DEPENDS $(command) : $(sources) ;
|
||||
|
||||
# Check whether there's anything to dump, so that we don't end up
|
||||
|
||||
317
build_system.htm
317
build_system.htm
@@ -16,7 +16,7 @@
|
||||
<h2><a name="synopsis">Synopsis</a></h2>
|
||||
|
||||
<p>Boost.Build is a system for large project software construction built on
|
||||
Boost Jam, a descendant of "<a
|
||||
Boost.Jam, a descendant of "<a
|
||||
href="http://www.perforce.com/jam/jam.html">Perforce Jam</a>", an
|
||||
open-source make replacement<a href="#1">[1]</a>. Key features are:
|
||||
|
||||
@@ -41,6 +41,19 @@
|
||||
<li>Automatic building of subproject dependencies
|
||||
</ul>
|
||||
|
||||
<h2><a name="status">Status</a></h2>
|
||||
|
||||
Boost.Build v1 is a useful, mature system. However, its design and
|
||||
structure are not easily adapted to support some of the features
|
||||
we'd like to see in the future. To this end, the Boost.Build
|
||||
developers have begun work on v2 of Boost.Build, which will be
|
||||
based around this
|
||||
<a href="architecture.html">design document</a>. If you are
|
||||
interested in contributing to this effort or you wish to discuss
|
||||
the design of Boost.Build, please post inquiries to the <a
|
||||
href="http://groups.yahoo.com/group/jamboost/">jamboost</a>
|
||||
mailing list at yahoogroups.
|
||||
|
||||
<p><a href="#design_criteria">Here</a> are some of the design criteria that
|
||||
led to these features.
|
||||
|
||||
@@ -49,11 +62,13 @@
|
||||
<ul>
|
||||
<li><a href="#synopsis">Synopsis</a>
|
||||
|
||||
<li><a href="#status">Status</a>
|
||||
|
||||
<li>
|
||||
<a href="#getting_started">Getting Started</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#installing_jam">Installing Jam</a>
|
||||
<li><a href="#installing_jam">Installing Boost.Jam</a>
|
||||
|
||||
<li><a href="#initiating">Initiating a Build</a>
|
||||
|
||||
@@ -128,7 +143,7 @@
|
||||
|
||||
<ul>
|
||||
<li><a href="#variable_quoting">Command-line and Environment Variable Quoting</a>
|
||||
<li><a href="#jambase_replacement">Jambase Replacement</a>
|
||||
<li><a href="#jambase_replacement">Startup Behavior</a>
|
||||
<li><a href="#rule_indirection">Rule Indirection</a>
|
||||
<li><a href="#argument_lists">Argument Lists</a>
|
||||
|
||||
@@ -137,7 +152,7 @@
|
||||
|
||||
<ul>
|
||||
<li><a href="#module_declaration">Declaration</a>
|
||||
<li><a href="#module_locals">Local Variables</a>
|
||||
<li><a href="#module_locals">Variable Scope</a>
|
||||
<li><a href="#local_rules">Local Rules</a>
|
||||
<li><a href="#RULENAMES_rule">The <tt>RULENAMES</tt> rule</a>
|
||||
<li><a href="#IMPORT_rule">The <tt>IMPORT</tt> rule</a>
|
||||
@@ -146,11 +161,11 @@
|
||||
</ul>
|
||||
|
||||
<li><a href="#local_foreach">Local for Loop Variables</a>
|
||||
<li><a href="#while_loops">While Loops</a>
|
||||
<li><a href="#negative_indexing">Negative Indexing</a>
|
||||
<li><a href="#BINDRULE">Target Binding Detection</a>
|
||||
<li><a href="#FAIL_EXPECTED">Return Code Inversion</a>
|
||||
<li><a href="#NOCARE">Ignoring Return Codes</a>
|
||||
<li><a href="#RMOLD">Removing outdated targets</a>
|
||||
<li><a href="#SUBST_rule">The <tt>SUBST</tt> Rule</a>
|
||||
<li><a href="#JAM_VERSION">The <tt>JAM_VERSION</tt> global variable</a>
|
||||
<li>
|
||||
@@ -183,40 +198,26 @@
|
||||
|
||||
<h2><a name="getting_started">Getting Started</a></h2>
|
||||
|
||||
<h3><a name="installing_jam">Installing Boost Jam</a></h3>
|
||||
|
||||
<ul>
|
||||
<li>The Boost Jam sources are located in the <tt>tools/build/jam_src</tt>
|
||||
subdirectory of the Boost installation.
|
||||
|
||||
<li>The <a href="http://public.perforce.com/public/jam/src/README">Jam
|
||||
README</a> contains basic installation instructions.
|
||||
|
||||
|
||||
<li>If you are installing on Windows, the make process may prompt you to set
|
||||
some environment variables, and stop. Don't be alarmed; just follow the
|
||||
instructions and start over. Please keep in mind that these variable settings
|
||||
are case-sensitive. The variable settings necessary for bootstrapping
|
||||
Jam are not needed once it has been built.
|
||||
<li>Note that the supplied Makefile may require editing for your
|
||||
platform; see the <a href=
|
||||
"http://public.perforce.com/public/jam/src/README">Jam README</a> for
|
||||
details. The Makefile is used for bootstrapping Jam; it builds Jam into a
|
||||
subdirectory called <tt>bin.</tt><i>platform</i>.
|
||||
</ul>
|
||||
<h3><a name="installing_jam">Installing Boost.Jam</a></h3>
|
||||
|
||||
Follow these <a href="index.html#Jam">instructions</a> to acquire
|
||||
a bjam executable for your platform. Install it somewhere in your
|
||||
path.
|
||||
|
||||
<h3><a name="initiating">Initiating a Build</a></h3>
|
||||
|
||||
<p>The easiest way to get going is to set the <tt>BOOST_ROOT</tt>
|
||||
environment variable to point at the Boost installation directory, though
|
||||
you can also set <tt>BOOST_ROOT</tt> on the command-line, using
|
||||
<tt>-s...</tt>. You can use the <tt>TOOLS</tt> variable to indicate which
|
||||
toolset(s) to build with, and the <tt>BUILD</tt> variable to describe how
|
||||
you want things built. In most cases it should be sufficient to invoke Jam
|
||||
with no variable settings. The following examples all assume that
|
||||
<tt>BOOST_ROOT</tt> has been set in the environment.
|
||||
<p>Boost.Build responds to several global variable settins. The
|
||||
easiest way to get going is usually to use environment variables,
|
||||
though you can also set them on the command-line, using
|
||||
<tt>-s</tt><i>VARIABLE_NAME</i><tt>=</tt><i>value</i>. In
|
||||
addition to the <a href="index.html#Configuring">toolset
|
||||
configuration variables</a>, you can use the <tt>TOOLS</tt>
|
||||
variable to indicate which toolset(s) to build with, and the
|
||||
<tt>BUILD</tt> variable to describe how you want things built. In
|
||||
many cases it should be sufficient to invoke <code>bjam</code>
|
||||
with no variable settings.
|
||||
|
||||
<p>Here are some sample Boost Jam invocations:
|
||||
<p>Some example Boost.Jam invocations:
|
||||
|
||||
<table border="1" summary="Sample Jam Invocations=">
|
||||
<tr>
|
||||
@@ -227,7 +228,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<pre>
|
||||
jam -sTOOLS=gcc my_target
|
||||
bjam -sTOOLS=gcc my_target
|
||||
</pre>
|
||||
|
||||
<td>default (debug) <tt><a href="#build">BUILD</a></tt> of
|
||||
@@ -235,7 +236,7 @@ jam -sTOOLS=gcc my_target
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<pre>jam -f<i>allyourbase-path</i> -sTOOLS="msvc gcc"</pre>
|
||||
<pre>bjam -sTOOLS="msvc gcc"</pre>
|
||||
|
||||
<td>default-build <tt>all</tt> with msvc and gcc
|
||||
|
||||
@@ -243,7 +244,7 @@ jam -sTOOLS=gcc my_target
|
||||
<td>
|
||||
<pre>
|
||||
set TOOLS=msvc
|
||||
jam
|
||||
bjam
|
||||
</pre>
|
||||
|
||||
<td>Set an NT environment variable to always build with MSVC<br>
|
||||
@@ -252,15 +253,16 @@ jam
|
||||
<tr>
|
||||
<td>
|
||||
<pre>
|
||||
jam -sBUILD=release
|
||||
bjam "-sBUILD=release <debug-symbols>on"
|
||||
</pre>
|
||||
|
||||
<td>release build <tt>all</tt> with default <tt><a href=
|
||||
"#tools">TOOLS</a></tt>:<br>
|
||||
<td>release build with debug symbols of <tt>all</tt> using
|
||||
default <tt><a href=
|
||||
"#tools">TOOLS</a></tt>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><pre>jam -sBUILD="debug release"</pre>
|
||||
<td><pre>bjam -sBUILD="debug release"</pre>
|
||||
|
||||
<td>debug and release build <tt>all</tt>.
|
||||
</table>
|
||||
@@ -277,7 +279,7 @@ jam -sBUILD=release
|
||||
<blockquote><pre>
|
||||
> <a href="#build">BUILD</a>="debug release" <i># assuming Unix</i>
|
||||
> export <a href="#build">BUILD</a>
|
||||
> jam ...
|
||||
> bjam ...
|
||||
</pre></blockquote>
|
||||
This approach can be OK for quick-and-dirty tests, but environment variable
|
||||
settings tend to be unstable and non-uniform across users and machines, so
|
||||
@@ -659,7 +661,7 @@ exe my_target : my_source1.cpp my_source2.c ;
|
||||
|
||||
<td rowspan="2">Platform-dependent
|
||||
|
||||
<td><tt>-sTOOLS="gcc msvc"</tt>
|
||||
<td><tt>"-sTOOLS=gcc msvc"</tt>
|
||||
<td>build with gcc and msvc
|
||||
|
||||
<tr>
|
||||
@@ -679,18 +681,18 @@ exe my_target : my_source1.cpp my_source2.c ;
|
||||
<td>build the <tt>release</tt> variant
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="debug release"</tt>
|
||||
<td><tt>"-sBUILD=debug release"</tt>
|
||||
|
||||
<td>build both <tt>debug</tt> and <tt>release</tt> variants
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="<optimization>speed"</tt>
|
||||
<td><tt>"-sBUILD=<optimization>speed"</tt>
|
||||
|
||||
<td>build a subvariant of the default variant (<tt>debug</tt>) with
|
||||
optimization for speed.
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="debug release <runtime-link>static/dynamic"</tt>
|
||||
<td><tt>"-sBUILD=debug release <runtime-link>static/dynamic"</tt>
|
||||
|
||||
|
||||
<td>build subvariants of the debug and release variants that link to
|
||||
@@ -1361,60 +1363,38 @@ jam -sMSVCNT="\"\"C:\Program Files\Microsoft Visual C++\VC98\&quo
|
||||
set MSVCNT=""C:\Program Files\Microsoft Visual C++\VC98\""
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="jambase_replacement">Jambase Replacement</a></h4>
|
||||
<h4><a name="jambase_replacement">Startup Behavior</a></h4>
|
||||
|
||||
<p>New logic has been added to allow the built-in Jambase to be replaced
|
||||
without recompiling Jam or adding command-line arguments. The user can
|
||||
control the location of the build system by setting any of the <tt>JAMBASE</tt>,
|
||||
<tt>BOOST_ROOT</tt>, or <tt>BOOST_BUILD_PATH</tt> environment variables (the settings of
|
||||
these variables can also be overridden on the command-line using the
|
||||
<tt>-s<i>VARIABLE</i>=</tt>... option).
|
||||
|
||||
<p>The process is controlled by variables (in decreasing
|
||||
precedence):
|
||||
<ul>
|
||||
|
||||
<li>If <tt>JAMBASE</tt> is set, it specifies the path to the Jambase
|
||||
replacement. Non-rooted paths are computed relative to the directory of
|
||||
Jam's invocation.
|
||||
|
||||
<li>Otherwise, if <tt>BOOST_BUILD_PATH</tt> or <tt>BOOST_ROOT</tt> is set,
|
||||
the build system filename is <tt><b>boost-build.jam</b></tt>.
|
||||
|
||||
<li>If the build system filename does not contain a path specification,
|
||||
the build system file is searched for on <tt>$(BOOST_BUILD_PATH)</tt>,
|
||||
then at <tt>$(BOOST_ROOT)/tools/build</tt>.
|
||||
|
||||
<li>If <tt>BOOST_BUILD_PATH</tt> was not set, it will be set to
|
||||
<tt>$(BOOST_ROOT)/tools/build</tt>.
|
||||
|
||||
<li>If neither <tt>JAMBASE</tt>, <tt>BOOST_ROOT</tt>, nor
|
||||
<tt>BOOST_BUILD_PATH</tt> is set, we use the built-in Jambase (nearly
|
||||
identical to the <a
|
||||
href="http://freetype.sourceforge.net/jam/index.html">FTJam</a> Jambase)
|
||||
and load the user's Jamfile. Perforce Jam has this behavior, and it is
|
||||
used for building Jam itself. <b>Thus, when you rebuild Jam, these
|
||||
variables should be unset</b>.
|
||||
|
||||
</ul>
|
||||
|
||||
<p>The rationale for this behavior is as follows:
|
||||
<ul>
|
||||
|
||||
<li> The Jam executable should allow the Jambase to be overridden to
|
||||
implement other build systems without the user having any knowledge
|
||||
of Boost, thus the <tt>JAMBASE</tt> variable.
|
||||
|
||||
<li> <tt>BOOST_BUILD_PATH</tt> is designed to be used to find all <a
|
||||
href="#module_support">modules</a> used by the build system, so that users
|
||||
and system administrators may non-intrusively add modules to the system.
|
||||
|
||||
<li> Many Boost users already have <tt>BOOST_ROOT</tt> set. If a user
|
||||
doesn't want to explicitly set up <tt>BOOST_BUILD_PATH</tt>,
|
||||
<tt>BOOST_ROOT</tt> will supply reasonable behavior.
|
||||
|
||||
</ul>
|
||||
<p>The Boost.Build v2 initialization behavior has been
|
||||
implemented. This behavior only applies when the executable
|
||||
being invoked is called "<code>bjam</code>" or, for
|
||||
backward-compatibility, when the <code>BOOST_ROOT</code>
|
||||
variable is set.
|
||||
|
||||
<ol>
|
||||
<li> We attempt to load "boost-build.jam" by searching from the
|
||||
current invocation directory up to the root of the
|
||||
file-system. This file is expected to invoke the
|
||||
<tt>boost-build</tt> rule to indicate where the Boost.Build
|
||||
system files are, and to load them.
|
||||
<li> If boost-build.jam is not found we error and exit, giving
|
||||
brief instructions on possible errors.
|
||||
<blockquote>
|
||||
As a backward-compatibility measure for older versions of Boost.Build,
|
||||
when the <code>BOOST_ROOT</code> variable is set, we first search for
|
||||
<code>boost-build.jam</code> in <code>$(BOOST_ROOT)/tools/build</code>
|
||||
and <code>$(BOOST_BUILD_PATH)</code>. If found, it is loaded and
|
||||
initialization is complete.
|
||||
</blockquote>
|
||||
<li> The <code>boost-build</code> rule adds its (optional) argument
|
||||
to the front of <code>BOOST_BUILD_PATH</code>, and attempts to
|
||||
load <code>bootstrap.jam</code> from those directories. If a
|
||||
relative path is specified as an argument, it is treated as
|
||||
though it was relative to the <code>boost-build.jam</code>
|
||||
file.
|
||||
<li> If the bootstrap.jam file was not found, we print a likely
|
||||
error message and exit.
|
||||
</ol>
|
||||
|
||||
<h4><a name="rule_indirection">Rule Indirection</a></h4>
|
||||
|
||||
@@ -1573,67 +1553,62 @@ module your_module
|
||||
|
||||
<p>
|
||||
|
||||
<h5><a name="module_locals">Local Variables</a></h5>
|
||||
<tt>module local </tt> <i>expression</i><tt> ;</tt><br>
|
||||
<i>- or -</i><br>
|
||||
<tt>module local </tt> <i>expression</i><tt> = </tt>
|
||||
<i>expression2</i><tt> ;</tt>
|
||||
<h5><a name="module_locals">Variable Scope</a></h5>
|
||||
|
||||
<p>The variables named by <i>expression</i> are given a distinct value
|
||||
in the module, and can be manipulated by code executing in the module
|
||||
without affecting variable bindings seen by other modules. If the
|
||||
assignment form is used, <i>expression2</i> is assigned to the
|
||||
variables when the declaration is executed. For example:
|
||||
|
||||
<blockquote>
|
||||
<p>Each module has its own set of dynamically nested variable
|
||||
scopes. When execution passes from module A to module B, all
|
||||
the variable bindings from A become unavailable, and are
|
||||
replaced by the bindings that belong to B. This applies
|
||||
equally to local and global variables:
|
||||
<pre>
|
||||
module M {
|
||||
<b>module local</b> x = a b c ;
|
||||
|
||||
rule f ( )
|
||||
{
|
||||
<blockquote>
|
||||
module A
|
||||
{
|
||||
x = 1 ;
|
||||
rule f ( )
|
||||
{
|
||||
local x = 1 2 3 ; # temp override for M's x
|
||||
N.g ; # call into module N, below
|
||||
local y = 999 ; # becomes visible again when B.f calls A.g
|
||||
B.f ;
|
||||
}
|
||||
rule g ( )
|
||||
{
|
||||
ECHO $(y) ; # prints "999"
|
||||
}
|
||||
ECHO $(x) ; # prints "a b c"
|
||||
}
|
||||
}
|
||||
|
||||
module N {
|
||||
rule g ( )
|
||||
{
|
||||
x = foo bar baz ; # sets global x
|
||||
M.h ; # call back into M, below
|
||||
}
|
||||
module B
|
||||
{
|
||||
y = 2 ;
|
||||
rule f ( )
|
||||
{
|
||||
ECHO $(y) ; # always prints "2"
|
||||
A.g ;
|
||||
}
|
||||
}
|
||||
|
||||
module M {
|
||||
rule h ( )
|
||||
{
|
||||
ECHO $(x) ; # prints "1 2 3"
|
||||
}
|
||||
}
|
||||
|
||||
M.f ;
|
||||
ECHO $(x) ; # prints "foo bar baz"
|
||||
</blockquote>
|
||||
</pre>
|
||||
</blockquote>
|
||||
The only way to access another module's local variables is through a
|
||||
rule defined in that module:
|
||||
|
||||
The only way to access another module's variables is by
|
||||
entering that module:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
module M {
|
||||
rule get ( names * )
|
||||
{
|
||||
return $($(names)) ;
|
||||
}
|
||||
rule peek ( module-name ? : variables + )
|
||||
{
|
||||
module $(module-name)
|
||||
{
|
||||
return $($(>)) ;
|
||||
}
|
||||
}
|
||||
ECHO [ <b>M.get</b> x ] ; # prints "a b c"
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
Note that because existing variable bindings change whenever a
|
||||
new module scope is entered, argument bindings become
|
||||
unavailable. That explains the use of
|
||||
"<code>$(>)</code>" in the <code>peek</code> rule
|
||||
above.
|
||||
|
||||
<h5><a name="local_rules">Local Rules</a></h5>
|
||||
|
||||
<blockquote>
|
||||
@@ -1757,36 +1732,6 @@ for <b>local</b> y in $(x)
|
||||
ECHO $(y) ; # prints "1", "2", or "3"
|
||||
}
|
||||
ECHO $(y) ; # prints "4 5 6"
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="while_loops">While Loops</a></h4>
|
||||
|
||||
In classic Jam, some constructs are only possible using recursion:
|
||||
<blockquote><pre>
|
||||
# returns the part of $(list) following the first occurrence of $(symbol)
|
||||
rule after-symbol ( symbol : list * )
|
||||
{
|
||||
if ! $(list) || ( $(symbol) = $(list[1]) )
|
||||
{
|
||||
return $(list[2-]) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return [ after-symbol $(symbol) : $(list[2-]) ] ;
|
||||
}
|
||||
}
|
||||
</pre></blockquote>
|
||||
The addition of <tt>while</tt> loops allows a simpler formulation for this and
|
||||
many other rules:
|
||||
<blockquote><pre>
|
||||
rule after-symbol ( symbol : list * )
|
||||
{
|
||||
while $(list) && $(list[1]) != $(symbol)
|
||||
{
|
||||
list = $(list[2-]) ;
|
||||
}
|
||||
return $(list) ;
|
||||
}
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="negative_indexing">Negative Indexing</a></h4>
|
||||
@@ -1852,8 +1797,27 @@ rule bind-rule ( target : path )
|
||||
should be built anyway. Boost Jam extends <tt>NOCARE</tt> to apply to
|
||||
targets with build actions: if their build actions exit with a nonzero
|
||||
return code, dependent targets will still be built.
|
||||
|
||||
<h4><a name="RMOLD">Removing Outdated Targets</a></h4>
|
||||
<blockquote>
|
||||
<pre>
|
||||
rule RMOLD ( targets * )
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>Perforce Jam removes any target files that may exist on disk
|
||||
when the rule used to build those targets fails. However,
|
||||
targets whose dependencies fail to build are not removed by
|
||||
default. The <code>RMOLD</code> rule causes its arguments to be
|
||||
removed if any of their dependencies fail to build.
|
||||
|
||||
|
||||
<h4><a name="SUBST_rule">The <tt>SUBST</tt> Rule</a></h4>
|
||||
|
||||
<p><b>Note:</b> the <code>SUBST</code> rule is deprecated in favor
|
||||
of Perforce Jam's built-in <cdoe>MATCH</cdoe> rule, which has been
|
||||
rolled into Boost.Jam.
|
||||
|
||||
<p>The behavior of the <tt>SUBST</tt> rule for regular-expression matching
|
||||
and replacement (originally added in <a href=
|
||||
"http://freetype.sourceforge.net/jam/index.html">FTJam</a>) has been
|
||||
@@ -1996,6 +1960,9 @@ rule BACKTRACE ( )
|
||||
"change" a global variable by declaring a <tt>local</tt> of the
|
||||
same name.
|
||||
|
||||
<p>Many of the variables that are used to configure how Boost.Build works
|
||||
internally are listed <a href="variables.html">here</a> with brief descriptions.
|
||||
|
||||
<h3>Variables Associated with SubProject Identity</h3>
|
||||
|
||||
<ul>
|
||||
|
||||
@@ -9,6 +9,7 @@ feature profiling : off on ;
|
||||
|
||||
feature struct-alignment : auto 1 2 4 8 16 ;
|
||||
feature eh-model : default fast msvc ; # metrowerks only
|
||||
feature vtable-thunks : default on off ; # gcc only
|
||||
|
||||
feature threading : single multi ;
|
||||
|
||||
@@ -67,6 +68,7 @@ gTARGET_TYPE_REQUIREMENTS(DLL) = <shared-linkable>true ;
|
||||
|
||||
##### Variant definitions ####
|
||||
COMMON_PROPERTIES ?=
|
||||
<vtable-thunks>default
|
||||
<struct-alignment>auto
|
||||
<eh-model>default
|
||||
<threading>single
|
||||
|
||||
234
gcc-nocygwin-tools.html
Normal file
234
gcc-nocygwin-tools.html
Normal file
@@ -0,0 +1,234 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Language" content="en-us">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - gcc-nocygwin toolset</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">gcc-nocygwin toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>
|
||||
This page describes the gcc-nocygwin toolset, which builds Boost using
|
||||
the -mno-cygwin option of the Cygwin gcc compiler. This avoids
|
||||
introducing dependencies on the Cygwin Unix-emulation layer, allowing
|
||||
you to build Windows executables which are not dependant on
|
||||
cygwin1.dll.
|
||||
</p>
|
||||
<p>
|
||||
You could achieve the same results by using the MinGW version of gcc,
|
||||
but the Cygwin compiler has two advantages:
|
||||
<ol>
|
||||
<li>It can build for both environments - Unix emulation and Windows
|
||||
native - with one compiler.
|
||||
<li>You can use the latest versions of GCC. The latest released
|
||||
version of MinGW GCC is 2.95.3, and building MinGW-specific versions
|
||||
of GCC 3.0.x has proven to be quite difficult. However, it's
|
||||
straightforward under Cygwin. Just be sure to configure with
|
||||
<code>--enable-languages=c,c++</code> to disable other languages which
|
||||
fail to build properly.
|
||||
|
||||
</ol>
|
||||
</p>
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
<p>
|
||||
The gcc toolset responds to the variables shown in the following table,
|
||||
which can be set in the environment or configured on the jam
|
||||
command-line using <code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>.
|
||||
</p>
|
||||
<p>
|
||||
This toolset is an extension to the gcc-stlport toolset and therefore
|
||||
also responds to all of the configuration variables for
|
||||
<a href="gcc-stlport-tools.html#configuration">gcc-stlport</a>
|
||||
and
|
||||
<a href="gcc-tools.html#configuration">gcc</a>
|
||||
in addition to those listed below.
|
||||
</p>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Variable Name</th>
|
||||
<th>Semantics</th>
|
||||
<th>Default</th>
|
||||
<th>Notes</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>NOCYGWIN_<br>STLPORT_<br>LIB_ID</code>
|
||||
</td>
|
||||
<td>
|
||||
The name used to generate the stlport library names (corresponding
|
||||
to the LIB_BASENAME variable in the STLport make files).
|
||||
</td>
|
||||
<td>
|
||||
mingw32
|
||||
</td>
|
||||
<td>
|
||||
This forms the middle part of the STLport library
|
||||
names, for example libstlport_<b>mingw32</b>_debug.a
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Prerequisites</h2>
|
||||
|
||||
<p>
|
||||
Obviously, you'll need Cygwin installed on your Windows
|
||||
system. Earlier releases of Cygwin came as monolithic packages, but
|
||||
this switched to individually selectable components around 2000. If
|
||||
you've got a recent installation, you'll have to make sure you've got
|
||||
the optional mingw-runtime package installed. Have a look in
|
||||
/lib/mingw to see if things like libmingw32.a and libcrtdll.a are
|
||||
present, and that the directory /usr/include/mingw includes the
|
||||
standard headers stdio.h etc. Install the additional package if
|
||||
necessary.
|
||||
</p>
|
||||
<p>
|
||||
You will also need the STLport standard library installed and fully
|
||||
compiled (i.e. using its own iostreams) without any Cygwin
|
||||
dependencies. This would be very easy if you had the real mingw
|
||||
compiler installed, because the STLport distribution includes a
|
||||
ready-made makefile for this, called gcc-mingw.mak. Making this work
|
||||
with the Cygwin compiler requires a couple of changes to the file (see
|
||||
<a href="#stlport">below</a> for details). Sooner or later there may
|
||||
be a specific nocygwin makefile for STLport which will make this
|
||||
easier.
|
||||
</p>
|
||||
<p>
|
||||
Finally, you will need a Boost jam executable that was built for
|
||||
Windows (aka NT). The Cygwin-built Boost jam is <b>not</b> suitable,
|
||||
primarily because it executes commands via the Cygwin shell, which
|
||||
doesn't handle backslashes in Windows pathnames. Until there is a
|
||||
specific nocygwin makefile for Boost jam, it is probably best to
|
||||
download the prebuilt executable for Windows.
|
||||
</p>
|
||||
|
||||
<h2>Building with gcc-nocygwin</h2>
|
||||
<p>
|
||||
Refer to the <a
|
||||
href="gcc-stlport-tools.html#configuration">gcc-stlport</a>
|
||||
configuration section for details of the <code>STLPORT_ROOT</code>
|
||||
variable, which you'll have to configure (at the very least). Make
|
||||
sure to use Windows-style pathnames and not the /cygdrive/x/... style
|
||||
(you're using the Windows native Boost jam, remember).
|
||||
</p>
|
||||
<p>
|
||||
Configure additional variables as described <a
|
||||
href="../../libs/python/doc/building.html">here</a> if you want to
|
||||
build the <a href="../../libs/python/doc/index.html">Boost.Python</a>
|
||||
library, making sure to point it at a <b>Windows</b> installation of
|
||||
Python and not a Cygwin one. At the time of writing, the Python
|
||||
example simple_vector.cpp fails to compile in debug mode
|
||||
because of an incompatability with the STLport debugging STL
|
||||
containers, but everything else should build properly.
|
||||
</p>
|
||||
<p>
|
||||
If your STLport libraries don't have names like stlport_mingw32…
|
||||
you will need to set the environment variable
|
||||
<code>NOCYGWIN_STLPORT_LIB_ID</code> to replace the "mingw32" part of
|
||||
the library names.
|
||||
</p>
|
||||
<p>
|
||||
Once your environment is right, you can
|
||||
<a href="build_system.htm#initiating">start</a> the build as for any other
|
||||
toolset, using the toolset name "gcc-nocygwin". If you want to
|
||||
see exactly what's going on, try supplying jam the <code>-d2</code>
|
||||
option to show the raw commands as they execute.
|
||||
</p>
|
||||
<p>
|
||||
If you work with COM or DirectX, you will want to force gcc to
|
||||
generate vtable-thunks by including <code><vtable-thunks>on</code>
|
||||
in the BUILD <a href="build_system.htm#user_globals">global
|
||||
variable</a>. If you're messing around with this stuff, make extra sure
|
||||
that you build all your libraries (including STLport) with the same
|
||||
vtable style.
|
||||
|
||||
<h2>Boost threads library and gcc 2.95.3-5</h2>
|
||||
<p>
|
||||
The Cygwin-special gcc release 2.95.3-5 does not include a thread-safe
|
||||
version of libgcc.a, which prevents any of it's code being
|
||||
thread-safe, even with the -mthreads option. If you're feeling lucky,
|
||||
grafting in the thread-safe versions of _eh.o and frame.o from the
|
||||
mingw 2.95.3 libgcc.a seems to fix the problem (give the hybrid
|
||||
library a new name and adjust the compiler's specs file
|
||||
appropriately). Later releases of the Cygwin compiler probably won't
|
||||
suffer from this restriction, so you should definitely upgrade if you
|
||||
want to use the threads library.
|
||||
</p>
|
||||
|
||||
<a name="stlport"></a>
|
||||
<h2>Building a native STLport with Cygwin gcc</h2>
|
||||
<p>
|
||||
The current release (4.5.3) of STLport does not include an extra
|
||||
makefile to build the libraries with the -mno-cygwin mode of Cygwin
|
||||
gcc, but you can use the existing <code>gcc-mingw.mak</code> file by
|
||||
setting the
|
||||
<code>CXXFLAGS_COMMON</code> variable on your make command line, as follows:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
make -fgcc-mingw.mak "CXXFLAGS_COMMON=-mno-cygwin -I/usr/include/mingw"
|
||||
</pre>
|
||||
|
||||
You might also need to add <code>-mthreads</code> and/or
|
||||
<code>-fvtable-thunks</code> within the quotes, depending on what kind
|
||||
of executables you ultimately want to produce. You can create multiple
|
||||
versions of the libraries by setting a different
|
||||
<code>LIB_BASENAME</code> in each case, and set up a corresponding
|
||||
value in the
|
||||
<code>NOCYGWIN_STLPORT_LIB_ID</code> shell variable before building
|
||||
Boost.
|
||||
</p>
|
||||
|
||||
<p>If you have built a newer version of Cygwin GCC from source, or
|
||||
you've built an older one and configured it with
|
||||
<code>--prefix=</code>, you'll need to add the following
|
||||
<code>DYN_LINK</code> variable setting in order to get the GCC support
|
||||
libraries into the library search path when the STLPort DLLs are
|
||||
built:
|
||||
|
||||
<pre>
|
||||
"DYN_LINK=c++ -shared -L/usr/local/lib -o"
|
||||
</pre>
|
||||
|
||||
(substitute the path you passed to <code>--prefix=</code> for
|
||||
<code>/usr/local/lib</code> if you are using a non-standard
|
||||
configuration).
|
||||
|
||||
<p>
|
||||
Make sure that you're really compiling the STLport iostreams instead
|
||||
of just wrapping the Cygwin gcc streams. The default behaviour for
|
||||
STLport 4.x is correct, but it is possible to reconfigure this
|
||||
manually. Refer to the documentation on selecting the IOStreams mode
|
||||
if you're in doubt.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<i>
|
||||
Toolset and docs contributed May 2002 by
|
||||
<a href="mailto:RaoulGough@yahoo.co.uk">Raoul Gough</a>
|
||||
</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
83
gcc-nocygwin-tools.jam
Normal file
83
gcc-nocygwin-tools.jam
Normal file
@@ -0,0 +1,83 @@
|
||||
# (C) Copyright David Abrahams and Carlos Pinto Coelho 2001, 2002.
|
||||
# Permission to copy, use, modify, sell and distribute this software
|
||||
# is granted provided this copyright notice appears in all
|
||||
# copies. This software is provided "as is" without express or implied
|
||||
# warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
#
|
||||
# gcc-nocygwin toolset by Raoul Gough (RaoulGough@yahoo.co.uk)
|
||||
#
|
||||
# This toolset builds boost on a cygwin system using the -mno-cygwin
|
||||
# gcc option, which creates windows-native binaries (without any
|
||||
# dependencies on cygwin1.dll). It requires an STLport built
|
||||
# by mingw gcc, or maybe by cygwin gcc using the -mno-cygwin
|
||||
# option, if you feel like messing with the STLport makefiles.
|
||||
#
|
||||
# Configuration:
|
||||
#
|
||||
# You need a boost jam executable that was built for NT, not
|
||||
# cygwin. There are two reasons for this. Firstly, you need the
|
||||
# NT jam variable to be set, and secondly, the cygwin build of
|
||||
# boost jam executes commands via the cygwin shell, which doesn't
|
||||
# handle backslashes in pathnames properly.
|
||||
#
|
||||
# Don't forget to set STLPORT_ROOT, either in your environment
|
||||
# or in Jamrules in the boost installation directory. Also set
|
||||
# BOOST_ROOT. Use native windows path names and not the
|
||||
# /cygdrive/... style.
|
||||
#
|
||||
# Set NOCYGWIN_STLPORT_LIB_ID to set the STLport naming
|
||||
# convention (default is "mingw32" which looks for libraries
|
||||
# named like stlport_mingw32_stldebug.lib)
|
||||
#
|
||||
# Run boost jam from the boost install directory like this:
|
||||
#
|
||||
# jam -sTOOLS=gcc-nocygwin
|
||||
#
|
||||
# If things are going wrong, a handy jam option is -d2, which shows
|
||||
# commands before execution.
|
||||
#
|
||||
|
||||
NOCYGWIN_STLPORT_LIB_ID ?= mingw32 ;
|
||||
|
||||
{
|
||||
local GCC_STLPORT_LIB_ID = $(NOCYGWIN_STLPORT_LIB_ID) ;
|
||||
|
||||
extends-toolset gcc-stlport ;
|
||||
}
|
||||
|
||||
flags gcc-nocygwin CFLAGS : -mno-cygwin ;
|
||||
flags gcc-nocygwin LINKFLAGS : -mno-cygwin ;
|
||||
flags gcc-nocygwin LINKFLAGS <threading>multi : -mthreads ;
|
||||
|
||||
#### Link ####
|
||||
|
||||
#
|
||||
# Duplicated from gcc-tools.jam (unfortunately) because we don't want
|
||||
# IMPLIB_COMMAND to include -Wl,--export-all-symbols
|
||||
#
|
||||
|
||||
rule Link-action
|
||||
{
|
||||
SPACE on $(<) = " " ;
|
||||
# if we don't have a GNU linker then we can't pass any GNU-ld specific flags:
|
||||
if $(NO_GNU_LN)
|
||||
{
|
||||
LNOPT on $(<) = ;
|
||||
}
|
||||
else
|
||||
{
|
||||
LNOPT on $(<) = "" ;
|
||||
}
|
||||
|
||||
OUTTAG on $(<) = "" ;
|
||||
SOTAG on $(<) = ;
|
||||
ACTION_1 on $(<) = ;
|
||||
|
||||
# This will appear before the import library name when building a DLL, but
|
||||
# will be "multiplied away" otherwise.
|
||||
IMPLIB_COMMAND on $(<) = "-Wl,--exclude-symbols,_bss_end__:_bss_start__:_data_end__:_data_start__ -Wl,--out-implib," ;
|
||||
DEPENDS $(<) : $(NEEDLIBS) ;
|
||||
gRUN_LD_LIBRARY_PATH($(<)) += $(GCC_STDLIB_DIRECTORY) ;
|
||||
gcc-Link-action $(<) : $(>) ;
|
||||
}
|
||||
@@ -23,14 +23,16 @@
|
||||
|
||||
<p>Boost.Build's <a href="http://gcc.gnu.org">gcc-stlport</a> toolset supports the
|
||||
GNU GCC compiler using <a href="http://www.stlport.org">STLport</a> as a replacement
|
||||
to the GNU libg++. This toolset is an extension to the
|
||||
<a href="gcc-tools.html">gcc toolset</a> and therefore supports the same functionality.
|
||||
to the GNU libg++.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The gcc-stlport toolset responds to the following variables which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>. This toolset is an extension to the
|
||||
<a href="gcc-tools.html">gcc toolset</a> and therefore responds to all
|
||||
of the GCC <a href="gcc-tools.html#configuration">configuration
|
||||
variables</a> in addition to those listed below.
|
||||
|
||||
<table border="1">
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@ also supports <a href="http://www.cygwin.com">Cygwin</a> GCC, though
|
||||
<a href="http://www.mingw.org">MinGW</a> has <a
|
||||
href="mingw-tools.html">its own distinct toolset</a>.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The gcc toolset responds to the following variables can be set in the
|
||||
The gcc toolset responds to the following variables, which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
|
||||
@@ -168,6 +168,8 @@ flags gcc CFLAGS <profiling>on : -pg ;
|
||||
flags gcc LINKFLAGS <profiling>on : -pg ;
|
||||
|
||||
flags gcc C++FLAGS <rtti>off : -fno-rtti ;
|
||||
flags gcc C++FLAGS <vtable-thunks>on : -fvtable-thunks ;
|
||||
flags gcc C++FLAGS <vtable-thunks>off : -fvtable-thunks=0 ;
|
||||
|
||||
flags gcc CFLAGS <cflags> ;
|
||||
flags gcc C++FLAGS <cxxflags> ;
|
||||
|
||||
278
index.html
278
index.html
@@ -14,95 +14,107 @@
|
||||
|
||||
<img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" align= "center" width="277" height="86">Building
|
||||
Boost Libraries</h1>
|
||||
<table border="1" cellpadding="5" width="656">
|
||||
<tr>
|
||||
<td width="638"><font size="5" color="#FF0000"><b>Read This
|
||||
First!</b></font> <p>Boost.Build is fairly new as yet. Some features
|
||||
are missing or incomplete. Instructions for accomplishing basic tasks
|
||||
(this page) are rudimentary. But enough functionality is working
|
||||
well to make using Boost.Build worthwhile. The important
|
||||
bits-and-pieces are all there - what's left is some of the relatively
|
||||
minor glue to make the system smooth and easy to use. Secondary tasks like
|
||||
copying libraries to installation specific directories are weak.</p> <p>If
|
||||
there isn't a configuration file (see <a href="#Tools">Tools</a>) available
|
||||
for your favorite compiler, consider contributing one. </p> <p>Note
|
||||
that the underlying Boost.Jam build engine is mature software, and the
|
||||
original Jam build engine has been
|
||||
widely used for many years. The Boost specific extensions are well
|
||||
on their way to becoming stable, and have begun to attract interest and
|
||||
use outside of Boost.</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<p><a href="#Introduction">Introduction</a><br>
|
||||
<a href="#Preliminaries">Preliminaries</a><br>
|
||||
<a href="#Building">Building Boost Libraries</a><br>
|
||||
<a href="#Moretools">More on using the tools</a><br>
|
||||
<a href="#Tools">Tools available</a><br>
|
||||
<a href="#Configuring">Configuring the tools</a><br>
|
||||
<a href="#Tools">Supported Toolsets</a><br>
|
||||
<a href="#Jam">Boost.Jam executable</a></p>
|
||||
<h2><a name="Introduction">Introduction</a></h2>
|
||||
<p>These instructions explain how to accomplish common tasks using <b>Boost.Build</b>,
|
||||
the Boost Build System. The build system uses <a href="build_system.htm">
|
||||
Boost.Jam</a>, an extension of the
|
||||
<a href="http://www.perforce.com/jam/jam.html">Perforce Jam</a> portable <i>make</i>
|
||||
replacement.</p>
|
||||
<p>For tasks not covered here, see the full <a href="build_system.htm">build
|
||||
system documentation</a>.</p>
|
||||
<p>Note that many Boost libraries are implemented entirely within their headers,
|
||||
and so can be used without building object libraries. Libraries that do
|
||||
require building object libraries first include the Boost Python, Regular
|
||||
Expression, and Thread libraries.</p>
|
||||
|
||||
<p>These instructions explain how to accomplish common tasks using
|
||||
<b>Boost.Build</b>, the Boost Build System. The build system uses <a
|
||||
href="build_system.htm"> Boost.Jam</a>, an extension of the
|
||||
<a href="http://www.perforce.com/jam/jam.html">Perforce Jam</a>
|
||||
portable <i>make</i> replacement.</p>
|
||||
|
||||
<p>For tasks not covered here, see the full <a
|
||||
href="build_system.htm">build system documentation</a>.</p>
|
||||
|
||||
<p>Note that many Boost libraries are implemented entirely within
|
||||
their headers, and so can be used without building object
|
||||
libraries. Libraries that do require building object libraries first
|
||||
include the <a href="../../libs/python/doc/index.html">Python</a>, <a
|
||||
href="../../libs/regex/index.htm">Regex</a>, and <a
|
||||
href="../../libs/thread/doc/index.html">Threads</a> libraries.
|
||||
|
||||
<h2><a name="Preliminaries">Preliminaries</a></h2>
|
||||
<ul>
|
||||
<li><a href="../../more/download.html">Download Boost</a>, and unpack the full
|
||||
directory structure into some root directory.</li>
|
||||
|
||||
<li>Install the <a href="#Jam">Boost.Jam executable</a> if needed. <a href="#Jam">
|
||||
Pre-builts</a> are available. Make sure it's in your path. (Note: Boost
|
||||
requires an enhanced version of Jam; the basic version won't work.)</li>
|
||||
<li>Set any environment variables required to run your compiler and related
|
||||
tools from the command line. (It might be a good idea to verify your command
|
||||
line compiler is working if you don't use it regularly.) If you don't want
|
||||
to clutter your environment, see <a href="#Moretools">More on using the
|
||||
tools</a> for alternatives.</li>
|
||||
|
||||
<li><a href="#Configuring">Configure</a> the command-line toolset(s)
|
||||
you intend to use. It might be a good idea to verify your command
|
||||
line compiler is working if you don't use it regularly.
|
||||
|
||||
<li>Optional: if you intend to build the <a
|
||||
href="../../libs/python/doc/index.html">Boost.Python</a> library, set
|
||||
environment variables to configure Boost.Build for your Python
|
||||
installation. For more information, see these <a
|
||||
href="../../libs/python/doc/building.html">instructions</a>. If you
|
||||
leave this step out, Boost.Build will print a message about how to
|
||||
do it, and will skip the build for Boost.Python.
|
||||
|
||||
</ul>
|
||||
|
||||
<h2><a name="Building">Building</a> Boost Libraries</h2>
|
||||
|
||||
<p>Using your operating system's command line interpreter, execute the following
|
||||
steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
|
||||
<ul>
|
||||
<li>Change to the Boost root directory. (The directory you unpacked the
|
||||
<li>Change to the Boost root directory. (The directory you unpacked the
|
||||
distribution into; unless you changed it, the name will be boost_n_n_n where
|
||||
n_n_n is the release number. Among others files, it contains c++boost.gif,
|
||||
and subdirectories boost, libs, more, etc.)</li>
|
||||
n_n_n is the release number. Among others files, it contains c++boost.gif,
|
||||
and subdirectories boost, libs, more, etc.)
|
||||
<blockquote>
|
||||
<p><code>chdir boost_1_27_0 // or whatever release you downloaded</code></p>
|
||||
<p><code>chdir boost_1_28_0 </code> <i>(or whatever release you downloaded)</i>
|
||||
</blockquote>
|
||||
|
||||
<li>Build the Boost libraries for your <a href="#Tools">tools</a>. The example
|
||||
is for the GNU and Metrowerks compilers.</li>
|
||||
<li>Invoke the build system, specifying the <a
|
||||
href="#Tools">toolset</a>(s) you wish to use. The example is for
|
||||
the GNU and Metrowerks compilers. For more sophisticated jam
|
||||
invocation options, see this <a
|
||||
href="build_system.htm#initiating">documentation</a>.
|
||||
<blockquote>
|
||||
<p><code>bjam -sTOOLS="gcc metrowerks"</code></p>
|
||||
<p><code>bjam "-sTOOLS=gcc metrowerks"</code></p>
|
||||
</blockquote>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2><a name="Moretools">More on using the tools</a></h2>
|
||||
<h2><a name="Configuring">Configuring the tools</a></h2>
|
||||
<p>The build system's toolsets are designed to work in either of two ways:</p>
|
||||
<ol>
|
||||
<li>The user sets up all of the environment for each toolset he wants to use,
|
||||
in the normal way. For example, for Microsoft VC++, ...vc98/bin is in the
|
||||
path, vcvars32.bat or equivalent has been invoked, etc. For Metrowerks
|
||||
CodeWarrior, cwenv.bat or equivalent has been called and ...Other Metrowerks
|
||||
Tools/Command Line Tools is in the path.<br>
|
||||
|
||||
<li>The user sets up all of the environment for each toolset he
|
||||
wants to use in the normal way. For example, for Microsoft VC++,
|
||||
...vc98/bin is in the path, vcvars32.bat or equivalent has been
|
||||
invoked, etc. For Metrowerks CodeWarrior, cwenv.bat or equivalent
|
||||
has been called and ...Other Metrowerks Tools/Command Line Tools
|
||||
is in the path. Many Unix operating systems come preconfigured
|
||||
this way and require no user intervention.<br>
|
||||
<br>
|
||||
</li>
|
||||
<li>The user doesn't want his environment cluttered with this junk and wants
|
||||
to avoid the many other things done by the vendor's script files. Instead,
|
||||
he or she sets variables which point to the toolset installation directories
|
||||
(possibly in the Jamrules, or a user-setup.jam file invoked by the Jamrules).
|
||||
These variables are used by the build system to locate the tools and invoke
|
||||
the necessary setup. They are described in the comments in each toolset's
|
||||
.jam file.</li>
|
||||
|
||||
<li>The user doesn't want his environment cluttered with settings or
|
||||
has non-standard installations for some of his tools. Instead, he
|
||||
or she sets variables which point to the toolset installation
|
||||
directories, either in the command shell environment or on the
|
||||
<code>bjam</code> command-line. These variables are used by the
|
||||
build system to locate the tools and invoke the necessary
|
||||
setup.
|
||||
</ol>
|
||||
<h2><a name="Tools">Tools</a> available</h2>
|
||||
|
||||
<h2><a name="Tools">Supported Toolsets</a></h2>
|
||||
|
||||
The following toolsets are supported by Boost.Build. For information
|
||||
about <a href="#Configuring">configuring</a> each toolset, click its name in the leftmost
|
||||
column.
|
||||
|
||||
<table border="1" cellpadding="5">
|
||||
<tr>
|
||||
<td><b>TOOLS Name</b></td>
|
||||
@@ -110,79 +122,163 @@ steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code><a href="borland-tools.html">borland</a></code></td>
|
||||
<td>Borland command line compiler tools</td>
|
||||
<td><a href="http://www.borland.com/bcppbuilder/freecompiler">Borland</a> C++</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code><a href="como-tools.html">como</a></code></td>
|
||||
<td>Comeau command line compiler tools</td>
|
||||
<td><a href="http://www.comeaucomputing.com">Comeau C++</a> compiler front-end for Windows,
|
||||
using Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual C++</a>as a back-end.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="gcc-tools.html">gcc</a></code></td>
|
||||
<td>GNU GCC command line compiler tools</td>
|
||||
<td><a href="http://gcc.gnu.org">GNU GCC</a> on Unix and <a href="http://www.cygwin.com">Cygwin</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="gcc-stlport-tools.html">gcc-stlport</a></code></td>
|
||||
<td>GNU GCC command line compiler tools, using the STLport library</td>
|
||||
<td><a href="http://gcc.gnu.org">GNU GCC</a> on Unix and <a
|
||||
href="http://www.cygwin.com">Cygwin</a>, using the <a
|
||||
href="http://www.stlport.org">STLport</a> standard library
|
||||
implementation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>intel-win32</code></td>
|
||||
<td>Intel command line compiler tools under Win32 using the
|
||||
Microsoft library</td>
|
||||
<td><code><a href="gcc-nocygwin-tools.html">gcc-nocygwin</a></code></td>
|
||||
<td>GNU GCC Cygwin command line compiler tools running in
|
||||
"no-cygwin" mode, using the <a href="http://www.stlport.org">STLport</a>
|
||||
standard library implementation (produces commercially redistributable
|
||||
objects)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>intel-linux</code></td>
|
||||
<td>Intel command line compiler tools under Linux</td>
|
||||
<td><code><a href="intel-win32-tools.html">intel-win32</a></code></td>
|
||||
<td><a
|
||||
href="http://www.intel.com/software/products/compilers/c60/">Intel
|
||||
C++ for Windows</a> using the Dinkumware standard library in the Intel-required Microsoft
|
||||
<a href="http://msdn.microsoft.com/visualc/">Visual C++</a> 6 or 7
|
||||
installation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>kcc</code></td>
|
||||
<td>KAI command line compiler tools</td>
|
||||
<td><code><a href="intel-linux-tools.html">intel-linux</a></code></td>
|
||||
<td><a href="http://www.intel.com/software/products/compilers/c60l/">Intel C++ for Linux</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>metrowerks</code></td>
|
||||
<td>Metrowerks CodeWarrior command line compiler tools</td>
|
||||
<td><code><a href="kcc-tools.html">kcc</a></code></td>
|
||||
<td><a href="http://developer.intel.com/software/products/kcc/">KAI C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>msvc</code></td>
|
||||
<td>Microsoft Visual C++ command line compiler tools</td>
|
||||
<td><code><a href="metrowerks-tools.html">metrowerks</a></code></td>
|
||||
<td><a href="http://www.metrowerks.com">Metrowerks CodeWarrior</a> command-line tools</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>msvc-stlport</code></td>
|
||||
<td>Microsoft Visual C++ command line compiler tools, using the STLport library</td>
|
||||
<td><code><a href="mingw-tools.html">mingw</a></code></td>
|
||||
<td>GNU GCC and associated tools in <a
|
||||
href="http://www.mingw.org">MinGW</a> configuration (produces
|
||||
commercially redistributable objects)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>vacpp</code></td>
|
||||
<td>IBM Visual Age C++ command line compiler tools</td>
|
||||
<td><code><a href="mipspro-tools.html">mipspro</a></code></td>
|
||||
<td>SGI <a href="http://www.sgi.com/developers/devtools/languages/mipspro.html">
|
||||
MIPSpro C and C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="mipspro-tools.html">mipspro</a></code></td>
|
||||
<td>SGI <a href="http://www.sgi.com/developers/devtools/languages/mipspro.html">
|
||||
MIPSpro C and C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="msvc-tools.html">msvc</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="msvc-stlport-tools.html">msvc-stlport</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools, using the <a
|
||||
href="http://www.stlport.org">STLport</a> standard library
|
||||
implementation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="tru64cxx-tools.html">tru64cxx</a></code></td>
|
||||
<td><a href="http://www.tru64unix.compaq.com/cplus/">Compaq C++</a>
|
||||
for Tru64 UNIX (versions prior to 6.5)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="tru64cxx-tools.html">tru64cxx65</a></code></td>
|
||||
<td><a href="http://www.tru64unix.compaq.com/cplus/">Compaq C++</a>
|
||||
Version 6.5 for Tru64 UNIX</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><code><a href="vacpp-tools.html">vacpp</a></code></td>
|
||||
<td><a href="http://www-3.ibm.com/software/ad/vacpp/">IBM Visual
|
||||
Age C++</a> command-line tools</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="vc7-tools.html">vc7</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools, in case you are using the <a
|
||||
href="msvc-tools.html"><code>msvc</code></a> toolset for a <a
|
||||
href="http://msdn.microsoft.com/visualc/productinfo/previous/default.asp">Visual
|
||||
C++ 6.x</a>.</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<p>Unless otherwise specified, the library is assumed to be the one shipped with
|
||||
the compiler.</p>
|
||||
<p>Additional tools can be supplied by adding an appropriate xxxx-tools.jam file
|
||||
to the tools/build subdirectory, where xxxx is the name of the tool being
|
||||
added. If you write an additional toolset file, please submit it to Boost
|
||||
added. If you write an additional toolset file, please submit it to Boost
|
||||
so others may benefit from your work.</p>
|
||||
|
||||
<h2>Boost.<a name="Jam">Jam</a> executable</h2>
|
||||
|
||||
<p>Pre-built Boost.Jam executables are available for the following platforms:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.hpux/jam.gz">
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.hpux/bjam.gz">
|
||||
HPUX</a> </li>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.aix/jam.gz">
|
||||
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.aix/bjam.gz">
|
||||
IBM Aix</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxx86/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxx86/bjam.gz">
|
||||
Linux-x86</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/boost-build.win.zip">
|
||||
Microsoft Windows</a> (includes Boost.Build files and boost-build helper
|
||||
program).</li>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.irix/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.ntx86/bjam.zip">
|
||||
Microsoft Windows</a>
|
||||
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.irix/bjam.gz">
|
||||
SGI Irix</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.solaris/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.solaris/bjam.gz">
|
||||
SUN Solaris</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.osf/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.osf/bjam.gz">
|
||||
Compaq Tru64</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxppc/bjam.gz">
|
||||
Linux-PPC</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>RedHat Linux RPM packages are available:</p>
|
||||
<ul>
|
||||
@@ -221,11 +317,11 @@ the Boost.Jam executable yourself:</p>
|
||||
libraries created by the initial make in the <tt>jam_src</tt> directory.
|
||||
</ul>
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->09 May, 2002<!--webbot bot="Timestamp" i-checksum="40401" endspan -->
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->15 May, 2002<!--webbot bot="Timestamp" i-checksum="13973" endspan -->
|
||||
</p>
|
||||
<p>© Copyright 2001 Beman Dawes</p>
|
||||
<p> </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="http://www.intel.com/software/products/compilers/c60/">intel-linux</a> toolset supports the
|
||||
<p>Boost.Build's <a href="http://www.intel.com/software/products/compilers/c60l/">intel-linux</a> toolset supports the
|
||||
Intel C++ Compiler for Linux.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
@@ -21,13 +21,11 @@
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="kcc-tools.html">kcc</a> toolset supports the
|
||||
<p>Boost.Build's <a href="http://developer.intel.com/software/products/kcc/">kcc</a> toolset supports the
|
||||
Intel KAI C++ Compiler.
|
||||
|
||||
<p><b>WARNING:</b> This compiler is no longer being distributed by Intel, see the
|
||||
<a href="http://developer.intel.com/software/products/kcc/announcement.htm">announcement</a> for details.
|
||||
And our support for it is questionable. We would love it if someone out there with this
|
||||
compiler would give us feedback on this support.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
|
||||
@@ -4,16 +4,10 @@
|
||||
# express or implied warranty, and with no claim as to its suitability
|
||||
# for any purpose.
|
||||
|
||||
# This file is /NOT/ up-to-date; please use other toolset description
|
||||
# files as examples.
|
||||
#
|
||||
# I've tried to bring it up-to-date. -jsiek
|
||||
|
||||
|
||||
|
||||
flags kcc CFLAGS <debug-symbols>on : -g ;
|
||||
flags kcc LINKFLAGS <debug-symbols>on : -g ;
|
||||
flags gcc LINKFLAGS <debug-symbols>off : -s ;
|
||||
flags kcc LINKFLAGS <debug-symbols>off : -s ;
|
||||
flags kcc CFLAGS <optimization>off : +K0 ;
|
||||
flags kcc CFLAGS <optimization>speed : +K2 ;
|
||||
|
||||
@@ -36,8 +30,9 @@ flags kcc NEEDLIBS <library-file> ;
|
||||
flags kcc FINDLIBS <find-library> ;
|
||||
|
||||
|
||||
kcc.bin-directory = [ conditional $(kcc.root-directory) : $(kcc.root-directory)$(SLASH)bin$(SLASH) : " " ] ;
|
||||
detect-build-tools kcc : "KCC" ;
|
||||
set-as-singleton kcc.root-directory ;
|
||||
kcc.bin-directory = $(kcc.root-directory)$(SLASH)bin$(SLASH) ;
|
||||
kcc.bin-directory ?= " " ;
|
||||
|
||||
#### Link ####
|
||||
|
||||
@@ -83,6 +78,6 @@ rule Archive-action
|
||||
|
||||
actions updated together piecemeal kcc-Archive-action
|
||||
{
|
||||
KCC -g $(ARFLAGS) -o "$(<)" "$(>)"
|
||||
$(kcc.bin-directory)KCC -g $(ARFLAGS) -o "$(<)" "$(>)"
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#//<a href="http://www.metrowerks.com/products/windows/">Metro-<br>werks<br>Code-<br>Warrior</a>
|
||||
|
||||
# singleton variables...
|
||||
set-as-singleton METROWERKS_ROOT METROWERKS_INCLUDE_ROOT CWFOLDER ;
|
||||
set-as-singleton METROWERKS_ROOT CWFOLDER ;
|
||||
|
||||
# Get these variable set on the targets so that we can re-use the
|
||||
# build actions for other toolsets using this one as a base.
|
||||
|
||||
@@ -26,7 +26,7 @@ SGI MIPSpro C and C++ compilers.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
The como toolset responds to the following variables which can be set in the
|
||||
The mipspro toolset responds to the following variables which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
|
||||
150
msvc-stlport-tools.html
Normal file
150
msvc-stlport-tools.html
Normal file
@@ -0,0 +1,150 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - msvc-stlport toolset</title>
|
||||
</head>
|
||||
<body link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">msvc-stlport toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a
|
||||
href="http://msdn.microsoft.com/visualc/">msvc-stlport</a> toolset
|
||||
supports the <td>Microsoft <a
|
||||
href="http://msdn.microsoft.com/visualc/">Visual C++</a> command-line
|
||||
tools, using the <a href="http://www.stlport.org">STLport</a> standard
|
||||
library implementation on Microsoft Windows. It is designed to allow
|
||||
you to build and test with multiple installed versions of STLPort, so
|
||||
that objects build in each configuration will be built into separate
|
||||
directories.
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The <code>msvc</code> toolset responds to the following variables,
|
||||
which can be set in the environment or configured on the jam
|
||||
command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>. It is an extension
|
||||
of the <a href="msvc-tools.html">msvc toolset</a> and therefore
|
||||
responds to all of the MSVC <a
|
||||
href="msvc-tools.html#configuration">configuration variables</a> in
|
||||
addition to those listed below.
|
||||
|
||||
<p>In the table below, <i>version</i> corresponds to an
|
||||
STLPort version number, e.g. "<code>4.5.3</code>".
|
||||
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Variable Name <th>Semantics <th>Default <th>Notes
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_PATH</code>
|
||||
|
||||
<td>A directory containing at least one subdirectory of the form
|
||||
<code>/STLPort-</code><i>version</i> where an STLPort
|
||||
installation can be found.
|
||||
|
||||
<td><i>empty</i>
|
||||
|
||||
<td>Allows easy configuration for an installation where
|
||||
several STLPort versions are installed under a single directory.
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_</code><i>version</i><code>_PATH</code>
|
||||
|
||||
<td>The directory where the specific STLPort <i>version</i>
|
||||
installation can be found, in case there is no central
|
||||
location appropriate for <code>STLPORT_PATH</code>, above, or
|
||||
a particular version's installation is not located in the
|
||||
usual place.
|
||||
|
||||
<td><i>empty</i>
|
||||
|
||||
<td>Allows configuration of a specific STLPort installation.
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_VERSION</code>
|
||||
|
||||
<td>The version of STLPort in use by default.
|
||||
|
||||
<td><code>4.5.3</code>
|
||||
|
||||
<td>Other values can be selected in parallel setting the <a
|
||||
href="build_system.htm#initiating">build property</a>
|
||||
<stlport-version> to values from the list of
|
||||
<code>$(STLPORT_VERSIONS)</code>
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_VERSIONS</code>
|
||||
|
||||
<td>A space-separated list of alternate versions of STLport available on this machine.
|
||||
|
||||
<td><code>4.5 4.0</code>
|
||||
|
||||
</table>
|
||||
|
||||
<h2><a name="features">Toolset-Specific Features</a></h2>
|
||||
|
||||
The following <code>msvc-stlport</code>-specific <a
|
||||
href="build_system.htm#features">features</a> can be used in target build
|
||||
requirements or in the <a href="build_system.htm#initiating"><code>BUILD</code></a> variable:
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Feature <th>Values <th>Default <th>Semantics
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-iostream</code>
|
||||
|
||||
<td><code>off on</code>
|
||||
|
||||
<td><code>off</code>
|
||||
|
||||
<td>Controls whether STLPort's own iostreams are in use. Though
|
||||
this setting is <code>off</code> by default to save users from
|
||||
having to build STLPort, we strongly recommend <code>on</code>
|
||||
instead.
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-version</code>
|
||||
|
||||
<td><code>$(STLPORT_VERSION) $(STLPORT_VERSIONS)</code> (see above)
|
||||
|
||||
<td><code>$(STLPORT_VERSION)</code>
|
||||
|
||||
<td>Selects a version of STLPort for each target
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-cstd-namespace</code>
|
||||
|
||||
<td><code>std global</code>
|
||||
|
||||
<td><code>std</code>
|
||||
|
||||
<td>Controls whether or not names from the "C" library
|
||||
headers such as <cstdlib> are imported into <code>namespace
|
||||
std</code>.
|
||||
</table>
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
14 May, 2002
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">Dave Abrahams</a>
|
||||
2002. All Rights Reserved.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -84,8 +84,8 @@ rule get-stlport-root
|
||||
ECHO ;
|
||||
ECHO STLPORT_VERSIONS - Alternate versions of STLport available on this machine. Defaults to \"4.5 4.0\". ;
|
||||
ECHO ;
|
||||
ECHO "Note that STLPort iostreams are /not/ in use by default. To enable them, you must place"
|
||||
ECHO " <stlport-iostream>on in your BUILD variable or in target requirements."
|
||||
ECHO "Note that STLPort iostreams are /not/ in use by default. To enable them, you must place" ;
|
||||
ECHO " <stlport-iostream>on in your BUILD variable or in target requirements." ;
|
||||
EXIT ;
|
||||
}
|
||||
|
||||
|
||||
69
msvc-tools.html
Normal file
69
msvc-tools.html
Normal file
@@ -0,0 +1,69 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - msvc toolset</title>
|
||||
</head>
|
||||
<body link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">msvc toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="http://msdn.microsoft.com/visualc/">msvc</a>
|
||||
toolset supports the Microsoft Visual C++ command-line tools on
|
||||
Microsoft Windows. It supports any version of Visual C++, but in case
|
||||
you have more than one version of Visual C++ installed, and you want
|
||||
to use both, the additional <a href="vc7-tools.html">vc7</a> toolset
|
||||
can be used for Visual C++ 7.0.
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The <code>msvc</code> toolset responds to the following variables, which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Variable Name <th>Semantics <th>Default <th>Notes
|
||||
|
||||
<tr>
|
||||
<td><code>MSVC_ROOT</code>
|
||||
<td>The path to the MSVC installation directory
|
||||
<td><code>c:\Program Files\Microsoft Visual C++\VC98</code>
|
||||
<td>If <code>MSVCDir</code> is set in the environment, the toolset
|
||||
will assume <code>VCVARS32.BAT</code>has already been called, and
|
||||
will ignore this variable.
|
||||
|
||||
<tr>
|
||||
<td><code>VISUALC</code>
|
||||
<td>The path to the MSVC installation directory
|
||||
<td><code>c:\Program Files\Microsoft Visual C++\VC98</code>
|
||||
<td>If <code>MSVCDir</code> or <code>MSVC_ROOT</code> is set in
|
||||
the environment, the toolset will assume
|
||||
<code>VCVARS32.BAT</code>has already been called, and will ignore
|
||||
this variable.
|
||||
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
14 May, 2002
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">Dave Abrahams</a>
|
||||
2002. All Rights Reserved.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -24,23 +24,36 @@ flags msvc VC_PDB_NAME ;
|
||||
# compute MSVC tool path
|
||||
# You can either put the msvc bin directory in your PATH, or you can set
|
||||
# MSVCDir to point at the msvc installation directory
|
||||
|
||||
# Some installations set MSVCDIR instead of MSVCDir; who knows why?
|
||||
MSVCDir ?= $(MSVCDIR) ;
|
||||
|
||||
# If MSVCDir is not set the user hasn't run VCVARS32.BAT
|
||||
if ! $(MSVCDir)
|
||||
{
|
||||
# In case someone set VISUALC in order to build Jam, we can just use that.
|
||||
MSVC_ROOT ?= $(VISUALC) ;
|
||||
# Otherwise, guess a standard installation directory
|
||||
MSVC_ROOT ?= "C:\\Program Files\\Microsoft Visual C++\\VC98" ;
|
||||
VC_TOOL_PATH ?= "$(MSVC_ROOT)"$(SLASH)bin$(SLASH) ;
|
||||
VC_SETUP ?= "CALL \"$(VC_TOOL_PATH)VCVARS32.BAT\" >nul" ;
|
||||
|
||||
# Reconstitutes paths containing spaces
|
||||
MSVC_ROOT = $(MSVC_ROOT:J=" ") ;
|
||||
|
||||
# The tools are provisionallly located in the msvc6 bin
|
||||
# directory. This may be overridden by toolsets which extend this
|
||||
# one.
|
||||
VC_TOOL_PATH = "$(MSVC_ROOT)"$(SLASH)bin$(SLASH) ;
|
||||
|
||||
# Always call VCVARS32.BAT before invoking the tools
|
||||
VC_SETUP = "CALL \"$(VC_TOOL_PATH)VCVARS32.BAT\" >nul" ;
|
||||
}
|
||||
else
|
||||
{
|
||||
# This hack reconstitutes paths containing spaces as long as
|
||||
# they don't contain any consecutive spaces.
|
||||
while $(MSVCDir[2])
|
||||
{
|
||||
MSVCDir = $(MSVCDir[1])" "$(MSVCDir[2]) $(MSVCDir[3-]) ;
|
||||
}
|
||||
# Reconstitutes paths containing spaces
|
||||
MSVCDir = $(MSVCDir:J=" ") ;
|
||||
|
||||
VC_TOOL_PATH ?= "" ; # Don't clobber adjoining text if MSVCDir is already set
|
||||
# Don't clobber adjoining text or use explicit paths if MSVCDir is already set
|
||||
VC_TOOL_PATH = "" ;
|
||||
}
|
||||
|
||||
VC_COMPILER = cl ;
|
||||
|
||||
11
python.jam
11
python.jam
@@ -28,6 +28,9 @@ if $(NT)
|
||||
{
|
||||
PYTHON_ROOT ?= c:/tools/python ;
|
||||
|
||||
# Reconstitute any paths split due to embedded spaces.
|
||||
PYTHON_ROOT = $(PYTHON_ROOT:J=" ") ;
|
||||
|
||||
PYTHON_LIB_PATH ?= $(PYTHON_ROOT)/libs $(PYTHON_ROOT)/PCBuild ;
|
||||
PYTHON_STDLIB_PATH ?= $(PYTHON_ROOT)/Lib ;
|
||||
|
||||
@@ -60,6 +63,7 @@ else if $(UNIX)
|
||||
{
|
||||
PYTHON_VERSION ?= 1.5 ;
|
||||
PYTHON_ROOT ?= /usr/local ;
|
||||
PYTHON_ROOT = $(PYTHON_ROOT:J=" ") ;
|
||||
PYTHON_INCLUDES ?= $(PYTHON_ROOT)/include/python$(PYTHON_VERSION) ;
|
||||
PYTHON_LIB_PATH ?= $(PYTHON_ROOT)/lib/python$(PYTHON_VERSION)/config ;
|
||||
PYTHON_STDLIB_PATH ?= $(PYTHON_ROOT)/lib/python$(PYTHON_VERSION) ;
|
||||
@@ -291,15 +295,12 @@ rule boost-python-runtest (
|
||||
|
||||
# declare the two subsidiary tests.
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) : PYTHON_TEST ;
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) : PYTHON_RUNTEST ;
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) <suppress>true : PYTHON_RUNTEST ;
|
||||
}
|
||||
|
||||
rule boost-python-test ( name : sources + : requirements * : default-BUILD * )
|
||||
{
|
||||
type-DEPENDS test : $(name) ;
|
||||
|
||||
local gSUPPRESS_FAKE_TARGETS = true ;
|
||||
extension $(name) : $(sources) : $(requirements) : $(4) ;
|
||||
extension $(name) : $(sources) : $(requirements) <suppress>true : $(4) ;
|
||||
}
|
||||
|
||||
# special rules for two new target types: PYTHON_TEST and PYTHON_RUNTEST.
|
||||
|
||||
2
test/startup/boost-root/tools/build/boost-build.jam
Normal file
2
test/startup/boost-root/tools/build/boost-build.jam
Normal file
@@ -0,0 +1,2 @@
|
||||
# The presence of this file emulates the Boost 1.27.0 release
|
||||
include $(BOOST_ROOT)/tools/build/bootstrap.jam ;
|
||||
@@ -1598,6 +1598,9 @@ rule subvariant-target ( target : subvariant-id build-properties * : toolset var
|
||||
# Remember the path from the build root to the subvariant directory
|
||||
gSUBVARIANT_PATH($(subvariant)) = $(subvariant-id) ;
|
||||
|
||||
# Add target suppression if <suppress> was in the requirements
|
||||
local gSUPPRESS_FAKE_TARGETS = [ get-values <suppress> : $(gTARGET_REQUIREMENTS($(target))) ] $(gSUPPRESS_FAKE_TARGETS) ;
|
||||
|
||||
declare-fake-targets $(target) : $(target-files) ;
|
||||
|
||||
# set up gBUILD_PROPERTIES for include-tools (below)
|
||||
@@ -1642,7 +1645,7 @@ rule subvariant-target ( target : subvariant-id build-properties * : toolset var
|
||||
depend-on-libraries $(target-files) : $(libs) ;
|
||||
depend-on-dlls $(target-files) : $(dlls) ;
|
||||
}
|
||||
|
||||
|
||||
# dispatch to the appropriate declaration function. Here we are using an
|
||||
# FTJam-only feature (thanks, David Turner!)
|
||||
local ignored = [ $(gGENERATOR_FUNCTION($(target-type))) $(target-files)
|
||||
@@ -1783,6 +1786,9 @@ rule unit-test
|
||||
# Used to build command files from a list of sources.
|
||||
rule build-command-file ( command : sources * )
|
||||
{
|
||||
# Clean up after ourselves
|
||||
Clean clean : $(command) ;
|
||||
|
||||
DEPENDS $(command) : $(sources) ;
|
||||
|
||||
# Check whether there's anything to dump, so that we don't end up
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<h2><a name="synopsis">Synopsis</a></h2>
|
||||
|
||||
<p>Boost.Build is a system for large project software construction built on
|
||||
Boost Jam, a descendant of "<a
|
||||
Boost.Jam, a descendant of "<a
|
||||
href="http://www.perforce.com/jam/jam.html">Perforce Jam</a>", an
|
||||
open-source make replacement<a href="#1">[1]</a>. Key features are:
|
||||
|
||||
@@ -41,6 +41,19 @@
|
||||
<li>Automatic building of subproject dependencies
|
||||
</ul>
|
||||
|
||||
<h2><a name="status">Status</a></h2>
|
||||
|
||||
Boost.Build v1 is a useful, mature system. However, its design and
|
||||
structure are not easily adapted to support some of the features
|
||||
we'd like to see in the future. To this end, the Boost.Build
|
||||
developers have begun work on v2 of Boost.Build, which will be
|
||||
based around this
|
||||
<a href="architecture.html">design document</a>. If you are
|
||||
interested in contributing to this effort or you wish to discuss
|
||||
the design of Boost.Build, please post inquiries to the <a
|
||||
href="http://groups.yahoo.com/group/jamboost/">jamboost</a>
|
||||
mailing list at yahoogroups.
|
||||
|
||||
<p><a href="#design_criteria">Here</a> are some of the design criteria that
|
||||
led to these features.
|
||||
|
||||
@@ -49,11 +62,13 @@
|
||||
<ul>
|
||||
<li><a href="#synopsis">Synopsis</a>
|
||||
|
||||
<li><a href="#status">Status</a>
|
||||
|
||||
<li>
|
||||
<a href="#getting_started">Getting Started</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="#installing_jam">Installing Jam</a>
|
||||
<li><a href="#installing_jam">Installing Boost.Jam</a>
|
||||
|
||||
<li><a href="#initiating">Initiating a Build</a>
|
||||
|
||||
@@ -128,7 +143,7 @@
|
||||
|
||||
<ul>
|
||||
<li><a href="#variable_quoting">Command-line and Environment Variable Quoting</a>
|
||||
<li><a href="#jambase_replacement">Jambase Replacement</a>
|
||||
<li><a href="#jambase_replacement">Startup Behavior</a>
|
||||
<li><a href="#rule_indirection">Rule Indirection</a>
|
||||
<li><a href="#argument_lists">Argument Lists</a>
|
||||
|
||||
@@ -137,7 +152,7 @@
|
||||
|
||||
<ul>
|
||||
<li><a href="#module_declaration">Declaration</a>
|
||||
<li><a href="#module_locals">Local Variables</a>
|
||||
<li><a href="#module_locals">Variable Scope</a>
|
||||
<li><a href="#local_rules">Local Rules</a>
|
||||
<li><a href="#RULENAMES_rule">The <tt>RULENAMES</tt> rule</a>
|
||||
<li><a href="#IMPORT_rule">The <tt>IMPORT</tt> rule</a>
|
||||
@@ -146,11 +161,11 @@
|
||||
</ul>
|
||||
|
||||
<li><a href="#local_foreach">Local for Loop Variables</a>
|
||||
<li><a href="#while_loops">While Loops</a>
|
||||
<li><a href="#negative_indexing">Negative Indexing</a>
|
||||
<li><a href="#BINDRULE">Target Binding Detection</a>
|
||||
<li><a href="#FAIL_EXPECTED">Return Code Inversion</a>
|
||||
<li><a href="#NOCARE">Ignoring Return Codes</a>
|
||||
<li><a href="#RMOLD">Removing outdated targets</a>
|
||||
<li><a href="#SUBST_rule">The <tt>SUBST</tt> Rule</a>
|
||||
<li><a href="#JAM_VERSION">The <tt>JAM_VERSION</tt> global variable</a>
|
||||
<li>
|
||||
@@ -183,40 +198,26 @@
|
||||
|
||||
<h2><a name="getting_started">Getting Started</a></h2>
|
||||
|
||||
<h3><a name="installing_jam">Installing Boost Jam</a></h3>
|
||||
|
||||
<ul>
|
||||
<li>The Boost Jam sources are located in the <tt>tools/build/jam_src</tt>
|
||||
subdirectory of the Boost installation.
|
||||
|
||||
<li>The <a href="http://public.perforce.com/public/jam/src/README">Jam
|
||||
README</a> contains basic installation instructions.
|
||||
|
||||
|
||||
<li>If you are installing on Windows, the make process may prompt you to set
|
||||
some environment variables, and stop. Don't be alarmed; just follow the
|
||||
instructions and start over. Please keep in mind that these variable settings
|
||||
are case-sensitive. The variable settings necessary for bootstrapping
|
||||
Jam are not needed once it has been built.
|
||||
<li>Note that the supplied Makefile may require editing for your
|
||||
platform; see the <a href=
|
||||
"http://public.perforce.com/public/jam/src/README">Jam README</a> for
|
||||
details. The Makefile is used for bootstrapping Jam; it builds Jam into a
|
||||
subdirectory called <tt>bin.</tt><i>platform</i>.
|
||||
</ul>
|
||||
<h3><a name="installing_jam">Installing Boost.Jam</a></h3>
|
||||
|
||||
Follow these <a href="index.html#Jam">instructions</a> to acquire
|
||||
a bjam executable for your platform. Install it somewhere in your
|
||||
path.
|
||||
|
||||
<h3><a name="initiating">Initiating a Build</a></h3>
|
||||
|
||||
<p>The easiest way to get going is to set the <tt>BOOST_ROOT</tt>
|
||||
environment variable to point at the Boost installation directory, though
|
||||
you can also set <tt>BOOST_ROOT</tt> on the command-line, using
|
||||
<tt>-s...</tt>. You can use the <tt>TOOLS</tt> variable to indicate which
|
||||
toolset(s) to build with, and the <tt>BUILD</tt> variable to describe how
|
||||
you want things built. In most cases it should be sufficient to invoke Jam
|
||||
with no variable settings. The following examples all assume that
|
||||
<tt>BOOST_ROOT</tt> has been set in the environment.
|
||||
<p>Boost.Build responds to several global variable settins. The
|
||||
easiest way to get going is usually to use environment variables,
|
||||
though you can also set them on the command-line, using
|
||||
<tt>-s</tt><i>VARIABLE_NAME</i><tt>=</tt><i>value</i>. In
|
||||
addition to the <a href="index.html#Configuring">toolset
|
||||
configuration variables</a>, you can use the <tt>TOOLS</tt>
|
||||
variable to indicate which toolset(s) to build with, and the
|
||||
<tt>BUILD</tt> variable to describe how you want things built. In
|
||||
many cases it should be sufficient to invoke <code>bjam</code>
|
||||
with no variable settings.
|
||||
|
||||
<p>Here are some sample Boost Jam invocations:
|
||||
<p>Some example Boost.Jam invocations:
|
||||
|
||||
<table border="1" summary="Sample Jam Invocations=">
|
||||
<tr>
|
||||
@@ -227,7 +228,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<pre>
|
||||
jam -sTOOLS=gcc my_target
|
||||
bjam -sTOOLS=gcc my_target
|
||||
</pre>
|
||||
|
||||
<td>default (debug) <tt><a href="#build">BUILD</a></tt> of
|
||||
@@ -235,7 +236,7 @@ jam -sTOOLS=gcc my_target
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<pre>jam -f<i>allyourbase-path</i> -sTOOLS="msvc gcc"</pre>
|
||||
<pre>bjam -sTOOLS="msvc gcc"</pre>
|
||||
|
||||
<td>default-build <tt>all</tt> with msvc and gcc
|
||||
|
||||
@@ -243,7 +244,7 @@ jam -sTOOLS=gcc my_target
|
||||
<td>
|
||||
<pre>
|
||||
set TOOLS=msvc
|
||||
jam
|
||||
bjam
|
||||
</pre>
|
||||
|
||||
<td>Set an NT environment variable to always build with MSVC<br>
|
||||
@@ -252,15 +253,16 @@ jam
|
||||
<tr>
|
||||
<td>
|
||||
<pre>
|
||||
jam -sBUILD=release
|
||||
bjam "-sBUILD=release <debug-symbols>on"
|
||||
</pre>
|
||||
|
||||
<td>release build <tt>all</tt> with default <tt><a href=
|
||||
"#tools">TOOLS</a></tt>:<br>
|
||||
<td>release build with debug symbols of <tt>all</tt> using
|
||||
default <tt><a href=
|
||||
"#tools">TOOLS</a></tt>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><pre>jam -sBUILD="debug release"</pre>
|
||||
<td><pre>bjam -sBUILD="debug release"</pre>
|
||||
|
||||
<td>debug and release build <tt>all</tt>.
|
||||
</table>
|
||||
@@ -277,7 +279,7 @@ jam -sBUILD=release
|
||||
<blockquote><pre>
|
||||
> <a href="#build">BUILD</a>="debug release" <i># assuming Unix</i>
|
||||
> export <a href="#build">BUILD</a>
|
||||
> jam ...
|
||||
> bjam ...
|
||||
</pre></blockquote>
|
||||
This approach can be OK for quick-and-dirty tests, but environment variable
|
||||
settings tend to be unstable and non-uniform across users and machines, so
|
||||
@@ -659,7 +661,7 @@ exe my_target : my_source1.cpp my_source2.c ;
|
||||
|
||||
<td rowspan="2">Platform-dependent
|
||||
|
||||
<td><tt>-sTOOLS="gcc msvc"</tt>
|
||||
<td><tt>"-sTOOLS=gcc msvc"</tt>
|
||||
<td>build with gcc and msvc
|
||||
|
||||
<tr>
|
||||
@@ -679,18 +681,18 @@ exe my_target : my_source1.cpp my_source2.c ;
|
||||
<td>build the <tt>release</tt> variant
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="debug release"</tt>
|
||||
<td><tt>"-sBUILD=debug release"</tt>
|
||||
|
||||
<td>build both <tt>debug</tt> and <tt>release</tt> variants
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="<optimization>speed"</tt>
|
||||
<td><tt>"-sBUILD=<optimization>speed"</tt>
|
||||
|
||||
<td>build a subvariant of the default variant (<tt>debug</tt>) with
|
||||
optimization for speed.
|
||||
|
||||
<tr>
|
||||
<td><tt>-sBUILD="debug release <runtime-link>static/dynamic"</tt>
|
||||
<td><tt>"-sBUILD=debug release <runtime-link>static/dynamic"</tt>
|
||||
|
||||
|
||||
<td>build subvariants of the debug and release variants that link to
|
||||
@@ -1361,60 +1363,38 @@ jam -sMSVCNT="\"\"C:\Program Files\Microsoft Visual C++\VC98\&quo
|
||||
set MSVCNT=""C:\Program Files\Microsoft Visual C++\VC98\""
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="jambase_replacement">Jambase Replacement</a></h4>
|
||||
<h4><a name="jambase_replacement">Startup Behavior</a></h4>
|
||||
|
||||
<p>New logic has been added to allow the built-in Jambase to be replaced
|
||||
without recompiling Jam or adding command-line arguments. The user can
|
||||
control the location of the build system by setting any of the <tt>JAMBASE</tt>,
|
||||
<tt>BOOST_ROOT</tt>, or <tt>BOOST_BUILD_PATH</tt> environment variables (the settings of
|
||||
these variables can also be overridden on the command-line using the
|
||||
<tt>-s<i>VARIABLE</i>=</tt>... option).
|
||||
|
||||
<p>The process is controlled by variables (in decreasing
|
||||
precedence):
|
||||
<ul>
|
||||
|
||||
<li>If <tt>JAMBASE</tt> is set, it specifies the path to the Jambase
|
||||
replacement. Non-rooted paths are computed relative to the directory of
|
||||
Jam's invocation.
|
||||
|
||||
<li>Otherwise, if <tt>BOOST_BUILD_PATH</tt> or <tt>BOOST_ROOT</tt> is set,
|
||||
the build system filename is <tt><b>boost-build.jam</b></tt>.
|
||||
|
||||
<li>If the build system filename does not contain a path specification,
|
||||
the build system file is searched for on <tt>$(BOOST_BUILD_PATH)</tt>,
|
||||
then at <tt>$(BOOST_ROOT)/tools/build</tt>.
|
||||
|
||||
<li>If <tt>BOOST_BUILD_PATH</tt> was not set, it will be set to
|
||||
<tt>$(BOOST_ROOT)/tools/build</tt>.
|
||||
|
||||
<li>If neither <tt>JAMBASE</tt>, <tt>BOOST_ROOT</tt>, nor
|
||||
<tt>BOOST_BUILD_PATH</tt> is set, we use the built-in Jambase (nearly
|
||||
identical to the <a
|
||||
href="http://freetype.sourceforge.net/jam/index.html">FTJam</a> Jambase)
|
||||
and load the user's Jamfile. Perforce Jam has this behavior, and it is
|
||||
used for building Jam itself. <b>Thus, when you rebuild Jam, these
|
||||
variables should be unset</b>.
|
||||
|
||||
</ul>
|
||||
|
||||
<p>The rationale for this behavior is as follows:
|
||||
<ul>
|
||||
|
||||
<li> The Jam executable should allow the Jambase to be overridden to
|
||||
implement other build systems without the user having any knowledge
|
||||
of Boost, thus the <tt>JAMBASE</tt> variable.
|
||||
|
||||
<li> <tt>BOOST_BUILD_PATH</tt> is designed to be used to find all <a
|
||||
href="#module_support">modules</a> used by the build system, so that users
|
||||
and system administrators may non-intrusively add modules to the system.
|
||||
|
||||
<li> Many Boost users already have <tt>BOOST_ROOT</tt> set. If a user
|
||||
doesn't want to explicitly set up <tt>BOOST_BUILD_PATH</tt>,
|
||||
<tt>BOOST_ROOT</tt> will supply reasonable behavior.
|
||||
|
||||
</ul>
|
||||
<p>The Boost.Build v2 initialization behavior has been
|
||||
implemented. This behavior only applies when the executable
|
||||
being invoked is called "<code>bjam</code>" or, for
|
||||
backward-compatibility, when the <code>BOOST_ROOT</code>
|
||||
variable is set.
|
||||
|
||||
<ol>
|
||||
<li> We attempt to load "boost-build.jam" by searching from the
|
||||
current invocation directory up to the root of the
|
||||
file-system. This file is expected to invoke the
|
||||
<tt>boost-build</tt> rule to indicate where the Boost.Build
|
||||
system files are, and to load them.
|
||||
<li> If boost-build.jam is not found we error and exit, giving
|
||||
brief instructions on possible errors.
|
||||
<blockquote>
|
||||
As a backward-compatibility measure for older versions of Boost.Build,
|
||||
when the <code>BOOST_ROOT</code> variable is set, we first search for
|
||||
<code>boost-build.jam</code> in <code>$(BOOST_ROOT)/tools/build</code>
|
||||
and <code>$(BOOST_BUILD_PATH)</code>. If found, it is loaded and
|
||||
initialization is complete.
|
||||
</blockquote>
|
||||
<li> The <code>boost-build</code> rule adds its (optional) argument
|
||||
to the front of <code>BOOST_BUILD_PATH</code>, and attempts to
|
||||
load <code>bootstrap.jam</code> from those directories. If a
|
||||
relative path is specified as an argument, it is treated as
|
||||
though it was relative to the <code>boost-build.jam</code>
|
||||
file.
|
||||
<li> If the bootstrap.jam file was not found, we print a likely
|
||||
error message and exit.
|
||||
</ol>
|
||||
|
||||
<h4><a name="rule_indirection">Rule Indirection</a></h4>
|
||||
|
||||
@@ -1573,67 +1553,62 @@ module your_module
|
||||
|
||||
<p>
|
||||
|
||||
<h5><a name="module_locals">Local Variables</a></h5>
|
||||
<tt>module local </tt> <i>expression</i><tt> ;</tt><br>
|
||||
<i>- or -</i><br>
|
||||
<tt>module local </tt> <i>expression</i><tt> = </tt>
|
||||
<i>expression2</i><tt> ;</tt>
|
||||
<h5><a name="module_locals">Variable Scope</a></h5>
|
||||
|
||||
<p>The variables named by <i>expression</i> are given a distinct value
|
||||
in the module, and can be manipulated by code executing in the module
|
||||
without affecting variable bindings seen by other modules. If the
|
||||
assignment form is used, <i>expression2</i> is assigned to the
|
||||
variables when the declaration is executed. For example:
|
||||
|
||||
<blockquote>
|
||||
<p>Each module has its own set of dynamically nested variable
|
||||
scopes. When execution passes from module A to module B, all
|
||||
the variable bindings from A become unavailable, and are
|
||||
replaced by the bindings that belong to B. This applies
|
||||
equally to local and global variables:
|
||||
<pre>
|
||||
module M {
|
||||
<b>module local</b> x = a b c ;
|
||||
|
||||
rule f ( )
|
||||
{
|
||||
<blockquote>
|
||||
module A
|
||||
{
|
||||
x = 1 ;
|
||||
rule f ( )
|
||||
{
|
||||
local x = 1 2 3 ; # temp override for M's x
|
||||
N.g ; # call into module N, below
|
||||
local y = 999 ; # becomes visible again when B.f calls A.g
|
||||
B.f ;
|
||||
}
|
||||
rule g ( )
|
||||
{
|
||||
ECHO $(y) ; # prints "999"
|
||||
}
|
||||
ECHO $(x) ; # prints "a b c"
|
||||
}
|
||||
}
|
||||
|
||||
module N {
|
||||
rule g ( )
|
||||
{
|
||||
x = foo bar baz ; # sets global x
|
||||
M.h ; # call back into M, below
|
||||
}
|
||||
module B
|
||||
{
|
||||
y = 2 ;
|
||||
rule f ( )
|
||||
{
|
||||
ECHO $(y) ; # always prints "2"
|
||||
A.g ;
|
||||
}
|
||||
}
|
||||
|
||||
module M {
|
||||
rule h ( )
|
||||
{
|
||||
ECHO $(x) ; # prints "1 2 3"
|
||||
}
|
||||
}
|
||||
|
||||
M.f ;
|
||||
ECHO $(x) ; # prints "foo bar baz"
|
||||
</blockquote>
|
||||
</pre>
|
||||
</blockquote>
|
||||
The only way to access another module's local variables is through a
|
||||
rule defined in that module:
|
||||
|
||||
The only way to access another module's variables is by
|
||||
entering that module:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
module M {
|
||||
rule get ( names * )
|
||||
{
|
||||
return $($(names)) ;
|
||||
}
|
||||
rule peek ( module-name ? : variables + )
|
||||
{
|
||||
module $(module-name)
|
||||
{
|
||||
return $($(>)) ;
|
||||
}
|
||||
}
|
||||
ECHO [ <b>M.get</b> x ] ; # prints "a b c"
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
Note that because existing variable bindings change whenever a
|
||||
new module scope is entered, argument bindings become
|
||||
unavailable. That explains the use of
|
||||
"<code>$(>)</code>" in the <code>peek</code> rule
|
||||
above.
|
||||
|
||||
<h5><a name="local_rules">Local Rules</a></h5>
|
||||
|
||||
<blockquote>
|
||||
@@ -1757,36 +1732,6 @@ for <b>local</b> y in $(x)
|
||||
ECHO $(y) ; # prints "1", "2", or "3"
|
||||
}
|
||||
ECHO $(y) ; # prints "4 5 6"
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="while_loops">While Loops</a></h4>
|
||||
|
||||
In classic Jam, some constructs are only possible using recursion:
|
||||
<blockquote><pre>
|
||||
# returns the part of $(list) following the first occurrence of $(symbol)
|
||||
rule after-symbol ( symbol : list * )
|
||||
{
|
||||
if ! $(list) || ( $(symbol) = $(list[1]) )
|
||||
{
|
||||
return $(list[2-]) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return [ after-symbol $(symbol) : $(list[2-]) ] ;
|
||||
}
|
||||
}
|
||||
</pre></blockquote>
|
||||
The addition of <tt>while</tt> loops allows a simpler formulation for this and
|
||||
many other rules:
|
||||
<blockquote><pre>
|
||||
rule after-symbol ( symbol : list * )
|
||||
{
|
||||
while $(list) && $(list[1]) != $(symbol)
|
||||
{
|
||||
list = $(list[2-]) ;
|
||||
}
|
||||
return $(list) ;
|
||||
}
|
||||
</pre></blockquote>
|
||||
|
||||
<h4><a name="negative_indexing">Negative Indexing</a></h4>
|
||||
@@ -1852,8 +1797,27 @@ rule bind-rule ( target : path )
|
||||
should be built anyway. Boost Jam extends <tt>NOCARE</tt> to apply to
|
||||
targets with build actions: if their build actions exit with a nonzero
|
||||
return code, dependent targets will still be built.
|
||||
|
||||
<h4><a name="RMOLD">Removing Outdated Targets</a></h4>
|
||||
<blockquote>
|
||||
<pre>
|
||||
rule RMOLD ( targets * )
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>Perforce Jam removes any target files that may exist on disk
|
||||
when the rule used to build those targets fails. However,
|
||||
targets whose dependencies fail to build are not removed by
|
||||
default. The <code>RMOLD</code> rule causes its arguments to be
|
||||
removed if any of their dependencies fail to build.
|
||||
|
||||
|
||||
<h4><a name="SUBST_rule">The <tt>SUBST</tt> Rule</a></h4>
|
||||
|
||||
<p><b>Note:</b> the <code>SUBST</code> rule is deprecated in favor
|
||||
of Perforce Jam's built-in <cdoe>MATCH</cdoe> rule, which has been
|
||||
rolled into Boost.Jam.
|
||||
|
||||
<p>The behavior of the <tt>SUBST</tt> rule for regular-expression matching
|
||||
and replacement (originally added in <a href=
|
||||
"http://freetype.sourceforge.net/jam/index.html">FTJam</a>) has been
|
||||
@@ -1996,6 +1960,9 @@ rule BACKTRACE ( )
|
||||
"change" a global variable by declaring a <tt>local</tt> of the
|
||||
same name.
|
||||
|
||||
<p>Many of the variables that are used to configure how Boost.Build works
|
||||
internally are listed <a href="variables.html">here</a> with brief descriptions.
|
||||
|
||||
<h3>Variables Associated with SubProject Identity</h3>
|
||||
|
||||
<ul>
|
||||
|
||||
@@ -9,6 +9,7 @@ feature profiling : off on ;
|
||||
|
||||
feature struct-alignment : auto 1 2 4 8 16 ;
|
||||
feature eh-model : default fast msvc ; # metrowerks only
|
||||
feature vtable-thunks : default on off ; # gcc only
|
||||
|
||||
feature threading : single multi ;
|
||||
|
||||
@@ -67,6 +68,7 @@ gTARGET_TYPE_REQUIREMENTS(DLL) = <shared-linkable>true ;
|
||||
|
||||
##### Variant definitions ####
|
||||
COMMON_PROPERTIES ?=
|
||||
<vtable-thunks>default
|
||||
<struct-alignment>auto
|
||||
<eh-model>default
|
||||
<threading>single
|
||||
|
||||
234
v1/gcc-nocygwin-tools.html
Normal file
234
v1/gcc-nocygwin-tools.html
Normal file
@@ -0,0 +1,234 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Language" content="en-us">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - gcc-nocygwin toolset</title>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">gcc-nocygwin toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>
|
||||
This page describes the gcc-nocygwin toolset, which builds Boost using
|
||||
the -mno-cygwin option of the Cygwin gcc compiler. This avoids
|
||||
introducing dependencies on the Cygwin Unix-emulation layer, allowing
|
||||
you to build Windows executables which are not dependant on
|
||||
cygwin1.dll.
|
||||
</p>
|
||||
<p>
|
||||
You could achieve the same results by using the MinGW version of gcc,
|
||||
but the Cygwin compiler has two advantages:
|
||||
<ol>
|
||||
<li>It can build for both environments - Unix emulation and Windows
|
||||
native - with one compiler.
|
||||
<li>You can use the latest versions of GCC. The latest released
|
||||
version of MinGW GCC is 2.95.3, and building MinGW-specific versions
|
||||
of GCC 3.0.x has proven to be quite difficult. However, it's
|
||||
straightforward under Cygwin. Just be sure to configure with
|
||||
<code>--enable-languages=c,c++</code> to disable other languages which
|
||||
fail to build properly.
|
||||
|
||||
</ol>
|
||||
</p>
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
<p>
|
||||
The gcc toolset responds to the variables shown in the following table,
|
||||
which can be set in the environment or configured on the jam
|
||||
command-line using <code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>.
|
||||
</p>
|
||||
<p>
|
||||
This toolset is an extension to the gcc-stlport toolset and therefore
|
||||
also responds to all of the configuration variables for
|
||||
<a href="gcc-stlport-tools.html#configuration">gcc-stlport</a>
|
||||
and
|
||||
<a href="gcc-tools.html#configuration">gcc</a>
|
||||
in addition to those listed below.
|
||||
</p>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Variable Name</th>
|
||||
<th>Semantics</th>
|
||||
<th>Default</th>
|
||||
<th>Notes</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<code>NOCYGWIN_<br>STLPORT_<br>LIB_ID</code>
|
||||
</td>
|
||||
<td>
|
||||
The name used to generate the stlport library names (corresponding
|
||||
to the LIB_BASENAME variable in the STLport make files).
|
||||
</td>
|
||||
<td>
|
||||
mingw32
|
||||
</td>
|
||||
<td>
|
||||
This forms the middle part of the STLport library
|
||||
names, for example libstlport_<b>mingw32</b>_debug.a
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<h2>Prerequisites</h2>
|
||||
|
||||
<p>
|
||||
Obviously, you'll need Cygwin installed on your Windows
|
||||
system. Earlier releases of Cygwin came as monolithic packages, but
|
||||
this switched to individually selectable components around 2000. If
|
||||
you've got a recent installation, you'll have to make sure you've got
|
||||
the optional mingw-runtime package installed. Have a look in
|
||||
/lib/mingw to see if things like libmingw32.a and libcrtdll.a are
|
||||
present, and that the directory /usr/include/mingw includes the
|
||||
standard headers stdio.h etc. Install the additional package if
|
||||
necessary.
|
||||
</p>
|
||||
<p>
|
||||
You will also need the STLport standard library installed and fully
|
||||
compiled (i.e. using its own iostreams) without any Cygwin
|
||||
dependencies. This would be very easy if you had the real mingw
|
||||
compiler installed, because the STLport distribution includes a
|
||||
ready-made makefile for this, called gcc-mingw.mak. Making this work
|
||||
with the Cygwin compiler requires a couple of changes to the file (see
|
||||
<a href="#stlport">below</a> for details). Sooner or later there may
|
||||
be a specific nocygwin makefile for STLport which will make this
|
||||
easier.
|
||||
</p>
|
||||
<p>
|
||||
Finally, you will need a Boost jam executable that was built for
|
||||
Windows (aka NT). The Cygwin-built Boost jam is <b>not</b> suitable,
|
||||
primarily because it executes commands via the Cygwin shell, which
|
||||
doesn't handle backslashes in Windows pathnames. Until there is a
|
||||
specific nocygwin makefile for Boost jam, it is probably best to
|
||||
download the prebuilt executable for Windows.
|
||||
</p>
|
||||
|
||||
<h2>Building with gcc-nocygwin</h2>
|
||||
<p>
|
||||
Refer to the <a
|
||||
href="gcc-stlport-tools.html#configuration">gcc-stlport</a>
|
||||
configuration section for details of the <code>STLPORT_ROOT</code>
|
||||
variable, which you'll have to configure (at the very least). Make
|
||||
sure to use Windows-style pathnames and not the /cygdrive/x/... style
|
||||
(you're using the Windows native Boost jam, remember).
|
||||
</p>
|
||||
<p>
|
||||
Configure additional variables as described <a
|
||||
href="../../libs/python/doc/building.html">here</a> if you want to
|
||||
build the <a href="../../libs/python/doc/index.html">Boost.Python</a>
|
||||
library, making sure to point it at a <b>Windows</b> installation of
|
||||
Python and not a Cygwin one. At the time of writing, the Python
|
||||
example simple_vector.cpp fails to compile in debug mode
|
||||
because of an incompatability with the STLport debugging STL
|
||||
containers, but everything else should build properly.
|
||||
</p>
|
||||
<p>
|
||||
If your STLport libraries don't have names like stlport_mingw32…
|
||||
you will need to set the environment variable
|
||||
<code>NOCYGWIN_STLPORT_LIB_ID</code> to replace the "mingw32" part of
|
||||
the library names.
|
||||
</p>
|
||||
<p>
|
||||
Once your environment is right, you can
|
||||
<a href="build_system.htm#initiating">start</a> the build as for any other
|
||||
toolset, using the toolset name "gcc-nocygwin". If you want to
|
||||
see exactly what's going on, try supplying jam the <code>-d2</code>
|
||||
option to show the raw commands as they execute.
|
||||
</p>
|
||||
<p>
|
||||
If you work with COM or DirectX, you will want to force gcc to
|
||||
generate vtable-thunks by including <code><vtable-thunks>on</code>
|
||||
in the BUILD <a href="build_system.htm#user_globals">global
|
||||
variable</a>. If you're messing around with this stuff, make extra sure
|
||||
that you build all your libraries (including STLport) with the same
|
||||
vtable style.
|
||||
|
||||
<h2>Boost threads library and gcc 2.95.3-5</h2>
|
||||
<p>
|
||||
The Cygwin-special gcc release 2.95.3-5 does not include a thread-safe
|
||||
version of libgcc.a, which prevents any of it's code being
|
||||
thread-safe, even with the -mthreads option. If you're feeling lucky,
|
||||
grafting in the thread-safe versions of _eh.o and frame.o from the
|
||||
mingw 2.95.3 libgcc.a seems to fix the problem (give the hybrid
|
||||
library a new name and adjust the compiler's specs file
|
||||
appropriately). Later releases of the Cygwin compiler probably won't
|
||||
suffer from this restriction, so you should definitely upgrade if you
|
||||
want to use the threads library.
|
||||
</p>
|
||||
|
||||
<a name="stlport"></a>
|
||||
<h2>Building a native STLport with Cygwin gcc</h2>
|
||||
<p>
|
||||
The current release (4.5.3) of STLport does not include an extra
|
||||
makefile to build the libraries with the -mno-cygwin mode of Cygwin
|
||||
gcc, but you can use the existing <code>gcc-mingw.mak</code> file by
|
||||
setting the
|
||||
<code>CXXFLAGS_COMMON</code> variable on your make command line, as follows:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
make -fgcc-mingw.mak "CXXFLAGS_COMMON=-mno-cygwin -I/usr/include/mingw"
|
||||
</pre>
|
||||
|
||||
You might also need to add <code>-mthreads</code> and/or
|
||||
<code>-fvtable-thunks</code> within the quotes, depending on what kind
|
||||
of executables you ultimately want to produce. You can create multiple
|
||||
versions of the libraries by setting a different
|
||||
<code>LIB_BASENAME</code> in each case, and set up a corresponding
|
||||
value in the
|
||||
<code>NOCYGWIN_STLPORT_LIB_ID</code> shell variable before building
|
||||
Boost.
|
||||
</p>
|
||||
|
||||
<p>If you have built a newer version of Cygwin GCC from source, or
|
||||
you've built an older one and configured it with
|
||||
<code>--prefix=</code>, you'll need to add the following
|
||||
<code>DYN_LINK</code> variable setting in order to get the GCC support
|
||||
libraries into the library search path when the STLPort DLLs are
|
||||
built:
|
||||
|
||||
<pre>
|
||||
"DYN_LINK=c++ -shared -L/usr/local/lib -o"
|
||||
</pre>
|
||||
|
||||
(substitute the path you passed to <code>--prefix=</code> for
|
||||
<code>/usr/local/lib</code> if you are using a non-standard
|
||||
configuration).
|
||||
|
||||
<p>
|
||||
Make sure that you're really compiling the STLport iostreams instead
|
||||
of just wrapping the Cygwin gcc streams. The default behaviour for
|
||||
STLport 4.x is correct, but it is possible to reconfigure this
|
||||
manually. Refer to the documentation on selecting the IOStreams mode
|
||||
if you're in doubt.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<i>
|
||||
Toolset and docs contributed May 2002 by
|
||||
<a href="mailto:RaoulGough@yahoo.co.uk">Raoul Gough</a>
|
||||
</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
83
v1/gcc-nocygwin-tools.jam
Normal file
83
v1/gcc-nocygwin-tools.jam
Normal file
@@ -0,0 +1,83 @@
|
||||
# (C) Copyright David Abrahams and Carlos Pinto Coelho 2001, 2002.
|
||||
# Permission to copy, use, modify, sell and distribute this software
|
||||
# is granted provided this copyright notice appears in all
|
||||
# copies. This software is provided "as is" without express or implied
|
||||
# warranty, and with no claim as to its suitability for any purpose.
|
||||
|
||||
#
|
||||
# gcc-nocygwin toolset by Raoul Gough (RaoulGough@yahoo.co.uk)
|
||||
#
|
||||
# This toolset builds boost on a cygwin system using the -mno-cygwin
|
||||
# gcc option, which creates windows-native binaries (without any
|
||||
# dependencies on cygwin1.dll). It requires an STLport built
|
||||
# by mingw gcc, or maybe by cygwin gcc using the -mno-cygwin
|
||||
# option, if you feel like messing with the STLport makefiles.
|
||||
#
|
||||
# Configuration:
|
||||
#
|
||||
# You need a boost jam executable that was built for NT, not
|
||||
# cygwin. There are two reasons for this. Firstly, you need the
|
||||
# NT jam variable to be set, and secondly, the cygwin build of
|
||||
# boost jam executes commands via the cygwin shell, which doesn't
|
||||
# handle backslashes in pathnames properly.
|
||||
#
|
||||
# Don't forget to set STLPORT_ROOT, either in your environment
|
||||
# or in Jamrules in the boost installation directory. Also set
|
||||
# BOOST_ROOT. Use native windows path names and not the
|
||||
# /cygdrive/... style.
|
||||
#
|
||||
# Set NOCYGWIN_STLPORT_LIB_ID to set the STLport naming
|
||||
# convention (default is "mingw32" which looks for libraries
|
||||
# named like stlport_mingw32_stldebug.lib)
|
||||
#
|
||||
# Run boost jam from the boost install directory like this:
|
||||
#
|
||||
# jam -sTOOLS=gcc-nocygwin
|
||||
#
|
||||
# If things are going wrong, a handy jam option is -d2, which shows
|
||||
# commands before execution.
|
||||
#
|
||||
|
||||
NOCYGWIN_STLPORT_LIB_ID ?= mingw32 ;
|
||||
|
||||
{
|
||||
local GCC_STLPORT_LIB_ID = $(NOCYGWIN_STLPORT_LIB_ID) ;
|
||||
|
||||
extends-toolset gcc-stlport ;
|
||||
}
|
||||
|
||||
flags gcc-nocygwin CFLAGS : -mno-cygwin ;
|
||||
flags gcc-nocygwin LINKFLAGS : -mno-cygwin ;
|
||||
flags gcc-nocygwin LINKFLAGS <threading>multi : -mthreads ;
|
||||
|
||||
#### Link ####
|
||||
|
||||
#
|
||||
# Duplicated from gcc-tools.jam (unfortunately) because we don't want
|
||||
# IMPLIB_COMMAND to include -Wl,--export-all-symbols
|
||||
#
|
||||
|
||||
rule Link-action
|
||||
{
|
||||
SPACE on $(<) = " " ;
|
||||
# if we don't have a GNU linker then we can't pass any GNU-ld specific flags:
|
||||
if $(NO_GNU_LN)
|
||||
{
|
||||
LNOPT on $(<) = ;
|
||||
}
|
||||
else
|
||||
{
|
||||
LNOPT on $(<) = "" ;
|
||||
}
|
||||
|
||||
OUTTAG on $(<) = "" ;
|
||||
SOTAG on $(<) = ;
|
||||
ACTION_1 on $(<) = ;
|
||||
|
||||
# This will appear before the import library name when building a DLL, but
|
||||
# will be "multiplied away" otherwise.
|
||||
IMPLIB_COMMAND on $(<) = "-Wl,--exclude-symbols,_bss_end__:_bss_start__:_data_end__:_data_start__ -Wl,--out-implib," ;
|
||||
DEPENDS $(<) : $(NEEDLIBS) ;
|
||||
gRUN_LD_LIBRARY_PATH($(<)) += $(GCC_STDLIB_DIRECTORY) ;
|
||||
gcc-Link-action $(<) : $(>) ;
|
||||
}
|
||||
@@ -23,14 +23,16 @@
|
||||
|
||||
<p>Boost.Build's <a href="http://gcc.gnu.org">gcc-stlport</a> toolset supports the
|
||||
GNU GCC compiler using <a href="http://www.stlport.org">STLport</a> as a replacement
|
||||
to the GNU libg++. This toolset is an extension to the
|
||||
<a href="gcc-tools.html">gcc toolset</a> and therefore supports the same functionality.
|
||||
to the GNU libg++.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The gcc-stlport toolset responds to the following variables which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>. This toolset is an extension to the
|
||||
<a href="gcc-tools.html">gcc toolset</a> and therefore responds to all
|
||||
of the GCC <a href="gcc-tools.html#configuration">configuration
|
||||
variables</a> in addition to those listed below.
|
||||
|
||||
<table border="1">
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@ also supports <a href="http://www.cygwin.com">Cygwin</a> GCC, though
|
||||
<a href="http://www.mingw.org">MinGW</a> has <a
|
||||
href="mingw-tools.html">its own distinct toolset</a>.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The gcc toolset responds to the following variables can be set in the
|
||||
The gcc toolset responds to the following variables, which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
|
||||
@@ -168,6 +168,8 @@ flags gcc CFLAGS <profiling>on : -pg ;
|
||||
flags gcc LINKFLAGS <profiling>on : -pg ;
|
||||
|
||||
flags gcc C++FLAGS <rtti>off : -fno-rtti ;
|
||||
flags gcc C++FLAGS <vtable-thunks>on : -fvtable-thunks ;
|
||||
flags gcc C++FLAGS <vtable-thunks>off : -fvtable-thunks=0 ;
|
||||
|
||||
flags gcc CFLAGS <cflags> ;
|
||||
flags gcc C++FLAGS <cxxflags> ;
|
||||
|
||||
278
v1/index.html
278
v1/index.html
@@ -14,95 +14,107 @@
|
||||
|
||||
<img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" align= "center" width="277" height="86">Building
|
||||
Boost Libraries</h1>
|
||||
<table border="1" cellpadding="5" width="656">
|
||||
<tr>
|
||||
<td width="638"><font size="5" color="#FF0000"><b>Read This
|
||||
First!</b></font> <p>Boost.Build is fairly new as yet. Some features
|
||||
are missing or incomplete. Instructions for accomplishing basic tasks
|
||||
(this page) are rudimentary. But enough functionality is working
|
||||
well to make using Boost.Build worthwhile. The important
|
||||
bits-and-pieces are all there - what's left is some of the relatively
|
||||
minor glue to make the system smooth and easy to use. Secondary tasks like
|
||||
copying libraries to installation specific directories are weak.</p> <p>If
|
||||
there isn't a configuration file (see <a href="#Tools">Tools</a>) available
|
||||
for your favorite compiler, consider contributing one. </p> <p>Note
|
||||
that the underlying Boost.Jam build engine is mature software, and the
|
||||
original Jam build engine has been
|
||||
widely used for many years. The Boost specific extensions are well
|
||||
on their way to becoming stable, and have begun to attract interest and
|
||||
use outside of Boost.</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<p><a href="#Introduction">Introduction</a><br>
|
||||
<a href="#Preliminaries">Preliminaries</a><br>
|
||||
<a href="#Building">Building Boost Libraries</a><br>
|
||||
<a href="#Moretools">More on using the tools</a><br>
|
||||
<a href="#Tools">Tools available</a><br>
|
||||
<a href="#Configuring">Configuring the tools</a><br>
|
||||
<a href="#Tools">Supported Toolsets</a><br>
|
||||
<a href="#Jam">Boost.Jam executable</a></p>
|
||||
<h2><a name="Introduction">Introduction</a></h2>
|
||||
<p>These instructions explain how to accomplish common tasks using <b>Boost.Build</b>,
|
||||
the Boost Build System. The build system uses <a href="build_system.htm">
|
||||
Boost.Jam</a>, an extension of the
|
||||
<a href="http://www.perforce.com/jam/jam.html">Perforce Jam</a> portable <i>make</i>
|
||||
replacement.</p>
|
||||
<p>For tasks not covered here, see the full <a href="build_system.htm">build
|
||||
system documentation</a>.</p>
|
||||
<p>Note that many Boost libraries are implemented entirely within their headers,
|
||||
and so can be used without building object libraries. Libraries that do
|
||||
require building object libraries first include the Boost Python, Regular
|
||||
Expression, and Thread libraries.</p>
|
||||
|
||||
<p>These instructions explain how to accomplish common tasks using
|
||||
<b>Boost.Build</b>, the Boost Build System. The build system uses <a
|
||||
href="build_system.htm"> Boost.Jam</a>, an extension of the
|
||||
<a href="http://www.perforce.com/jam/jam.html">Perforce Jam</a>
|
||||
portable <i>make</i> replacement.</p>
|
||||
|
||||
<p>For tasks not covered here, see the full <a
|
||||
href="build_system.htm">build system documentation</a>.</p>
|
||||
|
||||
<p>Note that many Boost libraries are implemented entirely within
|
||||
their headers, and so can be used without building object
|
||||
libraries. Libraries that do require building object libraries first
|
||||
include the <a href="../../libs/python/doc/index.html">Python</a>, <a
|
||||
href="../../libs/regex/index.htm">Regex</a>, and <a
|
||||
href="../../libs/thread/doc/index.html">Threads</a> libraries.
|
||||
|
||||
<h2><a name="Preliminaries">Preliminaries</a></h2>
|
||||
<ul>
|
||||
<li><a href="../../more/download.html">Download Boost</a>, and unpack the full
|
||||
directory structure into some root directory.</li>
|
||||
|
||||
<li>Install the <a href="#Jam">Boost.Jam executable</a> if needed. <a href="#Jam">
|
||||
Pre-builts</a> are available. Make sure it's in your path. (Note: Boost
|
||||
requires an enhanced version of Jam; the basic version won't work.)</li>
|
||||
<li>Set any environment variables required to run your compiler and related
|
||||
tools from the command line. (It might be a good idea to verify your command
|
||||
line compiler is working if you don't use it regularly.) If you don't want
|
||||
to clutter your environment, see <a href="#Moretools">More on using the
|
||||
tools</a> for alternatives.</li>
|
||||
|
||||
<li><a href="#Configuring">Configure</a> the command-line toolset(s)
|
||||
you intend to use. It might be a good idea to verify your command
|
||||
line compiler is working if you don't use it regularly.
|
||||
|
||||
<li>Optional: if you intend to build the <a
|
||||
href="../../libs/python/doc/index.html">Boost.Python</a> library, set
|
||||
environment variables to configure Boost.Build for your Python
|
||||
installation. For more information, see these <a
|
||||
href="../../libs/python/doc/building.html">instructions</a>. If you
|
||||
leave this step out, Boost.Build will print a message about how to
|
||||
do it, and will skip the build for Boost.Python.
|
||||
|
||||
</ul>
|
||||
|
||||
<h2><a name="Building">Building</a> Boost Libraries</h2>
|
||||
|
||||
<p>Using your operating system's command line interpreter, execute the following
|
||||
steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
|
||||
<ul>
|
||||
<li>Change to the Boost root directory. (The directory you unpacked the
|
||||
<li>Change to the Boost root directory. (The directory you unpacked the
|
||||
distribution into; unless you changed it, the name will be boost_n_n_n where
|
||||
n_n_n is the release number. Among others files, it contains c++boost.gif,
|
||||
and subdirectories boost, libs, more, etc.)</li>
|
||||
n_n_n is the release number. Among others files, it contains c++boost.gif,
|
||||
and subdirectories boost, libs, more, etc.)
|
||||
<blockquote>
|
||||
<p><code>chdir boost_1_27_0 // or whatever release you downloaded</code></p>
|
||||
<p><code>chdir boost_1_28_0 </code> <i>(or whatever release you downloaded)</i>
|
||||
</blockquote>
|
||||
|
||||
<li>Build the Boost libraries for your <a href="#Tools">tools</a>. The example
|
||||
is for the GNU and Metrowerks compilers.</li>
|
||||
<li>Invoke the build system, specifying the <a
|
||||
href="#Tools">toolset</a>(s) you wish to use. The example is for
|
||||
the GNU and Metrowerks compilers. For more sophisticated jam
|
||||
invocation options, see this <a
|
||||
href="build_system.htm#initiating">documentation</a>.
|
||||
<blockquote>
|
||||
<p><code>bjam -sTOOLS="gcc metrowerks"</code></p>
|
||||
<p><code>bjam "-sTOOLS=gcc metrowerks"</code></p>
|
||||
</blockquote>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2><a name="Moretools">More on using the tools</a></h2>
|
||||
<h2><a name="Configuring">Configuring the tools</a></h2>
|
||||
<p>The build system's toolsets are designed to work in either of two ways:</p>
|
||||
<ol>
|
||||
<li>The user sets up all of the environment for each toolset he wants to use,
|
||||
in the normal way. For example, for Microsoft VC++, ...vc98/bin is in the
|
||||
path, vcvars32.bat or equivalent has been invoked, etc. For Metrowerks
|
||||
CodeWarrior, cwenv.bat or equivalent has been called and ...Other Metrowerks
|
||||
Tools/Command Line Tools is in the path.<br>
|
||||
|
||||
<li>The user sets up all of the environment for each toolset he
|
||||
wants to use in the normal way. For example, for Microsoft VC++,
|
||||
...vc98/bin is in the path, vcvars32.bat or equivalent has been
|
||||
invoked, etc. For Metrowerks CodeWarrior, cwenv.bat or equivalent
|
||||
has been called and ...Other Metrowerks Tools/Command Line Tools
|
||||
is in the path. Many Unix operating systems come preconfigured
|
||||
this way and require no user intervention.<br>
|
||||
<br>
|
||||
</li>
|
||||
<li>The user doesn't want his environment cluttered with this junk and wants
|
||||
to avoid the many other things done by the vendor's script files. Instead,
|
||||
he or she sets variables which point to the toolset installation directories
|
||||
(possibly in the Jamrules, or a user-setup.jam file invoked by the Jamrules).
|
||||
These variables are used by the build system to locate the tools and invoke
|
||||
the necessary setup. They are described in the comments in each toolset's
|
||||
.jam file.</li>
|
||||
|
||||
<li>The user doesn't want his environment cluttered with settings or
|
||||
has non-standard installations for some of his tools. Instead, he
|
||||
or she sets variables which point to the toolset installation
|
||||
directories, either in the command shell environment or on the
|
||||
<code>bjam</code> command-line. These variables are used by the
|
||||
build system to locate the tools and invoke the necessary
|
||||
setup.
|
||||
</ol>
|
||||
<h2><a name="Tools">Tools</a> available</h2>
|
||||
|
||||
<h2><a name="Tools">Supported Toolsets</a></h2>
|
||||
|
||||
The following toolsets are supported by Boost.Build. For information
|
||||
about <a href="#Configuring">configuring</a> each toolset, click its name in the leftmost
|
||||
column.
|
||||
|
||||
<table border="1" cellpadding="5">
|
||||
<tr>
|
||||
<td><b>TOOLS Name</b></td>
|
||||
@@ -110,79 +122,163 @@ steps. The sample commands given will work for both UNIX and Windows.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code><a href="borland-tools.html">borland</a></code></td>
|
||||
<td>Borland command line compiler tools</td>
|
||||
<td><a href="http://www.borland.com/bcppbuilder/freecompiler">Borland</a> C++</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code><a href="como-tools.html">como</a></code></td>
|
||||
<td>Comeau command line compiler tools</td>
|
||||
<td><a href="http://www.comeaucomputing.com">Comeau C++</a> compiler front-end for Windows,
|
||||
using Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual C++</a>as a back-end.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="gcc-tools.html">gcc</a></code></td>
|
||||
<td>GNU GCC command line compiler tools</td>
|
||||
<td><a href="http://gcc.gnu.org">GNU GCC</a> on Unix and <a href="http://www.cygwin.com">Cygwin</a>.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="gcc-stlport-tools.html">gcc-stlport</a></code></td>
|
||||
<td>GNU GCC command line compiler tools, using the STLport library</td>
|
||||
<td><a href="http://gcc.gnu.org">GNU GCC</a> on Unix and <a
|
||||
href="http://www.cygwin.com">Cygwin</a>, using the <a
|
||||
href="http://www.stlport.org">STLport</a> standard library
|
||||
implementation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>intel-win32</code></td>
|
||||
<td>Intel command line compiler tools under Win32 using the
|
||||
Microsoft library</td>
|
||||
<td><code><a href="gcc-nocygwin-tools.html">gcc-nocygwin</a></code></td>
|
||||
<td>GNU GCC Cygwin command line compiler tools running in
|
||||
"no-cygwin" mode, using the <a href="http://www.stlport.org">STLport</a>
|
||||
standard library implementation (produces commercially redistributable
|
||||
objects)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>intel-linux</code></td>
|
||||
<td>Intel command line compiler tools under Linux</td>
|
||||
<td><code><a href="intel-win32-tools.html">intel-win32</a></code></td>
|
||||
<td><a
|
||||
href="http://www.intel.com/software/products/compilers/c60/">Intel
|
||||
C++ for Windows</a> using the Dinkumware standard library in the Intel-required Microsoft
|
||||
<a href="http://msdn.microsoft.com/visualc/">Visual C++</a> 6 or 7
|
||||
installation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>kcc</code></td>
|
||||
<td>KAI command line compiler tools</td>
|
||||
<td><code><a href="intel-linux-tools.html">intel-linux</a></code></td>
|
||||
<td><a href="http://www.intel.com/software/products/compilers/c60l/">Intel C++ for Linux</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>metrowerks</code></td>
|
||||
<td>Metrowerks CodeWarrior command line compiler tools</td>
|
||||
<td><code><a href="kcc-tools.html">kcc</a></code></td>
|
||||
<td><a href="http://developer.intel.com/software/products/kcc/">KAI C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>msvc</code></td>
|
||||
<td>Microsoft Visual C++ command line compiler tools</td>
|
||||
<td><code><a href="metrowerks-tools.html">metrowerks</a></code></td>
|
||||
<td><a href="http://www.metrowerks.com">Metrowerks CodeWarrior</a> command-line tools</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>msvc-stlport</code></td>
|
||||
<td>Microsoft Visual C++ command line compiler tools, using the STLport library</td>
|
||||
<td><code><a href="mingw-tools.html">mingw</a></code></td>
|
||||
<td>GNU GCC and associated tools in <a
|
||||
href="http://www.mingw.org">MinGW</a> configuration (produces
|
||||
commercially redistributable objects)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code>vacpp</code></td>
|
||||
<td>IBM Visual Age C++ command line compiler tools</td>
|
||||
<td><code><a href="mipspro-tools.html">mipspro</a></code></td>
|
||||
<td>SGI <a href="http://www.sgi.com/developers/devtools/languages/mipspro.html">
|
||||
MIPSpro C and C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="mipspro-tools.html">mipspro</a></code></td>
|
||||
<td>SGI <a href="http://www.sgi.com/developers/devtools/languages/mipspro.html">
|
||||
MIPSpro C and C++</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="msvc-tools.html">msvc</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="msvc-stlport-tools.html">msvc-stlport</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools, using the <a
|
||||
href="http://www.stlport.org">STLport</a> standard library
|
||||
implementation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="tru64cxx-tools.html">tru64cxx</a></code></td>
|
||||
<td><a href="http://www.tru64unix.compaq.com/cplus/">Compaq C++</a>
|
||||
for Tru64 UNIX (versions prior to 6.5)</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="tru64cxx-tools.html">tru64cxx65</a></code></td>
|
||||
<td><a href="http://www.tru64unix.compaq.com/cplus/">Compaq C++</a>
|
||||
Version 6.5 for Tru64 UNIX</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><code><a href="vacpp-tools.html">vacpp</a></code></td>
|
||||
<td><a href="http://www-3.ibm.com/software/ad/vacpp/">IBM Visual
|
||||
Age C++</a> command-line tools</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><code><a href="vc7-tools.html">vc7</a></code></td>
|
||||
<td>Microsoft <a href="http://msdn.microsoft.com/visualc/">Visual
|
||||
C++</a> command-line tools, in case you are using the <a
|
||||
href="msvc-tools.html"><code>msvc</code></a> toolset for a <a
|
||||
href="http://msdn.microsoft.com/visualc/productinfo/previous/default.asp">Visual
|
||||
C++ 6.x</a>.</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<p>Unless otherwise specified, the library is assumed to be the one shipped with
|
||||
the compiler.</p>
|
||||
<p>Additional tools can be supplied by adding an appropriate xxxx-tools.jam file
|
||||
to the tools/build subdirectory, where xxxx is the name of the tool being
|
||||
added. If you write an additional toolset file, please submit it to Boost
|
||||
added. If you write an additional toolset file, please submit it to Boost
|
||||
so others may benefit from your work.</p>
|
||||
|
||||
<h2>Boost.<a name="Jam">Jam</a> executable</h2>
|
||||
|
||||
<p>Pre-built Boost.Jam executables are available for the following platforms:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.hpux/jam.gz">
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.hpux/bjam.gz">
|
||||
HPUX</a> </li>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.aix/jam.gz">
|
||||
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.aix/bjam.gz">
|
||||
IBM Aix</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxx86/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxx86/bjam.gz">
|
||||
Linux-x86</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/boost-build.win.zip">
|
||||
Microsoft Windows</a> (includes Boost.Build files and boost-build helper
|
||||
program).</li>
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.irix/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.ntx86/bjam.zip">
|
||||
Microsoft Windows</a>
|
||||
|
||||
<li><a href="http://boost.sourceforge.net/jam-executables/bin.irix/bjam.gz">
|
||||
SGI Irix</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.solaris/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.solaris/bjam.gz">
|
||||
SUN Solaris</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.osf/jam.gz">
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.osf/bjam.gz">
|
||||
Compaq Tru64</a> </li>
|
||||
|
||||
<li>
|
||||
<a href="http://boost.sourceforge.net/jam-executables/bin.linuxppc/bjam.gz">
|
||||
Linux-PPC</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>RedHat Linux RPM packages are available:</p>
|
||||
<ul>
|
||||
@@ -221,11 +317,11 @@ the Boost.Jam executable yourself:</p>
|
||||
libraries created by the initial make in the <tt>jam_src</tt> directory.
|
||||
</ul>
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->09 May, 2002<!--webbot bot="Timestamp" i-checksum="40401" endspan -->
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->15 May, 2002<!--webbot bot="Timestamp" i-checksum="13973" endspan -->
|
||||
</p>
|
||||
<p>© Copyright 2001 Beman Dawes</p>
|
||||
<p> </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="http://www.intel.com/software/products/compilers/c60/">intel-linux</a> toolset supports the
|
||||
<p>Boost.Build's <a href="http://www.intel.com/software/products/compilers/c60l/">intel-linux</a> toolset supports the
|
||||
Intel C++ Compiler for Linux.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
@@ -21,13 +21,11 @@
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="kcc-tools.html">kcc</a> toolset supports the
|
||||
<p>Boost.Build's <a href="http://developer.intel.com/software/products/kcc/">kcc</a> toolset supports the
|
||||
Intel KAI C++ Compiler.
|
||||
|
||||
<p><b>WARNING:</b> This compiler is no longer being distributed by Intel, see the
|
||||
<a href="http://developer.intel.com/software/products/kcc/announcement.htm">announcement</a> for details.
|
||||
And our support for it is questionable. We would love it if someone out there with this
|
||||
compiler would give us feedback on this support.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
|
||||
@@ -4,16 +4,10 @@
|
||||
# express or implied warranty, and with no claim as to its suitability
|
||||
# for any purpose.
|
||||
|
||||
# This file is /NOT/ up-to-date; please use other toolset description
|
||||
# files as examples.
|
||||
#
|
||||
# I've tried to bring it up-to-date. -jsiek
|
||||
|
||||
|
||||
|
||||
flags kcc CFLAGS <debug-symbols>on : -g ;
|
||||
flags kcc LINKFLAGS <debug-symbols>on : -g ;
|
||||
flags gcc LINKFLAGS <debug-symbols>off : -s ;
|
||||
flags kcc LINKFLAGS <debug-symbols>off : -s ;
|
||||
flags kcc CFLAGS <optimization>off : +K0 ;
|
||||
flags kcc CFLAGS <optimization>speed : +K2 ;
|
||||
|
||||
@@ -36,8 +30,9 @@ flags kcc NEEDLIBS <library-file> ;
|
||||
flags kcc FINDLIBS <find-library> ;
|
||||
|
||||
|
||||
kcc.bin-directory = [ conditional $(kcc.root-directory) : $(kcc.root-directory)$(SLASH)bin$(SLASH) : " " ] ;
|
||||
detect-build-tools kcc : "KCC" ;
|
||||
set-as-singleton kcc.root-directory ;
|
||||
kcc.bin-directory = $(kcc.root-directory)$(SLASH)bin$(SLASH) ;
|
||||
kcc.bin-directory ?= " " ;
|
||||
|
||||
#### Link ####
|
||||
|
||||
@@ -83,6 +78,6 @@ rule Archive-action
|
||||
|
||||
actions updated together piecemeal kcc-Archive-action
|
||||
{
|
||||
KCC -g $(ARFLAGS) -o "$(<)" "$(>)"
|
||||
$(kcc.bin-directory)KCC -g $(ARFLAGS) -o "$(<)" "$(>)"
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#//<a href="http://www.metrowerks.com/products/windows/">Metro-<br>werks<br>Code-<br>Warrior</a>
|
||||
|
||||
# singleton variables...
|
||||
set-as-singleton METROWERKS_ROOT METROWERKS_INCLUDE_ROOT CWFOLDER ;
|
||||
set-as-singleton METROWERKS_ROOT CWFOLDER ;
|
||||
|
||||
# Get these variable set on the targets so that we can re-use the
|
||||
# build actions for other toolsets using this one as a base.
|
||||
|
||||
@@ -26,7 +26,7 @@ SGI MIPSpro C and C++ compilers.
|
||||
|
||||
<h2>Configuration Variables</h2>
|
||||
|
||||
The como toolset responds to the following variables which can be set in the
|
||||
The mipspro toolset responds to the following variables which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
|
||||
150
v1/msvc-stlport-tools.html
Normal file
150
v1/msvc-stlport-tools.html
Normal file
@@ -0,0 +1,150 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - msvc-stlport toolset</title>
|
||||
</head>
|
||||
<body link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">msvc-stlport toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a
|
||||
href="http://msdn.microsoft.com/visualc/">msvc-stlport</a> toolset
|
||||
supports the <td>Microsoft <a
|
||||
href="http://msdn.microsoft.com/visualc/">Visual C++</a> command-line
|
||||
tools, using the <a href="http://www.stlport.org">STLport</a> standard
|
||||
library implementation on Microsoft Windows. It is designed to allow
|
||||
you to build and test with multiple installed versions of STLPort, so
|
||||
that objects build in each configuration will be built into separate
|
||||
directories.
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The <code>msvc</code> toolset responds to the following variables,
|
||||
which can be set in the environment or configured on the jam
|
||||
command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>. It is an extension
|
||||
of the <a href="msvc-tools.html">msvc toolset</a> and therefore
|
||||
responds to all of the MSVC <a
|
||||
href="msvc-tools.html#configuration">configuration variables</a> in
|
||||
addition to those listed below.
|
||||
|
||||
<p>In the table below, <i>version</i> corresponds to an
|
||||
STLPort version number, e.g. "<code>4.5.3</code>".
|
||||
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Variable Name <th>Semantics <th>Default <th>Notes
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_PATH</code>
|
||||
|
||||
<td>A directory containing at least one subdirectory of the form
|
||||
<code>/STLPort-</code><i>version</i> where an STLPort
|
||||
installation can be found.
|
||||
|
||||
<td><i>empty</i>
|
||||
|
||||
<td>Allows easy configuration for an installation where
|
||||
several STLPort versions are installed under a single directory.
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_</code><i>version</i><code>_PATH</code>
|
||||
|
||||
<td>The directory where the specific STLPort <i>version</i>
|
||||
installation can be found, in case there is no central
|
||||
location appropriate for <code>STLPORT_PATH</code>, above, or
|
||||
a particular version's installation is not located in the
|
||||
usual place.
|
||||
|
||||
<td><i>empty</i>
|
||||
|
||||
<td>Allows configuration of a specific STLPort installation.
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_VERSION</code>
|
||||
|
||||
<td>The version of STLPort in use by default.
|
||||
|
||||
<td><code>4.5.3</code>
|
||||
|
||||
<td>Other values can be selected in parallel setting the <a
|
||||
href="build_system.htm#initiating">build property</a>
|
||||
<stlport-version> to values from the list of
|
||||
<code>$(STLPORT_VERSIONS)</code>
|
||||
|
||||
<tr>
|
||||
<td><code>STLPORT_VERSIONS</code>
|
||||
|
||||
<td>A space-separated list of alternate versions of STLport available on this machine.
|
||||
|
||||
<td><code>4.5 4.0</code>
|
||||
|
||||
</table>
|
||||
|
||||
<h2><a name="features">Toolset-Specific Features</a></h2>
|
||||
|
||||
The following <code>msvc-stlport</code>-specific <a
|
||||
href="build_system.htm#features">features</a> can be used in target build
|
||||
requirements or in the <a href="build_system.htm#initiating"><code>BUILD</code></a> variable:
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Feature <th>Values <th>Default <th>Semantics
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-iostream</code>
|
||||
|
||||
<td><code>off on</code>
|
||||
|
||||
<td><code>off</code>
|
||||
|
||||
<td>Controls whether STLPort's own iostreams are in use. Though
|
||||
this setting is <code>off</code> by default to save users from
|
||||
having to build STLPort, we strongly recommend <code>on</code>
|
||||
instead.
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-version</code>
|
||||
|
||||
<td><code>$(STLPORT_VERSION) $(STLPORT_VERSIONS)</code> (see above)
|
||||
|
||||
<td><code>$(STLPORT_VERSION)</code>
|
||||
|
||||
<td>Selects a version of STLPort for each target
|
||||
|
||||
<tr>
|
||||
<td><code>stlport-cstd-namespace</code>
|
||||
|
||||
<td><code>std global</code>
|
||||
|
||||
<td><code>std</code>
|
||||
|
||||
<td>Controls whether or not names from the "C" library
|
||||
headers such as <cstdlib> are imported into <code>namespace
|
||||
std</code>.
|
||||
</table>
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
14 May, 2002
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">Dave Abrahams</a>
|
||||
2002. All Rights Reserved.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -84,8 +84,8 @@ rule get-stlport-root
|
||||
ECHO ;
|
||||
ECHO STLPORT_VERSIONS - Alternate versions of STLport available on this machine. Defaults to \"4.5 4.0\". ;
|
||||
ECHO ;
|
||||
ECHO "Note that STLPort iostreams are /not/ in use by default. To enable them, you must place"
|
||||
ECHO " <stlport-iostream>on in your BUILD variable or in target requirements."
|
||||
ECHO "Note that STLPort iostreams are /not/ in use by default. To enable them, you must place" ;
|
||||
ECHO " <stlport-iostream>on in your BUILD variable or in target requirements." ;
|
||||
EXIT ;
|
||||
}
|
||||
|
||||
|
||||
69
v1/msvc-tools.html
Normal file
69
v1/msvc-tools.html
Normal file
@@ -0,0 +1,69 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<link rel="stylesheet" type="text/css" href="boost.css">
|
||||
<title>Boost.Build - msvc toolset</title>
|
||||
</head>
|
||||
<body link="#0000ff" vlink="#800080">
|
||||
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
|
||||
"header">
|
||||
<tr>
|
||||
<td valign="top" width="300">
|
||||
<h3><a href="http://www.boost.org"><img height="86" width="277" alt="C++ Boost" src="../../c++boost.gif" border="0"></a></h3>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<h1 align="center">Boost.Build</h1>
|
||||
<h2 align="center">msvc toolset</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
<p>Boost.Build's <a href="http://msdn.microsoft.com/visualc/">msvc</a>
|
||||
toolset supports the Microsoft Visual C++ command-line tools on
|
||||
Microsoft Windows. It supports any version of Visual C++, but in case
|
||||
you have more than one version of Visual C++ installed, and you want
|
||||
to use both, the additional <a href="vc7-tools.html">vc7</a> toolset
|
||||
can be used for Visual C++ 7.0.
|
||||
|
||||
<h2><a name="configuration">Configuration Variables</a></h2>
|
||||
|
||||
The <code>msvc</code> toolset responds to the following variables, which can be set in the
|
||||
environment or configured on the jam command-line using
|
||||
<code>-s<i>VARIABLE_NAME</i>=</code><i>value</i>:
|
||||
|
||||
<table border="1">
|
||||
|
||||
<tr><th>Variable Name <th>Semantics <th>Default <th>Notes
|
||||
|
||||
<tr>
|
||||
<td><code>MSVC_ROOT</code>
|
||||
<td>The path to the MSVC installation directory
|
||||
<td><code>c:\Program Files\Microsoft Visual C++\VC98</code>
|
||||
<td>If <code>MSVCDir</code> is set in the environment, the toolset
|
||||
will assume <code>VCVARS32.BAT</code>has already been called, and
|
||||
will ignore this variable.
|
||||
|
||||
<tr>
|
||||
<td><code>VISUALC</code>
|
||||
<td>The path to the MSVC installation directory
|
||||
<td><code>c:\Program Files\Microsoft Visual C++\VC98</code>
|
||||
<td>If <code>MSVCDir</code> or <code>MSVC_ROOT</code> is set in
|
||||
the environment, the toolset will assume
|
||||
<code>VCVARS32.BAT</code>has already been called, and will ignore
|
||||
this variable.
|
||||
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<p>Revised
|
||||
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
14 May, 2002
|
||||
<!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">Dave Abrahams</a>
|
||||
2002. All Rights Reserved.</i></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -24,23 +24,36 @@ flags msvc VC_PDB_NAME ;
|
||||
# compute MSVC tool path
|
||||
# You can either put the msvc bin directory in your PATH, or you can set
|
||||
# MSVCDir to point at the msvc installation directory
|
||||
|
||||
# Some installations set MSVCDIR instead of MSVCDir; who knows why?
|
||||
MSVCDir ?= $(MSVCDIR) ;
|
||||
|
||||
# If MSVCDir is not set the user hasn't run VCVARS32.BAT
|
||||
if ! $(MSVCDir)
|
||||
{
|
||||
# In case someone set VISUALC in order to build Jam, we can just use that.
|
||||
MSVC_ROOT ?= $(VISUALC) ;
|
||||
# Otherwise, guess a standard installation directory
|
||||
MSVC_ROOT ?= "C:\\Program Files\\Microsoft Visual C++\\VC98" ;
|
||||
VC_TOOL_PATH ?= "$(MSVC_ROOT)"$(SLASH)bin$(SLASH) ;
|
||||
VC_SETUP ?= "CALL \"$(VC_TOOL_PATH)VCVARS32.BAT\" >nul" ;
|
||||
|
||||
# Reconstitutes paths containing spaces
|
||||
MSVC_ROOT = $(MSVC_ROOT:J=" ") ;
|
||||
|
||||
# The tools are provisionallly located in the msvc6 bin
|
||||
# directory. This may be overridden by toolsets which extend this
|
||||
# one.
|
||||
VC_TOOL_PATH = "$(MSVC_ROOT)"$(SLASH)bin$(SLASH) ;
|
||||
|
||||
# Always call VCVARS32.BAT before invoking the tools
|
||||
VC_SETUP = "CALL \"$(VC_TOOL_PATH)VCVARS32.BAT\" >nul" ;
|
||||
}
|
||||
else
|
||||
{
|
||||
# This hack reconstitutes paths containing spaces as long as
|
||||
# they don't contain any consecutive spaces.
|
||||
while $(MSVCDir[2])
|
||||
{
|
||||
MSVCDir = $(MSVCDir[1])" "$(MSVCDir[2]) $(MSVCDir[3-]) ;
|
||||
}
|
||||
# Reconstitutes paths containing spaces
|
||||
MSVCDir = $(MSVCDir:J=" ") ;
|
||||
|
||||
VC_TOOL_PATH ?= "" ; # Don't clobber adjoining text if MSVCDir is already set
|
||||
# Don't clobber adjoining text or use explicit paths if MSVCDir is already set
|
||||
VC_TOOL_PATH = "" ;
|
||||
}
|
||||
|
||||
VC_COMPILER = cl ;
|
||||
|
||||
@@ -28,6 +28,9 @@ if $(NT)
|
||||
{
|
||||
PYTHON_ROOT ?= c:/tools/python ;
|
||||
|
||||
# Reconstitute any paths split due to embedded spaces.
|
||||
PYTHON_ROOT = $(PYTHON_ROOT:J=" ") ;
|
||||
|
||||
PYTHON_LIB_PATH ?= $(PYTHON_ROOT)/libs $(PYTHON_ROOT)/PCBuild ;
|
||||
PYTHON_STDLIB_PATH ?= $(PYTHON_ROOT)/Lib ;
|
||||
|
||||
@@ -60,6 +63,7 @@ else if $(UNIX)
|
||||
{
|
||||
PYTHON_VERSION ?= 1.5 ;
|
||||
PYTHON_ROOT ?= /usr/local ;
|
||||
PYTHON_ROOT = $(PYTHON_ROOT:J=" ") ;
|
||||
PYTHON_INCLUDES ?= $(PYTHON_ROOT)/include/python$(PYTHON_VERSION) ;
|
||||
PYTHON_LIB_PATH ?= $(PYTHON_ROOT)/lib/python$(PYTHON_VERSION)/config ;
|
||||
PYTHON_STDLIB_PATH ?= $(PYTHON_ROOT)/lib/python$(PYTHON_VERSION) ;
|
||||
@@ -291,15 +295,12 @@ rule boost-python-runtest (
|
||||
|
||||
# declare the two subsidiary tests.
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) : PYTHON_TEST ;
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) : PYTHON_RUNTEST ;
|
||||
declare-local-target $(<) : $(>) : $(PYTHON_PROPERTIES) : $(4) <suppress>true : PYTHON_RUNTEST ;
|
||||
}
|
||||
|
||||
rule boost-python-test ( name : sources + : requirements * : default-BUILD * )
|
||||
{
|
||||
type-DEPENDS test : $(name) ;
|
||||
|
||||
local gSUPPRESS_FAKE_TARGETS = true ;
|
||||
extension $(name) : $(sources) : $(requirements) : $(4) ;
|
||||
extension $(name) : $(sources) : $(requirements) <suppress>true : $(4) ;
|
||||
}
|
||||
|
||||
# special rules for two new target types: PYTHON_TEST and PYTHON_RUNTEST.
|
||||
|
||||
@@ -43,14 +43,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<th valign="top">Notes<br>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>AR</code><br>
|
||||
</td>
|
||||
<td valign="top">Command for archiving object files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>AS</code><br>
|
||||
</td>
|
||||
@@ -75,14 +67,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>BINDIR</code><br>
|
||||
</td>
|
||||
<td valign="top">Directory to install binary/executable files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>CHMOD</code><br>
|
||||
</td>
|
||||
@@ -105,15 +89,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>CW</code><br>
|
||||
</td>
|
||||
<td valign="top">Location of CodeWarrior installation. This is a virtual
|
||||
location that can be overriden.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>DLLMODE</code><br>
|
||||
</td>
|
||||
@@ -238,22 +213,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LIBDIR</code><br>
|
||||
</td>
|
||||
<td valign="top">Directory to install link library files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LINKLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">? (VMS)<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LN</code><br>
|
||||
</td>
|
||||
@@ -262,22 +221,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MACHDRS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of directories of headers for MacOS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MACLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MANDIR</code><br>
|
||||
</td>
|
||||
@@ -286,22 +229,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MPWLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-MPW development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MPWNLLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-MPW with NL development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MKDIR</code><br>
|
||||
</td>
|
||||
@@ -323,23 +250,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>NOARUPDATE</code><br>
|
||||
</td>
|
||||
<td valign="top">Platform archive command does not support individual
|
||||
updates.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>OPTIM</code><br>
|
||||
</td>
|
||||
<td valign="top">Default flags for turning optimization on.<br>
|
||||
</td>
|
||||
<td valign="top">Obsolete.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>OSFULL</code><br>
|
||||
</td>
|
||||
@@ -372,14 +282,6 @@ and version.<br>
|
||||
<td valign="top">Set to empty ("") if there is no command.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RCP</code><br>
|
||||
</td>
|
||||
<td valign="top">Remote copy.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RELOCATE</code><br>
|
||||
</td>
|
||||
@@ -396,22 +298,6 @@ support placing generated object files, so we must move them.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RSH</code><br>
|
||||
</td>
|
||||
<td valign="top">Remote shell.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RUNVMS</code><br>
|
||||
</td>
|
||||
<td valign="top">? (VMS)<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SED</code><br>
|
||||
</td>
|
||||
@@ -454,22 +340,6 @@ support placing generated object files, so we must move them.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SIOUXHDRS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of directories of headers for MacOS-SIOUX development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SIOUXLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-SIOUS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SLASH</code><br>
|
||||
</td>
|
||||
@@ -531,21 +401,6 @@ a list of paths.</td>
|
||||
<td valign="top">Includes any "." as needed.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>UNDEFFLAG</code><br>
|
||||
</td>
|
||||
<td valign="top">Command flag to undefine specific symbols.<br>
|
||||
</td>
|
||||
<td valign="top">Obsolete.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>WATCOM</code><br>
|
||||
</td>
|
||||
<td valign="top">Set to the root of the Watcom installation on OS2.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>YACC</code><br>
|
||||
</td>
|
||||
@@ -584,7 +439,7 @@ generate.<br>
|
||||
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
06 May, 2002 <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
14 May, 2002 <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">
|
||||
|
||||
@@ -62,11 +62,12 @@ above covers most of it.
|
||||
where the user wants to declare a project-id.
|
||||
</blockquote>
|
||||
|
||||
<h3>Initialization</h3>
|
||||
<h3><a name="initialization">Initialization</a></h3>
|
||||
|
||||
<p>
|
||||
We check the name used to invoke Jam, and if the name is not the recognized
|
||||
Boost.Jam invocation we continue with the execution of the builtin <tt>Jambase</tt>.
|
||||
We check the name used to invoke Jam, and if the name is not the
|
||||
recognized Boost.Jam invocation ("<code>bjam</code>") we
|
||||
continue with the execution of the builtin <tt>Jambase</tt>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
2
v2/test/startup/boost-root/tools/build/boost-build.jam
Normal file
2
v2/test/startup/boost-root/tools/build/boost-build.jam
Normal file
@@ -0,0 +1,2 @@
|
||||
# The presence of this file emulates the Boost 1.27.0 release
|
||||
include $(BOOST_ROOT)/tools/build/bootstrap.jam ;
|
||||
147
variables.html
147
variables.html
@@ -43,14 +43,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<th valign="top">Notes<br>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>AR</code><br>
|
||||
</td>
|
||||
<td valign="top">Command for archiving object files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>AS</code><br>
|
||||
</td>
|
||||
@@ -75,14 +67,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>BINDIR</code><br>
|
||||
</td>
|
||||
<td valign="top">Directory to install binary/executable files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>CHMOD</code><br>
|
||||
</td>
|
||||
@@ -105,15 +89,6 @@ and don't need to be manipulated by the user. </p>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>CW</code><br>
|
||||
</td>
|
||||
<td valign="top">Location of CodeWarrior installation. This is a virtual
|
||||
location that can be overriden.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>DLLMODE</code><br>
|
||||
</td>
|
||||
@@ -238,22 +213,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LIBDIR</code><br>
|
||||
</td>
|
||||
<td valign="top">Directory to install link library files.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LINKLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">? (VMS)<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>LN</code><br>
|
||||
</td>
|
||||
@@ -262,22 +221,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MACHDRS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of directories of headers for MacOS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MACLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MANDIR</code><br>
|
||||
</td>
|
||||
@@ -286,22 +229,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MPWLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-MPW development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MPWNLLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-MPW with NL development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>MKDIR</code><br>
|
||||
</td>
|
||||
@@ -323,23 +250,6 @@ generate.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>NOARUPDATE</code><br>
|
||||
</td>
|
||||
<td valign="top">Platform archive command does not support individual
|
||||
updates.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>OPTIM</code><br>
|
||||
</td>
|
||||
<td valign="top">Default flags for turning optimization on.<br>
|
||||
</td>
|
||||
<td valign="top">Obsolete.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>OSFULL</code><br>
|
||||
</td>
|
||||
@@ -372,14 +282,6 @@ and version.<br>
|
||||
<td valign="top">Set to empty ("") if there is no command.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RCP</code><br>
|
||||
</td>
|
||||
<td valign="top">Remote copy.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RELOCATE</code><br>
|
||||
</td>
|
||||
@@ -396,22 +298,6 @@ support placing generated object files, so we must move them.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RSH</code><br>
|
||||
</td>
|
||||
<td valign="top">Remote shell.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>RUNVMS</code><br>
|
||||
</td>
|
||||
<td valign="top">? (VMS)<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SED</code><br>
|
||||
</td>
|
||||
@@ -454,22 +340,6 @@ support placing generated object files, so we must move them.<br>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SIOUXHDRS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of directories of headers for MacOS-SIOUX development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SIOUXLIBS</code><br>
|
||||
</td>
|
||||
<td valign="top">List of link libraries for MacOS-SIOUS development.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>SLASH</code><br>
|
||||
</td>
|
||||
@@ -531,21 +401,6 @@ a list of paths.</td>
|
||||
<td valign="top">Includes any "." as needed.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>UNDEFFLAG</code><br>
|
||||
</td>
|
||||
<td valign="top">Command flag to undefine specific symbols.<br>
|
||||
</td>
|
||||
<td valign="top">Obsolete.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>WATCOM</code><br>
|
||||
</td>
|
||||
<td valign="top">Set to the root of the Watcom installation on OS2.<br>
|
||||
</td>
|
||||
<td valign="top"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><code>YACC</code><br>
|
||||
</td>
|
||||
@@ -584,7 +439,7 @@ generate.<br>
|
||||
|
||||
<hr>
|
||||
<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
|
||||
06 May, 2002 <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
14 May, 2002 <!--webbot bot="Timestamp" endspan i-checksum="39359" -->
|
||||
</p>
|
||||
|
||||
<p><i>© Copyright <a href="../../people/dave_abrahams.htm">
|
||||
|
||||
Reference in New Issue
Block a user