2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-15 00:52:16 +00:00

- Moved <suppress> code to support it for all target types.

- Added <linkflags> feature.
- Added <sysinclude> and <linkflags> to all toolsets.
- Documented existing changes to "variant" inheritance.


[SVN r12408]
This commit is contained in:
Rene Rivera
2002-01-21 22:25:03 +00:00
parent 7db48a4950
commit c19407c604
28 changed files with 138 additions and 40 deletions

View File

@@ -1051,6 +1051,10 @@ rule declare-local-target
"$(gTARGET_TYPE($(target-id)))" "$(5)" ;
}
# Supress the regular build of this target
local suppress = [ get-values <suppress> : $(4) ] ;
local gSUPPRESS_FAKE_TARGETS = $(suppress[1]) ;
# Just gather information if we are including a library's Jamfile for a
# dependent target. Don't generate build instructions here.
if ! $(gIN_LIB_INCLUDE)
@@ -1468,17 +1472,7 @@ gGENERATOR_FUNCTION(LIB) = library-file ;
# Declare a statically-linked library target.
rule lib
{
local suppress = [ get-values <suppress> : $(4) ] ;
if $(suppress)
{
local gSUPPRESS_FAKE_TARGETS = $(suppress[1]) ;
declare-local-target $(<) : $(2) : $(3) :
[ difference $(4) : [ get-properties <suppress> : $(4) ] ] : LIB ;
}
else
{
declare-local-target $(<) : $(2) : $(3) : $(4) : LIB ;
}
declare-local-target $(<) : $(2) : $(3) : $(4) : LIB ;
}
# unit-test target : sources : requirements : local-build

View File

@@ -62,6 +62,8 @@ flags borland C++FLAGS <cxxflags> ;
flags borland DEFINES <define> ;
flags borland UNDEFS <undef> ;
flags borland HDRS <include> ;
flags borland STDHDRS <sysinclude> ;
flags borland LINKFLAGS <linkflags> ;
flags borland STDHDRS : $(BCCROOT)$(SLASH)include ;
flags borland STDLIBPATH : $(BCCROOT)$(SLASH)lib ;

View File

@@ -809,7 +809,22 @@ project-root ;
</pre>
</blockquote>
When multiple values are specified, it causes <i>all</i> the implied
configurations to be built by default.
configurations to be built by default. It is also possible to prevent
any default builds from occuring on this target by using <code>&lt;suppress&gt;true</code>
. This suppresses any local targets, either implicit or explicit, from building.
But, this does not prevent implied targets as required by a dependency by
another target to this one from being built. This is usefull, for example,
for defining a set of libraries generically and having them built only when
another target like an exe is built. Such use might look like:
<blockquote>
<pre>
lib basic : basic.cpp : : &lt;suppress&gt;true ;<br><br>exe test : test.cpp &lt;lib&gt;basic ;<br>
</pre>
</blockquote>
With that the <tt>basic</tt> library will only be built when the <tt>test</tt>
executable is built, and only the variations required by the executable
will be built.<br>
</li>
</ul>
<p><b>NOTE:</b> for simple features in both <i><a href=
@@ -838,6 +853,7 @@ exe foo : foo.cpp src/bar.cpp &lt;lib&gt;../bazlib/baz
&lt;gcc&gt;&lt;*&gt;&lt;optimization&gt;off
&lt;gcc&gt;&lt;release&gt;&lt;optimization&gt;space
&lt;threading&gt;multi
&lt;sysinclude&gt;/usr/local/foolib/include
## <a href="#default_build">default-BUILD</a> ##
: debug release
@@ -866,6 +882,8 @@ exe foo : foo.cpp src/bar.cpp &lt;lib&gt;../bazlib/baz
<li>...GCC <tt>release</tt> builds require optimization for space.
<li>Requires multithread support on compilers where it's relevant.
<li>Adds <tt>/usr/local/foolib/include</tt> to the <tt>#include &lt;*&gt;</tt> path
</ul>
<p>The <a href="#default_build">default-BUILD</a> section:
@@ -896,8 +914,22 @@ variant <i>name</i> : [&lt;<i>toolset-name</i>&gt;]&lt;<i>feature</i>&gt;value..
</blockquote>
The <tt>variant</tt> rule specifies the list of properties comprising a
variant. Properties may be optionally qualified with a toolset name, which
specifies that the property applies only to that toolset. Examples can be
found in <a href="features.jam">features.jam</a>.
specifies that the property applies only to that toolset. One or
more parent variants may be specified to inherit the properties  from those
parent(s). For inherited properties precedence is given on a left to right
order, making the immediate properties override those in the parent(s). This
can be used to great effect for describing global properties that are shared
amongst various variants, and therefore targets. For example:
<blockquote>
<pre>
variant my-globals : &lt;rtti&gt;off ;
variant my-debug : my-globals debug ;
variant mym-release : my-globals releaase ;
</pre>
</blockquote>
More examples can be found in <a href="features.jam">features.jam</a>.
<h3><a name="toolset_description">Toolset Description Files</a></h3>

