Experts - I figured out "a way" to do what I want.&nbsp; I couldn't  figure out in how to get a handle on the target corresponding to the  sources passed to generated-targets.&nbsp; So I gave up on doing  DEPENDS inside of generated-targets and just pass the sources list  unchanged to unix-linking-generator.generated-targets.&nbsp; Later in  the link actions rule, I discriminate the include-whole archive sources  based on the presence of &lt;include-library-whole&gt; or whatever I  called it entries in the properties list.&nbsp; <br><br>  Thus I end up with a command line like:<br>  <br>  link -include_whole path/libfoo.a&nbsp; ...<br>  <br>  instead of<br>  <br>  link -include_whole path/libfoo.a&nbsp; path/libfoo.a ...<br>  <br>  FWIW - the generated-targets code now looks as follows:<br>  <br>  class hptns-linking-generator : unix-linking-generator<br>  {<br>  &nbsp;&nbsp;&nbsp; # Provides special handling for &lt;hptns-include-whole&gt; archives<br>  &nbsp;&nbsp;&nbsp; rule
 generated-targets ( sources + : property-set : project name ? )<br>  &nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local properties2 = [ $(property-set).raw ] ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for local s in $(sources)<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ type.is-derived [ $(s).type ] STATIC_LIB ]<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local a = [ $(s).action ] ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local ps ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local psraw ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if $(a)<br> 
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ps = [ $(a).properties ] ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if $(ps)<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  psraw = [ $(ps).raw ] ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if
 &lt;hptns-include-whole&gt;yes in $(psraw)<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  local actual-name = [ $(s).actual-name ] ; # Gristed name<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  properties2 += &lt;hptns-include-whole-arch&gt;$(actual-name) ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local spawn = [ unix-linking-generator.generated-targets $(sources) <br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  : [
 property-set.create $(properties2) ] : $(project) $(name) ] ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $(spawn) ;<br>  &nbsp;&nbsp;&nbsp; }<br>  }<br>  <br>  # Helper rule for rule link is where I remove include-whole archives<br>  # from normal library list.<br>  <br>  rule handle-libraries ( targets * : sources * : properties * )<br>  {<br>  &nbsp; local sources2 ;<br>  &nbsp; local whole-archs ;<br>  &nbsp; for local p in $(properties)<br>  &nbsp; {<br>  &nbsp;&nbsp;&nbsp; if $(p:G) = &lt;hptns-include-whole-arch&gt;<br>  &nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; whole-archs += $(p:G=) ;<br>  &nbsp;&nbsp;&nbsp; }<br>  &nbsp; }<br>  &nbsp; for local s in $(sources)<br>  &nbsp; {<br>  &nbsp;&nbsp;&nbsp; local suffix = $(s:S) ;<br>  &nbsp;&nbsp;&nbsp; <br>  &nbsp;&nbsp;&nbsp; # Discriminate LIB types from OBJ types via well-known suffixes (Ugh)<br>  &nbsp;&nbsp;&nbsp; if $(suffix) = .so || $(suffix) = .srl || $(suffix) = .a&nbsp; <br>  &nbsp;&nbsp;&nbsp;
 {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ! $(s) in $(whole-archs)<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIBS on $(targets) += $(s) ;<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # else omit $(s) from LIBS list - the archive will get<br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # included via flags binding for &lt;hptns-include-whole-arch&gt;<br>  &nbsp;&nbsp;&nbsp; }<br>  &nbsp;&nbsp;&nbsp; else<br>  &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sources2 += $(s) ;<br>  &nbsp;&nbsp;&nbsp; }<br>  &nbsp; }<br>  &nbsp; OBJS on $(targets) += $(sources2) ;<br>  }<br>  <br>  FWIW (2c) - Mark<br>  <br>