diff --git a/src/build/targets.jam b/src/build/targets.jam index c8fb4e3ce..3bd39a30e 100644 --- a/src/build/targets.jam +++ b/src/build/targets.jam @@ -1593,8 +1593,6 @@ rule main-target-requirements ( : project # Project where the main target is to be declared. ) { - specification += [ toolset.requirements ] ; - local requirements = [ property-set.refine-from-user-input [ $(project).get requirements ] : $(specification) : [ $(project).project-module ] : [ $(project).get location ] ] ; @@ -1603,7 +1601,7 @@ rule main-target-requirements ( import errors ; errors.error "Conflicting requirements for target:" $(requirements) ; } - return $(requirements) ; + return [ $(requirements).add [ toolset.requirements ] ] ; } diff --git a/src/build/toolset.jam b/src/build/toolset.jam index f909a5e2d..6e5b98049 100644 --- a/src/build/toolset.jam +++ b/src/build/toolset.jam @@ -539,6 +539,7 @@ rule inherit-rules ( toolset : base : localize ? ) IMPORT $(toolset) : $(rules) : : $(toolset).$(rules) ; } +.requirements = [ property-set.empty ] ; # Return the list of global 'toolset requirements'. Those requirements will be # automatically added to the requirements of any main target. @@ -558,7 +559,10 @@ rule add-requirements ( requirements * ) { if ! $(.ignore-requirements) { - .requirements += $(requirements) ; + requirements = [ property.translate-indirect $(specification) : [ CALLER_MODULE ] ] ; + requirements = [ property.expand-subfeatures-in-conditions $(requirements) ] ; + requirements = [ property.make $(requirements) ] ; + .requirements = [ $(.requirements).add-raw $(requirements) ] ; } }