2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-17 01:32:12 +00:00

Add a (terrible verbose, but hopefully clear) commentary.

[SVN r18423]
This commit is contained in:
Vladimir Prus
2003-05-16 12:49:59 +00:00
parent cdd7a5cc87
commit a7d40e46c4
2 changed files with 60 additions and 0 deletions

View File

@@ -221,6 +221,36 @@ local rule convert-command-line-element ( e )
# Class which is responsible for adjusting properties for targets
# which are both directly requested, and requested from other main
# targets.
#
# Consider:
#
# exe a : a.cpp b ;
# lib b : b.cpp ;
#
# and build request is "bjam define=MACRO". When "b" is requested by "a", the
# build request does not include "MACRO", because <define> is not propagated.
# But it would seem strange that "b" is not compiled with "define=MACRO". The
# property adjuster is the entity that adds free properties from direct build
# request when targets are requested from other main targets, like "b".
# We've discussed this in past and agreed that as long as "b" is
# directly requested, "define=MACRO" should be in build properties.
#
# The rule implemented in property adjuster is:
# if main target is requested from another main target and base properties are
# subset of base properties of some directy requested property set, then free
# properties from that properties set are added. I.e. if build request is
#
# debug define=MACROS
#
# then "b" will be compiled with the macros only if it's compiled in debug
# variant. For example
#
# exe a : a.cpp b/<variant>release ;
# lib b : b.cpp ;
#
# will cause a release version of 'b' to be compiled and linked into 'a'. The
# release version will be compiled without "define=MACROS".
rule directly-requested-properties-adjuster
{
import property-set ;

View File

@@ -221,6 +221,36 @@ local rule convert-command-line-element ( e )
# Class which is responsible for adjusting properties for targets
# which are both directly requested, and requested from other main
# targets.
#
# Consider:
#
# exe a : a.cpp b ;
# lib b : b.cpp ;
#
# and build request is "bjam define=MACRO". When "b" is requested by "a", the
# build request does not include "MACRO", because <define> is not propagated.
# But it would seem strange that "b" is not compiled with "define=MACRO". The
# property adjuster is the entity that adds free properties from direct build
# request when targets are requested from other main targets, like "b".
# We've discussed this in past and agreed that as long as "b" is
# directly requested, "define=MACRO" should be in build properties.
#
# The rule implemented in property adjuster is:
# if main target is requested from another main target and base properties are
# subset of base properties of some directy requested property set, then free
# properties from that properties set are added. I.e. if build request is
#
# debug define=MACROS
#
# then "b" will be compiled with the macros only if it's compiled in debug
# variant. For example
#
# exe a : a.cpp b/<variant>release ;
# lib b : b.cpp ;
#
# will cause a release version of 'b' to be compiled and linked into 'a'. The
# release version will be compiled without "define=MACROS".
rule directly-requested-properties-adjuster
{
import property-set ;