Hello,
Using GNU 'make' in various unusual ways, I have discovered a thing that
seemed a bit odd to me at first.
If I want to access, from inside a Makefile, the directories which are
going to be searched for included makefiles (via the 'include'
directive), I may look at the built-in macro MAKEFLAGS or MFLAGS. Is
there any other possibility that I missed in the documentation? It would
be cool if there was a macro like "MAKEDIRS" that could be checked.
Assuming that what I know is all there is to know about accessing the
'include' dirs, then ... what I might get for MAKEFLAGS is something
that looks like this:
--warn-undefined-variables -wI /cdv/g/src/common-vmk
and what I have in my environment is put there by a statement that looks
like this:
export MAKEFLAGS="--unix --warn-undefined-variables --print-directory \
--include-dir=/cdv/g/src/common-vmk"
There's an anomaly in that 'make' seems to drop the '--print-directory'
flag entirely. Maybe that's documented so let's skip that for the
moment.
What 'make' seems to do is to create a string that embodies the most
compressed, brief possible form the options statement could take. What
is mostly of interest to me is that the single-letter options 'w' (and
if '-k' is given as an argument, it too) are bunched together with the
first -I statement. In order to get access to which directories are
being searched for Makefiles (and I do acknowledge that this is an
unusual thing to want to do and probably hasn't come up much), the
intervening option letters between '-' and 'I' must be removed. This
requires quite a little bit of manipulation to accomplish:
DEFNUL =
s = $(DEFNUL) # what we want is the SPACE between
# the null macro and the hash.
DECRUFTED = $(filter-out - -- --%,$(MFLAGS))
LOOK4WHERE= $(subst -I$s,,$(patsubst -%I,-I,$(DECRUFTED)))
(BTW, then, once we have a list of include dirs to search, we can do
something like this:
FOUND_CPUTOOL = $(firstword \
$(wildcard $(addsuffix /get_hostcpu.mk,$(LOOK4WHERE) \
/usr/local/include)))
and can do something with that file we've found, if we find it.)
Is make-3.80 to have something of greater convenience in this regard,
that we haven't had until now? Like a "MAKEDIRS" or "MAKE_INCLUDE_PATH"?
Best Regards,
Soren A
_______________________________________________
Help-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-make