The first word in $(MAKEFLAGS) is not a group of short options.

The manual says as follows:
"Recall that MAKEFLAGS will put all single-letter options (such as ‘-t’)
into the first word, and that word will be empty if no single-letter
options were given. To work with this, it’s helpful to add a value at
the start to ensure there’s a word: for example ‘-$(MAKEFLAGS)’."


This is no longer true when MAKEFLAGS is set
via the command line.

[test code]

ifeq ($(SUBMAKE),)
all:
        $(MAKE) MAKEFLAGS=--no-print-directory SUBMAKE=1
else
all:
        @echo in submake: MAKEFLAGS=$(MAKEFLAGS)
        @echo in submake: short-opts=$(firstword -$(MAKEFLAGS))
endif



[result]

make MAKEFLAGS=--no-print-directory SUBMAKE=1
make[1]: Entering directory '/tmp'
in submake: MAKEFLAGS=--no-print-directory
in submake: short-opts=---no-print-directory
make[1]: Leaving directory '/tmp'



So, $(firstword -$(MAKEFLAGS)) cannot retrieve short options.
Is this a bug?



-- 
Best Regards
Masahiro Yamada

Reply via email to