Hello,
to pass down *all* environment variables given on cmdline to sub-makes,
I used to write
| export ${MAKEOVERRIDES}
Unfortunately, this seems to be broken beginning with make 4.0 when '-e'
is specified:
--- /tmp/x.mk ---
FOO = bar
export ${MAKEOVERRIDES}
a:
${MAKE} -f ${firstword ${MAKEFILE_LIST}} b
b:
@echo TEST1 '>${a-b}<'
@echo TEST2 '>${a_b}<'
----
## working make
$ make -v
GNU Make 3.82
## working 'make' without '-e'
$ env -i PATH=/usr/bin:/bin make -f /tmp/x.mk -s \
a-b='ok ab $(FOO) a-b=XXX' \
a_b='ok ab ${FOO} a_b=XXX'
TEST1 >ok ab bar a-b=XXX<
TEST2 >ok ab bar a_b=XXX<
## working 'make' with '-e'
$ env -i PATH=/usr/bin:/bin make -f /tmp/x.mk -s -e \
a-b='ok ab $(FOO) a-b=XXX' \
a_b='ok ab ${FOO} a_b=XXX'
TEST1 >ok ab bar a-b=XXX<
TEST2 >ok ab bar a_b=XXX<
----
## broken make
$ ./make -v
GNU Make 4.1
## broken 'make' without '-e'; result ok
$ env -i PATH=/usr/bin:/bin ./make -f /tmp/x.mk -s \
a-b='ok ab $(FOO) a-b=XXX' \
a_b='ok ab ${FOO} a_b=XXX'
TEST1 >ok ab bar a-b=XXX<
TEST2 >ok ab bar a_b=XXX<
## broken 'make' with '-e'; result bad
$ env -i PATH=/usr/bin:/bin ./make -f /tmp/x.mk -s -e \
a-b='ok ab $(FOO) a-b=XXX' \
a_b='ok ab ${FOO} a_b=XXX'
TEST1 >XXX=<
TEST2 >XXX=<
----
Enrico
_______________________________________________
Bug-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-make