%% Ernest <[EMAIL PROTECTED]> writes: e> The GNU make manual, section 10.5.3, mentions the use of the e> SysV-style automatic variables $$@, $$(@D), and $$(@F), and that e> these "bizarre" uses are not necessary ("there are other ways to e> accomplish the same results"). How?
e> For example, I need to do some stuff like what's shown below, where e> the prereq names are determined by a semi-complex manipulation of e> the target name (it's actually much more complex than this e> example). This doesn't work, though. Right, because you're trying to wrap $$@ in a function; that won't work because while the expansion of $$@ is delayed, the expansion of the FUNCTIONS are still immediate (before $$@ is expanded). Without seeing a REAL example of what you're trying to do it's difficult to determine how much power you need. Typically there are three ways you work around the need for $$@, etc.: 1) Static pattern rules, for straightforward situations: target_types = build comp clobber foo bar biz baz boz $(target_types:%=%_all) : %_all : % 2) Auto-re-exec: you can include a makefile, then provide a rule to generate that makefile where the rule constructs the complex data. Since this happens in a shell script you have all the power of the shell here: include all_targets.mk all_targets.mk: Makefile @echo <stuff> >> $@ 4) If you have GNU make 3.80, you can use the $(eval ...) function. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ help-gnu-utils mailing list help-gnu-utils@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-utils