/usr/share/boost-build/src/tools/features
NameSizeModeActions
address-model-feature.jam6950644editdlrm
allow-feature.jam5120644editdlrm
architecture-feature.jam12220644editdlrm
archiveflags-feature.jam4470644editdlrm
asmflags-feature.jam4000644editdlrm
build-feature.jam6260644editdlrm
cflags-feature.jam6910644editdlrm
conditional-feature.jam7280644editdlrm
coverage-feature.jam6090644editdlrm
cxx-template-depth-feature.jam14270644editdlrm
cxxabi-feature.jam4070644editdlrm
cxxflags-feature.jam3740644editdlrm
cxxstd-feature.jam16670644editdlrm
debug-feature.jam9360644editdlrm
define-feature.jam7080644editdlrm
dependency-feature.jam20350644editdlrm
dll-feature.jam22180644editdlrm
exception-feature.jam10090644editdlrm
fflags-feature.jam4200644editdlrm
file-feature.jam4820644editdlrm
find-lib-feature.jam10730644editdlrm
flags-feature.jam4920644editdlrm
force-include-feature.jam5720644editdlrm
include-feature.jam4340644editdlrm
instruction-set-feature.jam24940644editdlrm
internal-feature.jam4400644editdlrm
library-feature.jam7080644editdlrm
link-feature.jam4060644editdlrm
linkflags-feature.jam3770644editdlrm
local-visibility-feature.jam9840644editdlrm
location-feature.jam4530644editdlrm
location-prefix-feature.jam5050644editdlrm
lto-feature.jam13090644editdlrm
name-feature.jam6320644editdlrm
objcflags-feature.jam6570644editdlrm
optimization-feature.jam9390644editdlrm
os-feature.jam36870644editdlrm
relevant-feature.jam19920644editdlrm
rtti-feature.jam3950644editdlrm
runtime-feature.jam12900644editdlrm
sanitizers-feature.jam17160644editdlrm
search-feature.jam5160644editdlrm
source-feature.jam7530644editdlrm
stdlib-feature.jam9760644editdlrm
strip-feature.jam6160644editdlrm
tag-feature.jam11740644editdlrm
threadapi-feature.jam11620644editdlrm
threading-feature.jam7750644editdlrm
toolset-feature.jam5280644editdlrm
translate-path-feature.jam9440644editdlrm
user-interface-feature.jam9520644editdlrm
variant-feature.jam33000644editdlrm
version-feature.jam4800644editdlrm
visibility-feature.jam19870644editdlrm
warnings-feature.jam10340644editdlrm
__init_features__.jam7430644editdlrm
Edit: /usr/share/boost-build/src/tools/features/variant-feature.jam (3300B)
# Copyright 2017 Rene Rivera # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) import feature ; import errors ; import property ; #| tag::doc[] [[bbv2.builtin.features.variant]]`variant`:: *Allowed values:* `debug`, `release`, `profile`. + A feature combining several low-level features, making it easy to request common build configurations. + The value `debug` expands to + ---- off on off on ---- + The value `release` expands to + ---- speed off full off ---- + The value `profile` expands to the same as `release`, plus: + ---- on on ---- + Users can define their own build variants using the `variant` rule from the `common` module. + NOTE: Runtime debugging is on in debug builds to suit the expectations of people used to various IDEs. |# # end::doc[] feature.feature variant : : implicit composite propagated symmetric ; # Declares a new variant. # # First determines explicit properties for this variant, by refining parents' # explicit properties with the passed explicit properties. The result is # remembered and will be used if this variant is used as parent. # # Second, determines the full property set for this variant by adding to the # explicit properties default values for all missing non-symmetric properties. # # Lastly, makes appropriate value of 'variant' property expand to the full # property set. # rule variant ( name # Name of the variant : parents-or-properties * # Specifies parent variants, if # 'explicit-properties' are given, and # explicit-properties or parents otherwise. : explicit-properties * # Explicit properties. ) { local parents ; if ! $(explicit-properties) { if $(parents-or-properties[1]:G) { explicit-properties = $(parents-or-properties) ; } else { parents = $(parents-or-properties) ; } } else { parents = $(parents-or-properties) ; } # The problem is that we have to check for conflicts between base variants. if $(parents[2]) { errors.error "multiple base variants are not yet supported" ; } local inherited ; # Add explicitly specified properties for parents. for local p in $(parents) { # TODO: This check may be made stricter. if ! [ feature.is-implicit-value $(p) ] { errors.error "Invalid base variant" $(p) ; } inherited += $(.explicit-properties.$(p)) ; } property.validate $(explicit-properties) ; explicit-properties = [ property.refine $(inherited) : $(explicit-properties) ] ; # Record explicitly specified properties for this variant. We do this after # inheriting parents' properties so they affect other variants derived from # this one. .explicit-properties.$(name) = $(explicit-properties) ; feature.extend variant : $(name) ; feature.compose $(name) : $(explicit-properties) ; } IMPORT $(__name__) : variant : : variant ;