URL: <https://savannah.gnu.org/bugs/?67517>
Summary: Inconsistent variable $@ if target has an escaped
wildcard like \*
Group: make
Submitter: joergboe
Submitted: Mon 15 Sep 2025 06:16:30 PM CEST
Severity: 3 - Normal
Item Group: Bug
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Component Version: 4.4.1
Operating System: POSIX-Based
Fixed Release: None
Triage Status: None
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Mon 15 Sep 2025 06:16:30 PM CEST By: Anonymous
Hello,
When I use files that contain wildcard characters, the content of the variable
$@ is inconsistent, depending on what triggers the corresponding rule.
$ cat Makefile
name_with_\*.o: name_with_\*.c
@echo '$$@: $@ $$<: $<'
touch $@
When the c-file exists and the o-file not exists, the output of $@ is the
target with escaped wildcard.
$ ls
Makefile name_with_*.c
$ make
$@: name_with_\*.o $<: name_with_*.c
touch name_with_\*.o
When the o-file exists but is not up-to-date, the output of $@ is the target
name without backslash escapes.
$ touch name_with_\*.c
$ make
$@: name_with_*.o $<: name_with_*.c
touch name_with_*.o
This makes it impossible to use the variable $@ correctly.
Variable $< contains always the prerequisite without escapes.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?67517>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
