diff --git a/src/build/targets.jam b/src/build/targets.jam index 8ade6e72a..976422c82 100644 --- a/src/build/targets.jam +++ b/src/build/targets.jam @@ -65,15 +65,14 @@ rule abstract-target ( name # name of the target in Jamfile } # Takes properties in split form ("foo bar"). - # Generates virtual targets for this abstract target which match - # 'properties' as closely as possible. If 'properties' are not specified, - # default values are used. If it not possible to build anything because - # of some problem returns a list with "@error" as the first element - # and explanation in all others. (CONSIDER: need some utilities for - # this method of error reporting? 'is-error'?) + # Generates virtual targets for this abstract target, using the specified properties, + # unless a different value of some feature is required by the target. The properties + # on returned virtual targets should be link-compatible with the requested ones. + # On success, returns a list of virtual targets. If it not possible to build anything, + # issues a warning and returns empty list, or issues an error. # - # If 'properties' are empty or consist of lonely xxx, - # uses default set(s) of properties. + # If 'properties' are empty, performs default build of this target, in a way specific + # to derived class. rule generate ( properties * ) { errors.error "method should be defined in derived classes" ; diff --git a/src/tools/builtin.jam b/src/tools/builtin.jam index 4568daa8c..78df20185 100644 --- a/src/tools/builtin.jam +++ b/src/tools/builtin.jam @@ -15,7 +15,7 @@ import regex ; import virtual-target ; import os ; -feature toolset : gcc : optional implicit propagated ; +feature toolset : gcc : implicit propagated ; feature shared : false true : propagated ; feature optimization : off on : propagated ; feature threading : single multi : link-incompatible propagated ; @@ -76,10 +76,14 @@ rule variant ( name : parents-or-properties * : tool-properties * ) tool-properties = [ feature.add-defaults $(tool-properties) ] ; # We should remove default value of 'variant'. + # Also, remove default value of 'toolset'. CONSIDER: this move is questionable, + # if we have default toolset, then why eliminate it? We'll have simple target + # paths of "bin/debug" for default toolset. + # TODO: we need to eliminate all 'symmetric' features. local tool-properties2 ; for local p in $(tool-properties) { - if $(p:G) != + if $(p:G) != && $(p:G) != { tool-properties2 += $(p) ; }