Is there a good/easy/maintainable way to set the same CFLAGS/CPPFLAGS
for the entire project except for one specific subtree?
I'm using a recursive automake build where a few flags are default
set by configure (e.g. overrides the default "-O2 -g" to different
flags). I'd like to enable more strict compilation flags (e.g. -Wall
-Werror -ansi -pedantic) for all but one specific subtree in our
project but am not seeing a good way of doing this that doesn't
involve editing all the various targets throughout that subtree.
In this particular case, there is a large 'src' tree with all of our
sources as well as a 'src/other' subtree that includes user-
contributed external sources that we don't modify/maintain any more
than we have to but provide for compilation/distribution
convenience. There are dozens of other dirs both in src and in the
src/other dir that get traversed during compilation with hundreds of
targets, so what I'd sort of like to do is be able to specify in src/
other/Makefile.am some directive that says "use the same top-level
CPPFLAGS setting for this subtree except for -Wall -Werror -ansi -
pedantic" so that the subtreee still gets the same debug/profile/
optimization flags.
I can see how to achieve that goal if I edit all of the Makefile.am's
spread throughout src/other via manual CPPFLAGS for all targets, but
that's repetitive and would be too much of a maintenance burden.
Right now, it all works with just the top-level configure setting
what is desired even propagating through to various sub-configures.
The problem is the same as having the following directory structure
and wanting dirB to have just flags A and B while everywhere else
having CPPFLAGS A, B, C, and D:
src
dirA
fooA
fooB
...
dirB
barA
barB
...
dirC
booA
booB
...
Any suggestions? Thanks in advance for any help!
Cheers!
Sean
Few caveats:
I'd like to keep the external sources in the src subtree (as opposed
to some new top-level dir).
I'm hoping to find a solution that works with as far back as automake
1.6+ if possible.
I don't really want to have to edit/maintain the compilation setting
in multiple places if it can be avoided. (e.g. don't want to edit all
the src/dirB/bar[A-Z]/Makefile.am files, hopefully just dirB/
Makefile.am)