Re: [PROPOSAL] changing policy on compiling with -g .. a better way
Hi,
>>"Roman" == Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> writes:
>> build-debug: BUILD_DEBUG=y
Roman> Is that a GNU make feature that you can set vars at the place where a
Roman> dependency is expected?
Yes.
File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Enviro\
nment, Up: Using Variables
Target-specific Variable Values
===============================
Variable values in `make' are usually global; that is, they are the
same regardless of where they are evaluated (unless they're reset, of
course). One exception to that is automatic variables (*note Automatic
Variables: Automatic.).
The other exception is "target-specific variable values". This
feature allows you to define different values for the same variable,
based on the target that `make' is currently building. As with
automatic variables, these values are only available within the context
of a target's command script (and in other target-specific assignments).
Set a target-specific variable value like this:
TARGET ... : VARIABLE-ASSIGNMENT
or like this:
TARGET ... : override VARIABLE-ASSIGNMENT
Multiple TARGET values create a target-specific variable value for
each member of the target list individually.
The VARIABLE-ASSIGNMENT can be any valid form of assignment;
recursive (`='), static (`:='), appending (`+='), or conditional
(`?='). All variables that appear within the VARIABLE-ASSIGNMENT are
evaluated within the context of the target: thus, any
previously-defined target-specific variable values will be in effect.
Note that this variable is actually distinct from any "global" value:
the two variables do not have to have the same flavor (recursive vs.
static).
Target-specific variables have the same priority as any other
makefile variable. Variables provided on the command-line (and in the
environment if the `-e' option is in force) will take precedence.
Specifying the `override' directive will allow the target-specific
variable value to be preferred.
There is one more special feature of target-specific variables: when
you define a target-specific variable, that variable value is also in
effect for all dependencies of this target (unless those dependencies
override it with their own target-specific variable value). So, for
example, a statement like this:
prog : CFLAGS = -g
prog : prog.o foo.o bar.o
will set `CFLAGS' to `-g' in the command script for `prog', but it will
also set `CFLAGS' to `-g' in the command scripts that create `prog.o',
`foo.o', and `bar.o', and any command scripts which create their
dependencies.
manoj
--
All the existing 2.0.x kernels are to buggy for 2.1.x to be the main
goal. Alan Cox
Manoj Srivastava <srivasta@debian.org> <http://www.debian.org/%7Esrivasta/>
Key C7261095 fingerprint = CB D9 F4 12 68 07 E4 05 CC 2D 27 12 1D F5 E8 6E
Reply to: