diff --git a/src/tools/builtin.jam b/src/tools/builtin.jam index 26be909f6..edfdeae2c 100644 --- a/src/tools/builtin.jam +++ b/src/tools/builtin.jam @@ -88,7 +88,7 @@ feature search : : free path ; #order-sensitive ; feature location : : free path ; feature dll-path : : free path ; -feature hardcode-dll-paths : false true : incidental propagated ; +feature hardcode-dll-paths : true false : incidental ; # This is internal feature which holds the paths of all dependency diff --git a/src/tools/stage.jam b/src/tools/stage.jam index bb1c7e102..ece78c136 100644 --- a/src/tools/stage.jam +++ b/src/tools/stage.jam @@ -126,7 +126,7 @@ class stage-target-class : basic-target } rule construct ( source-targets * : property-set ) - { + { local name = [ $(property-set).get ] ; if $(name) && $(source-targets[2]) { @@ -278,7 +278,16 @@ class stage-exe-generator : generator # stage can affect the relinking details. local ps = [ $(action).properties ] ; - local new-ps = [ $(ps).add [ property-set.create [ $(property-set).free ] ] ] ; + local ps-raw = [ $(ps).raw ] ; + # Unless true is in properties, which can + # happen only if the user has explicitly requested it, nuke all + # properties. + if [ $(property-set).get ] != true + { + ps-raw = [ property.change $(ps-raw) : ] ; + } + ps-raw = $(ps-raw) [ $(property-set).free ] ; + local new-ps = [ property-set.create $(ps-raw) ] ; local cloned-action = [ virtual-target.clone-action $(action) : $(project) : "" : $(new-ps) ] ; @@ -301,6 +310,14 @@ rule stage ( name : sources * : requirements * : default-build * ) { local project = [ project.current ] ; + # Unless the user has explicitly asked us to hardcode dll paths, add + # false in requirements, to override default + # value. + if ! true in $(requirements) + { + requirements += false ; + } + targets.main-target-alternative [ new stage-target-class $(name) : $(project) : [ targets.main-target-sources $(sources) : $(name) ]