View File

@@ -43,6 +43,8 @@ flags como C++FLAGS <cxxflags> ;
flags como DEFINES <define> ;
flags como UNDEFS <undef> ;
flags como HDRS <include> ;
flags como STDHDRS <sysinclude> ;
flags como LINKFLAGS <linkflags> ;
flags como STDHDRS : $(COMO_INCLUDE_PATH) ;
flags como STDLIBPATH : $(COMO_STDLIB_PATH)$(SLASH) ;

View File

@@ -25,6 +25,7 @@ feature exception-handling : on off ;
feature rtti : on off ;
free-feature cflags ;
free-feature linkflags ;
free-feature cxxflags ;
free-feature define ; # <define>PYTHON=foo
free-feature undef ; # <undef>PYTHON=foo

View File

@@ -18,14 +18,17 @@ else
STDHDRS = ;
STDLIBPATH = ;
flags gcc STDHDRS <sysinclude> ;
flags gcc-stlport STDHDRS <sysinclude> ;
flags gcc-stlport STDHDRS : $(STLPORT_ROOT)$(SLASH)stlport $(GCC_INCLUDE_DIRECTORY) ;
flags gcc-stlport STDLIBPATH : $(STLPORT_ROOT)$(SLASH)lib $(GCC_STDLIB_DIRECTORY) ;
STLPORT_INCLUDE_DIRECTORY ?= stlport ;
STLPORT_LIB_DIRECTORY ?= lib ;
flags gcc-stlport STDHDRS : $(STLPORT_ROOT)$(SLASH)$(STLPORT_INCLUDE_DIRECTORY) $(GCC_INCLUDE_DIRECTORY) ;
flags gcc-stlport STDLIBPATH : $(STLPORT_ROOT)$(SLASH)$(STLPORT_LIB_DIRECTORY) $(GCC_STDLIB_DIRECTORY) ;
flags gcc-stlport DEFINES <runtime-build>debug : _STLP_DEBUG ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>debug : libstlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>release : libstlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>debug : stlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>release : stlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport FINDLIBS <runtime-link>dynamic/<runtime-build>debug : stlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>dynamic/<runtime-build>release : stlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport CFLAGS <runtime-link>dynamic : -D_STLP_USE_DYNAMIC_LIB ;

View File

@@ -5,7 +5,7 @@
# to its suitability for any purpose.
# compute directories for invoking GCC
local SPACE = " " ;
SPACE ?= " " ;
GCC_BIN_DIRECTORY ?= $(GCC_ROOT_DIRECTORY)$(SLASH)bin$(SLASH) ;
GCC_BIN_DIRECTORY ?= "" ; # Don't clobber tool names if GCC_ROOT_DIRECTORY not set
GCC_INCLUDE_DIRECTORY ?= $(GCC_ROOT_DIRECTORY)$(SLASH)include ;
@@ -43,6 +43,7 @@ flags gcc DEFINES <define> ;
flags gcc UNDEFS <undef> ;
flags gcc HDRS <include> ;
flags gcc STDHDRS <sysinclude> ;
flags gcc LINKFLAGS <linkflags> ;
flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ;
flags gcc STDLIBPATH : $(GCC_STDLIB_DIRECTORY) ;

View File

@@ -65,6 +65,9 @@ flags intel-linux LIBPATH <library-path> ;
flags intel-linux NEEDLIBS <library-file> ;
flags intel-linux FINDLIBS <find-library> ;
flags intel-linux STDHDRS <sysinclude> ;
flags intel-linux LINKFLAGS <linkflags> ;
#### Cc ####
rule Cc-action

View File

@@ -26,6 +26,8 @@ flags kcc C++FLAGS <cxxflags> ;
flags kcc DEFINES <define> ;
flags kcc UNDEFS <undef> ;
flags kcc HDRS <include> ;
flags kcc STDHDRS <sysinclude> ;
flags kcc LINKFLAGS <linkflags> ;
flags kcc LIBPATH <library-path> ;
flags kcc NEEDLIBS <library-file> ;

