URL:
<https://savannah.gnu.org/bugs/?65359>
Summary: submake might will lose variable values if their
names contain special char
Group: make
Submitter: news_howardz
Submitted: Sat 24 Feb 2024 11:24:22 AM UTC
Severity: 3 - Normal
Item Group: Bug
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Component Version: 4.2.1
Operating System: POSIX-Based
Fixed Release: None
Triage Status: None
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Sat 24 Feb 2024 11:24:22 AM UTC By: Howard <news_howardz>
If the submake cmd line contains any separated char (e.g., ';', '&', '|', ...)
at the end of the make cmd, export var will lose values in the submake process
if these var contain special char (e.g., '+', '-').
Makefile:
-----------------
ifeq ($(LOOP),1)
LOOP = 2
else
export C++ = test1
export C-- = test2
export C__ = test3
export LOOP = 1
endif
$(info C++=$(C++))
$(info C--=$(C--))
$(info C__=$(C__))
ifeq ($(LOOP),2)
all:;
else
all:
$(MAKE);
endif
------------
$ make
C++=test1
C--=test2
C__=test3
make;
make[1]: Entering directory '/mnt/d/temp'
C++=
C--=
C__=test3
make[1]: 'all' is up to date.
make[1]: Leaving directory '/mnt/d/temp'
If change "$(MAKE);" to "$(MAKE)", we can get the correct result:
$ make
C++=test1
C--=test2
C__=test3
make
make[1]: Entering directory '/mnt/d/temp'
C++=test1
C--=test2
C__=test3
make[1]: 'all' is up to date.
make[1]: Leaving directory '/mnt/d/temp'
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?65359>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/