I think you miss the point. It's not just about flags. It's about how you do a particular task, which could involve one or more commands (or be impossible).
See libtool for an idea of the size of the problem. --Josh At 18:45 on 07/19/2003 EDT, Benjamin Goldberg <[EMAIL PROTECTED]> wrote: > > > Josh Wilmes wrote: > > > > At 12:48 on 07/14/2003 +0200, Lars Balker Rasmussen <[EMAIL PROTECTED]> wrote : > > > > > I've taken this very simple approach to the problem. A perl-wrapper > > > for the CC lines in makefiles/root.in > > > > > > .c$(O) : > > > $(PERL) tools/dev/cc_flags.pl $(CC) $(CFLAGS) ${cc_o_out}$@ -c $< > > > > I would go a bit further, and create a tools/build/compile, tools/build/ > > link_executable, tools/build/link_library, etc. > > That would be silly. Instead, specify the file to read the flags from > as the first argument to cc_flags.pl. That is, change: > > if (open F, "CFLAGS") { > > To: > > if (open F, shift @ARGV) { > > Then: > > c$(O) : > $(PERL) tools/dev/flags.pl CFLAGS $(CC) $(CFLAGS) \ > ${cc_o_out}$@ -c $< > > And for linking, flags.pl gets an argument of LINKFLAGS, and for making > a shared library, it gets an argument of SHAREFLAGS, etc.. In each of > those files are rules for the per-file flags for that type of step. > > > Take all the flags out of the makefile altogether. Just a thought. > > > > --Josh > > -- > $a=24;split//,240513;s/\B/ => /for@@=qw(ac ab bc ba cb ca > );{push(@b,$a),($a-=6)^=1 for 2..$a/6x--$|;print "[EMAIL PROTECTED] > ]\n";((6<=($a-=6))?$a+=$_[$a%6]-$a%6:($a=pop @b))&&redo;}