View File

@@ -25,6 +25,7 @@ flags metrowerks DEFINES <define> ;
flags metrowerks UNDEFS <undef> ;
flags metrowerks HDRS <include> ;
flags metrowerks STDHDRS <sysinclude> ;
flags metrowerks LINKFLAGS <linkflags> ;
flags metrowerks CFLAGS <debug-symbols>on : -g ;
flags metrowerks LINKFLAGS <debug-symbols>on : -g ;

View File

@@ -41,6 +41,8 @@ flags mipspro C++FLAGS <cxxflags> ;
flags mipspro LIBPATH <library-path> ;
flags mipspro NEEDLIBS <library-file> ;
flags mipspro FINDLIBS <find-library> ;
flags mipspro STDHDRS <sysinclude> ;
flags mipspro LINKFLAGS <linkflags> ;
#### Link (for C++) ####

View File

@@ -51,6 +51,8 @@ flags msvc C++FLAGS <cxxflags> ;
flags msvc DEFINES <define> ;
flags msvc UNDEFS <undef> ;
flags msvc HDRS <include> ;
flags msvc STDHDRS <sysinclude> ;
flags msvc LINKFLAGS <linkflags> ;
flags msvc STDHDRS : $(MSVCDir)$(SLASH)include ;
flags msvc STDLIBPATH : $(MSVCDir)$(SLASH)lib ;

View File

@@ -37,6 +37,8 @@ flags tru64cxx C++FLAGS <cxxflags> ;
flags tru64cxx DEFINES <define> ;
flags tru64cxx UNDEFS <undef> ;
flags tru64cxx HDRS <include> ;
flags tru64cxx STDHDRS <sysinclude> ;
flags tru64cxx LINKFLAGS <linkflags> ;
# Vincenzo
BOOST_COMPATIBILITY ?= $(BOOST_ROOT)$(SLASH)boost$(SLASH)compatibility$(SLASH)cpp_c_headers ;

View File

@@ -1051,6 +1051,10 @@ rule declare-local-target
"$(gTARGET_TYPE($(target-id)))" "$(5)" ;
}
# Supress the regular build of this target
local suppress = [ get-values <suppress> : $(4) ] ;
local gSUPPRESS_FAKE_TARGETS = $(suppress[1]) ;
# Just gather information if we are including a library's Jamfile for a
# dependent target. Don't generate build instructions here.
if ! $(gIN_LIB_INCLUDE)
@@ -1468,17 +1472,7 @@ gGENERATOR_FUNCTION(LIB) = library-file ;
# Declare a statically-linked library target.
rule lib
{
local suppress = [ get-values <suppress> : $(4) ] ;
if $(suppress)
{
local gSUPPRESS_FAKE_TARGETS = $(suppress[1]) ;
declare-local-target $(<) : $(2) : $(3) :
[ difference $(4) : [ get-properties <suppress> : $(4) ] ] : LIB ;
}
else
{
declare-local-target $(<) : $(2) : $(3) : $(4) : LIB ;
}
declare-local-target $(<) : $(2) : $(3) : $(4) : LIB ;
}
# unit-test target : sources : requirements : local-build

View File

@@ -62,6 +62,8 @@ flags borland C++FLAGS <cxxflags> ;
flags borland DEFINES <define> ;
flags borland UNDEFS <undef> ;
flags borland HDRS <include> ;
flags borland STDHDRS <sysinclude> ;
flags borland LINKFLAGS <linkflags> ;
flags borland STDHDRS : $(BCCROOT)$(SLASH)include ;
flags borland STDLIBPATH : $(BCCROOT)$(SLASH)lib ;

View File

