diff --git a/new/builtin.jam b/new/builtin.jam index 8f1da79c1..c23cf7f19 100644 --- a/new/builtin.jam +++ b/new/builtin.jam @@ -402,21 +402,27 @@ generators.register [ new lib-generator ] ; rule searched-lib-generator ( ) { - generator.__init__ searched-lib-generator : : SEARCHED_LIB ; + # The requirements cause the generators to be tried *only* when we're building + # lib target and there's 'search' feature. This seems ugly --- all we want + # is make sure searched-lib-generator is not invoced deep in transformation + # search. + generator.__init__ searched-lib-generator : : SEARCHED_LIB ; rule run ( project name ? : property-set : sources * : multiple ? ) { - local properties = [ $(property-set).raw ] ; - local shared ; - if shared in $(properties) - { - shared = true ; - } - # sometimes this rule is called with no 'name' parameter. In those cases - # $(sources) is not empty, which should not be the case for SEARCHED_LIBs. - # looks like something is going wrong elsewhere. if $(name) { + # If name is empty, it means we're called not from top-level. + # In this case, we just fail immediately, because searched-lib-generator + # cannot be used to produce intermediate targets. + + local properties = [ $(property-set).raw ] ; + local shared ; + if shared in $(properties) + { + shared = true ; + } + local t = [ new searched-lib-target $(name) : $(project) : $(shared) : [ feature.get-values : $(properties) ] : [ feature.get-values : $(properties) ] diff --git a/v2/tools/builtin.jam b/v2/tools/builtin.jam index 8f1da79c1..c23cf7f19 100644 --- a/v2/tools/builtin.jam +++ b/v2/tools/builtin.jam @@ -402,21 +402,27 @@ generators.register [ new lib-generator ] ; rule searched-lib-generator ( ) { - generator.__init__ searched-lib-generator : : SEARCHED_LIB ; + # The requirements cause the generators to be tried *only* when we're building + # lib target and there's 'search' feature. This seems ugly --- all we want + # is make sure searched-lib-generator is not invoced deep in transformation + # search. + generator.__init__ searched-lib-generator : : SEARCHED_LIB ; rule run ( project name ? : property-set : sources * : multiple ? ) { - local properties = [ $(property-set).raw ] ; - local shared ; - if shared in $(properties) - { - shared = true ; - } - # sometimes this rule is called with no 'name' parameter. In those cases - # $(sources) is not empty, which should not be the case for SEARCHED_LIBs. - # looks like something is going wrong elsewhere. if $(name) { + # If name is empty, it means we're called not from top-level. + # In this case, we just fail immediately, because searched-lib-generator + # cannot be used to produce intermediate targets. + + local properties = [ $(property-set).raw ] ; + local shared ; + if shared in $(properties) + { + shared = true ; + } + local t = [ new searched-lib-target $(name) : $(project) : $(shared) : [ feature.get-values : $(properties) ] : [ feature.get-values : $(properties) ]