Hi Paul, On Tue, Jul 16, 2024 at 10:16:27AM GMT, Paul Smith wrote: > On Tue, 2024-07-16 at 15:37 +0200, Alejandro Colomar wrote: > > However, I think this is not standard practise. Is there any > > standard (or de-facto standard) practice regarding these variables? > > Generally users who want to have more sophisticated build systems don't > try to re-use the built-in recipes. Instead they replace those with > their own pattern rules. This allows them to use separate variables > (as Sébastien suggests).
Thanks for the reference to Sébastien's mail; I didn't receive a copy,
but have now checked the archive.
> For example, if you examine automake which implements the GNU standards
> for writing makefiles, they suggest that CFLAGS have a simple default
> value, typically:
>
> CFLAGS = -g -O2
>
> But be reserved for users to set on the command line:
>
> make CFLAGS=-g
>
> which means that CFLAGS should never contain any critical flags.
Hmm, that makes sense.
>
> Instead these standards recommend creating your own pattern rules to
> avoid being limited to only the default settings; for example:
>
> EXTRA_CFLAGS := $(shell pkgconf --cflags somedep)
>
> %.o : %.c
> $(CC) $(EXTRA_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
> $(OUTPUT_OPTION) $<
Now that I see this, I wonder:
Is there any order preference between CFLAGS and CPPFLAGS? I tend to
have CPPFLAGS first. Probably it doesn't matter, but I'll ask just in
case.
Also: I didn't know about TARGET_ARCH. Is that documented anywhere?
>
> (you can simplify this if you prefer of course, this reuses what the
> default rule implements).
Makes sense. I guess I'll do:
FOO_CFLAGS := -critical -flags
CFLAGS ?=
CFLAGS_ := $(FOO_CFLAGS) $(CFLAGS)
%.o: %.c
$(CC) $(CPPFLAGS_) $(CFLAGS_) ...
Thanks!
Have a lovely day!
Alex
--
<https://www.alejandro-colomar.es/>
signature.asc
Description: PGP signature