@@ -809,7 +809,22 @@ project-root ;
</pre>
</blockquote>
When multiple values are specified, it causes <i>all</i> the implied
configurations to be built by default.
configurations to be built by default. It is also possible to prevent
any default builds from occuring on this target by using <code>&lt;suppress&gt;true</code>
. This suppresses any local targets, either implicit or explicit, from building.
But, this does not prevent implied targets as required by a dependency by
another target to this one from being built. This is usefull, for example,
for defining a set of libraries generically and having them built only when
another target like an exe is built. Such use might look like:
<blockquote>
<pre>
lib basic : basic.cpp : : &lt;suppress&gt;true ;<br><br>exe test : test.cpp &lt;lib&gt;basic ;<br>
</pre>
</blockquote>
With that the <tt>basic</tt> library will only be built when the <tt>test</tt>
executable is built, and only the variations required by the executable
will be built.<br>
</li>
</ul>
<p><b>NOTE:</b> for simple features in both <i><a href=
@@ -838,6 +853,7 @@ exe foo : foo.cpp src/bar.cpp &lt;lib&gt;../bazlib/baz
&lt;gcc&gt;&lt;*&gt;&lt;optimization&gt;off
&lt;gcc&gt;&lt;release&gt;&lt;optimization&gt;space
&lt;threading&gt;multi
&lt;sysinclude&gt;/usr/local/foolib/include
## <a href="#default_build">default-BUILD</a> ##
: debug release
@@ -866,6 +882,8 @@ exe foo : foo.cpp src/bar.cpp &lt;lib&gt;../bazlib/baz
<li>...GCC <tt>release</tt> builds require optimization for space.
<li>Requires multithread support on compilers where it's relevant.
<li>Adds <tt>/usr/local/foolib/include</tt> to the <tt>#include &lt;*&gt;</tt> path
</ul>
<p>The <a href="#default_build">default-BUILD</a> section:
@@ -896,8 +914,22 @@ variant <i>name</i> : [&lt;<i>toolset-name</i>&gt;]&lt;<i>feature</i>&gt;value..
</blockquote>
The <tt>variant</tt> rule specifies the list of properties comprising a
variant. Properties may be optionally qualified with a toolset name, which
specifies that the property applies only to that toolset. Examples can be
found in <a href="features.jam">features.jam</a>.
specifies that the property applies only to that toolset. One or
more parent variants may be specified to inherit the properties  from those
parent(s). For inherited properties precedence is given on a left to right
order, making the immediate properties override those in the parent(s). This
can be used to great effect for describing global properties that are shared
amongst various variants, and therefore targets. For example:
<blockquote>
<pre>
variant my-globals : &lt;rtti&gt;off ;
variant my-debug : my-globals debug ;
variant mym-release : my-globals releaase ;
</pre>
</blockquote>
More examples can be found in <a href="features.jam">features.jam</a>.
<h3><a name="toolset_description">Toolset Description Files</a></h3>

View File

@@ -43,6 +43,8 @@ flags como C++FLAGS <cxxflags> ;
flags como DEFINES <define> ;
flags como UNDEFS <undef> ;
flags como HDRS <include> ;
flags como STDHDRS <sysinclude> ;
flags como LINKFLAGS <linkflags> ;
flags como STDHDRS : $(COMO_INCLUDE_PATH) ;
flags como STDLIBPATH : $(COMO_STDLIB_PATH)$(SLASH) ;

View File

@@ -25,6 +25,7 @@ feature exception-handling : on off ;
feature rtti : on off ;
free-feature cflags ;
free-feature linkflags ;
free-feature cxxflags ;
free-feature define ; # <define>PYTHON=foo
free-feature undef ; # <undef>PYTHON=foo

View File

@@ -18,14 +18,17 @@ else
STDHDRS = ;
STDLIBPATH = ;
flags gcc STDHDRS <sysinclude> ;
flags gcc-stlport STDHDRS <sysinclude> ;
flags gcc-stlport STDHDRS : $(STLPORT_ROOT)$(SLASH)stlport $(GCC_INCLUDE_DIRECTORY) ;
flags gcc-stlport STDLIBPATH : $(STLPORT_ROOT)$(SLASH)lib $(GCC_STDLIB_DIRECTORY) ;
STLPORT_INCLUDE_DIRECTORY ?= stlport ;
STLPORT_LIB_DIRECTORY ?= lib ;
flags gcc-stlport STDHDRS : $(STLPORT_ROOT)$(SLASH)$(STLPORT_INCLUDE_DIRECTORY) $(GCC_INCLUDE_DIRECTORY) ;
flags gcc-stlport STDLIBPATH : $(STLPORT_ROOT)$(SLASH)$(STLPORT_LIB_DIRECTORY) $(GCC_STDLIB_DIRECTORY) ;
flags gcc-stlport DEFINES <runtime-build>debug : _STLP_DEBUG ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>debug : libstlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>release : libstlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>debug : stlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>static/<runtime-build>release : stlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport FINDLIBS <runtime-link>dynamic/<runtime-build>debug : stlport_$(GCC_STLPORT_LIB_ID)_stldebug ;
flags gcc-stlport FINDLIBS <runtime-link>dynamic/<runtime-build>release : stlport_$(GCC_STLPORT_LIB_ID) ;
flags gcc-stlport CFLAGS <runtime-link>dynamic : -D_STLP_USE_DYNAMIC_LIB ;

