Add --build-type option, to limit the number of compiled variants. (merge from trunk)

[SVN r43860]
This commit is contained in:
Rene Rivera 2008-03-25 20:47:24 +00:00
parent fa99259d0a
commit a189ce90ac

67
Jamroot
View file

@ -1,6 +1,6 @@
# Copyright Vladimir Prus 2002-2006.
# Copyright Dave Abrahams 2005-2006.
# Copyright Rene Rivera 2005-2006.
# Copyright Rene Rivera 2005-2007.
# Copyright Douglas Gregor 2005.
#
# Distributed under the Boost Software License, Version 1.0.
@ -39,7 +39,21 @@
#
# Other Options:
#
# --builddir=DIR Build in this location instead of building
# --build-type=<type> Build the specified pre-defined set of variations
# of the libraries. Note, that which variants get
# built depends on what each library supports.
#
# minimal (default) - Builds the single
# "release" version of the libraries. This
# release corresponds to specifying:
# "release <threading>multi <link>shared
# <runtime-link>shared" as the Boost.Build
# variant to build.
#
# complete - Attempts to build all possible
# variations.
#
# --build-dir=DIR Build in this location instead of building
# within the distribution tree. Recommended!
#
# --toolset=toolset Indicates the toolset to build with.
@ -109,25 +123,38 @@ if $(version-tag[3]) = 0
constant BOOST_VERSION_TAG : $(version-tag:J="_") ;
local default-build ;
if $(__file__:D) = ""
# Option to choose how many variants to build. The default is "minimal",
# which builds only the "release <threading>multi <link>shared" variant.
local build-type = [ MATCH "^--build-type=(.*)" : [ modules.peek : ARGV ] ] ;
build-type ?= minimal ;
if ! ( $(build-type) in minimal complete )
{
default-build =
debug release
<threading>single <threading>multi
<link>shared <link>static
;
if [ os.name ] = NT
{
default-build += <runtime-link>shared <runtime-link>static ;
}
build-type = minimal ;
}
else
# Specify the build variants keyed on the build-type.
local default-build,minimal =
release
<threading>multi
<link>shared
<runtime-link>shared
;
local default-build,complete =
debug release
<threading>single <threading>multi
<link>shared <link>static
<runtime-link>shared <runtime-link>static
;
# Set the default build.
local default-build = $(default-build,$(build-type)) ;
# We only use the default build when building at the root to
# avoid having it impact the default regression testing of "debug".
# TODO: Consider having a "testing" build type instead of this check.
if $(__file__:D) != ""
{
default-build =
debug
;
default-build = debug ;
}
@ -293,8 +320,10 @@ rule tag ( name : type ? : property-set )
# On OSX, version suffix is not needed -- the linker expets
# libFoo.1.2.3.dylib format.
# AIX linkers don't accept version suffixes either.
# Pgi compilers can't accept library with version suffix
if $(type) = SHARED_LIB &&
! ( [ $(property-set).get <target-os> ] in windows cygwin darwin aix )
( ! ( [ $(property-set).get <target-os> ] in windows cygwin darwin aix ) &&
! ( [ $(property-set).get <toolset> ] in pgi ) )
{
result = $(result).$(BOOST_VERSION) ;
}