[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Changes to --printf-directory handling in Make 4.4
From: |
Jonathan Wakely |
Subject: |
Changes to --printf-directory handling in Make 4.4 |
Date: |
Mon, 3 Jul 2023 16:32:51 +0100 |
Hi,
A makefile of mine was broken by Make 4.4 and I'm wondering if that's expected.
Consider this silly Makefile:
foo:
$(MAKE) $(shell $(MAKE) bar)
bar:
@echo baz
baz:
@echo BAZ
.PHONY: foo bar baz
With Make 4.3 if I run 'make' then I get this output:
make baz
make[1]: Entering directory '/tmp/make'
BAZ
make[1]: Leaving directory '/tmp/make'
With Make 4.4 I get an error:
make make[1]: Entering directory '/tmp/make' baz make[1]: Leaving
directory '/tmp/make'
make[1]: Entering directory '/tmp/make'
make[1]: *** No rule to make target 'make[1]:'. Stop.
make[1]: Leaving directory '/tmp/make'
make: *** [Makefile:2: foo] Error 2
This left me puzzled for a while, but what's happening is that the output of
$(shell $(MAKE) bar)
now includes the --print-directory output, so where the recipe for
'foo' used to do simply `make baz` now it is `make make[1] Entering
directory etc.`
Is this an intended consequence of the changes to --print-directory
handling in 4.4?
I can restore the old behaviour of my makefile by adding -s to the
make command invoked using $(shell), is that the expected way to fix
this problem?
Thanks for any insight.
- Changes to --printf-directory handling in Make 4.4,
Jonathan Wakely <=