View File

@@ -5,7 +5,7 @@
# to its suitability for any purpose.
# compute directories for invoking GCC
local SPACE = " " ;
SPACE ?= " " ;
GCC_BIN_DIRECTORY ?= $(GCC_ROOT_DIRECTORY)$(SLASH)bin$(SLASH) ;
GCC_BIN_DIRECTORY ?= "" ; # Don't clobber tool names if GCC_ROOT_DIRECTORY not set
GCC_INCLUDE_DIRECTORY ?= $(GCC_ROOT_DIRECTORY)$(SLASH)include ;
@@ -43,6 +43,7 @@ flags gcc DEFINES <define> ;
flags gcc UNDEFS <undef> ;
flags gcc HDRS <include> ;
flags gcc STDHDRS <sysinclude> ;
flags gcc LINKFLAGS <linkflags> ;
flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ;
flags gcc STDLIBPATH : $(GCC_STDLIB_DIRECTORY) ;

View File

@@ -65,6 +65,9 @@ flags intel-linux LIBPATH <library-path> ;
flags intel-linux NEEDLIBS <library-file> ;
flags intel-linux FINDLIBS <find-library> ;
flags intel-linux STDHDRS <sysinclude> ;
flags intel-linux LINKFLAGS <linkflags> ;
#### Cc ####
rule Cc-action

View File

@@ -26,6 +26,8 @@ flags kcc C++FLAGS <cxxflags> ;
flags kcc DEFINES <define> ;
flags kcc UNDEFS <undef> ;
flags kcc HDRS <include> ;
flags kcc STDHDRS <sysinclude> ;
flags kcc LINKFLAGS <linkflags> ;
flags kcc LIBPATH <library-path> ;
flags kcc NEEDLIBS <library-file> ;

View File

@@ -25,6 +25,7 @@ flags metrowerks DEFINES <define> ;
flags metrowerks UNDEFS <undef> ;
flags metrowerks HDRS <include> ;
flags metrowerks STDHDRS <sysinclude> ;
flags metrowerks LINKFLAGS <linkflags> ;
flags metrowerks CFLAGS <debug-symbols>on : -g ;
flags metrowerks LINKFLAGS <debug-symbols>on : -g ;

View File

@@ -41,6 +41,8 @@ flags mipspro C++FLAGS <cxxflags> ;
flags mipspro LIBPATH <library-path> ;
flags mipspro NEEDLIBS <library-file> ;
flags mipspro FINDLIBS <find-library> ;
flags mipspro STDHDRS <sysinclude> ;
flags mipspro LINKFLAGS <linkflags> ;
#### Link (for C++) ####

View File

@@ -51,6 +51,8 @@ flags msvc C++FLAGS <cxxflags> ;
flags msvc DEFINES <define> ;
flags msvc UNDEFS <undef> ;
flags msvc HDRS <include> ;
flags msvc STDHDRS <sysinclude> ;
flags msvc LINKFLAGS <linkflags> ;
flags msvc STDHDRS : $(MSVCDir)$(SLASH)include ;
flags msvc STDLIBPATH : $(MSVCDir)$(SLASH)lib ;

View File

@@ -37,6 +37,8 @@ flags tru64cxx C++FLAGS <cxxflags> ;
flags tru64cxx DEFINES <define> ;
flags tru64cxx UNDEFS <undef> ;
flags tru64cxx HDRS <include> ;
flags tru64cxx STDHDRS <sysinclude> ;
flags tru64cxx LINKFLAGS <linkflags> ;
# Vincenzo
BOOST_COMPATIBILITY ?= $(BOOST_ROOT)$(SLASH)boost$(SLASH)compatibility$(SLASH)cpp_c_headers ;

View File

@@ -31,6 +31,8 @@ flags xlc C++FLAGS <cxxflags> ;
flags xlc DEFINES <define> ;
flags xlc UNDEFS <undef> ;
flags xlc HDRS <include> ;
flags xlc STDHDRS <sysinclude> ;
flags xlc LINKFLAGS <linkflags> ;
#### Link ####

View File

@@ -31,6 +31,8 @@ flags xlc C++FLAGS <cxxflags> ;
flags xlc DEFINES <define> ;
flags xlc UNDEFS <undef> ;
flags xlc HDRS <include> ;
flags xlc STDHDRS <sysinclude> ;
flags xlc LINKFLAGS <linkflags> ;
#### Link ####