[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Which behavior is expected of $(shell )

From: Changqing Li
Subject: Which behavior is expected of $(shell )
Date: Tue, 22 Nov 2022 11:12:16 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2


Here is the Makefile:

defs := $(shell echo $$KBUILD_OUTPUT)
        @echo "KBUILD_OUTPUT in shell is $(defs)"
        @echo "KBUILD_OUTPUT is $(KBUILD_OUTPUT)"

1.  For make version 4.3

$ KBUILD_OUTPUT=test make

KBUILD_OUTPUT in shell is test


2.  For make version 4.4

$ KBUILD_OUTPUT=test make

KBUILD_OUTPUT in shell is


Here is what the make manual says,

6.10 Variables from the Environment

- However, an explicit assignment in the makefile, or with a command argument, overrides the environment.

- Note this is not totally reliable; some makefiles set CFLAGS explicitly and therefore are not affected by the value in the environment.

I think the behavior of 4.4 is aligned with doc, if KBUILD_OUTPUT is explicit set in Makefile,   in $(shell) , it should also use the value set in Makefile, not still use

the value in shell environment like what 4.3  done. But I don't find which commit or bug ID is for fixing this issue,  so I send this mail to double check with the

exports at this. Thanks a lot.

Best regards


reply via email to

[Prev in Thread] Current Thread [Next in Thread]