eliminating CFLAGS

Will Coleda will at coleda.com
Thu Mar 4 00:18:55 UTC 2010


On Wed, Feb 17, 2010 at 9:12 AM, Andy Dougherty <doughera at lafayette.edu> wrote:
> On Tue, 16 Feb 2010, chromatic wrote:
>
>> On Tuesday 16 February 2010 at 18:50, Andy Dougherty wrote:
>>
>> > I'm afraid that I'm unlikely to have any opportunity to do anything
>> > useful with this for quite a while, so go with whatever makes sense to
>> > you.
>>
>> Ultimately we want cleanliness of course,
>
> For the rm_flags branch, it's currently not an issue of cleanliness.  It
> simply doesn't build with anything other than gcc[*] (and probably not
> with gcc -O3 on amd64/Linux).  There were things in the old CFLAGS
> mechanism which need to somehow be accomodated in the new order. I believe
> Coke is well aware of these and working on them, but hasn't had time to
> finish them yet.

And... done.

> More broadly, the old CFLAGS way was indeed incredibly roundabout and
> clunky; the new way forward is potentially both simpler and more flexible.
>
> --
>    Andy Dougherty              doughera at lafayette.edu
> _______________________________________________
> http://lists.parrot.org/mailman/listinfo/parrot-dev
>

This branch:
- is warnings clean on GCC. (but probably nothing else)
- removes tools/build/cc_flags.pl - all compilation is now done via
straight makefile rules (and now the actual compiler command is
visible, where it was hidden in trunk.)
- eliminates a bunch of unused static functions, variables and other
warnings (instead of skipping them as we used to.)
- creates a @foo::bar@ syntax for makefile substitution - if foo::bar
is present, it's used, otherwise we fall back to foo.
- eliminates "replace_slashes" in the makefile. (and uses @slash@ in
the few cases where it is necessary, i.e. command paths.)
- kills the legacy INVERSE_CONDITIONED_LINE syntax.
- makes compilers/imcc/Rules.mak a generated file so we can use the
makefile.in  syntax.
- eliminates most of config's auto:cgoto - these are now just part of
the makefile.
- updates config's init::optimize to put the optimize flags in
@optimize@, with file-specific overrides, and update all invocations
of CC to use this config var.
- update config's auto::warnings to keep track of per-file warnings
overrides in a hopefully easy to use data structure that should allow
for additions other than the current gcc/g++ variants; don't expose as
much of our decision making process here in config vars as we used to.
break out warnings into @ccwarn@ instead of adding them to CFLAGS.
generate file specific overrides (and use them in the makefiles).
- move g++ vs. gcc check out of auto::warnings into auto::gcc
- fix test file used to see if warnings are valid to be warnings clean
- some valid warnings were not being picked up because of this.


Needs testing on sun's CC and amd64, and windows.

-- 
Will "Coke" Coleda


More information about the parrot-dev mailing list