I can reproduce the behavior with today's git code (modulo the one unpushed 
change of Dmitry's that has my +1, 
https://savannah.gnu.org/bugs/index.php?64259).  Rereading 
https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html, 
I think you've got a case.  My two cents is hardly worth bothering the list 
with, but, reading:


  *   unlike other environment variables, MAKEFLAGS specified in the 
environment take precedence over MAKEFLAGS specified in the makefile

I was moved to try adding "override " to the first line of Makefile.  Then the 
behavior is the same with latest make and the 4.2.1 that I happen to have in 
/usr/bin.

________________________________
From: bug-make-bounces+martin.dorey=hds....@gnu.org 
<bug-make-bounces+martin.dorey=hds....@gnu.org> on behalf of Ouellette, Paul 
<p-ouelle...@ti.com>
Sent: Thursday, January 25, 2024 07:28
To: bug-make@gnu.org <bug-make@gnu.org>
Subject: Behavior change related to MAKEFLAGS and recursive make in version 
4.4.1

***** EXTERNAL EMAIL *****

Hello,

Consider the following makefiles:
$ cat Makefile
MAKEFLAGS+=VAR=foo
all:
        $(info make VAR=$(VAR))
        @echo "env  VAR=$$VAR"
        $(MAKE) -C lib
$ cat lib/Makefile
all:
        @echo "env  VAR=$$VAR"
        $(info make VAR=$(VAR))

With GNU Make 4.4 and older, the output is:
$ make --no-print-directory
make VAR=foo
env  VAR=foo
make -C lib
make VAR=foo
env  VAR=foo

With GNU Make 4.4.1, the output is:
$ make --no-print-directory
make VAR=foo
env  VAR=
make -C lib
make VAR=
env  VAR=

I have a makefile that depends on VAR being set in the sub-make as in Make 4.4.
Was I depending on a bug or undefined behavior or is this a bug in Make 4.4.1?

Reply via email to