NetBSD-Bugs archive

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

bin/59073: make(1) sets $* / $(.PREFIX) wrong in -j mode



>Number:         59073
>Category:       bin
>Synopsis:       make(1) sets $* / $(.PREFIX) wrong in -j mode
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Feb 13 06:15:00 +0000 2025
>Originator:     David A. Holland
>Release:        NetBSD 10.99.10 (20240218)
>Organization:
Quantum Ailurodynamics Lab
>Environment:
System: NetBSD valkyrie 10.99.10 NetBSD 10.99.10 (VALKYRIE2) #0: Mon Feb 19 02:27:48 EST 2024  dholland@valkyrie:/y/objects/usrobj/sys/arch/amd64/compile/VALKYRIE2 amd64
Architecture: x86_64
Machine: amd64
>Description:

Take this makefile:
   --------
SRCS=foo/bar.c
OBJS=$(SRCS:.c=.o)

all: $(OBJS)

.c.o:
        @echo '$$@ is $@'
        @echo '$$< is $<'
        @echo '$$* is $*'
   --------
then mkdir foo and touch foo/bar.c.

Running "make" prints:
$@ is foo/bar.o
$< is foo/bar.c
$* is foo/bar

Running "make -j1" prints:
$@ is foo/bar.o
$< is foo/bar.c
$* is bar

IOW, $* is wrong but only in -j mode.

This is probably related to why I had to revert my candidate fix for
PR 43534 back in 2010, so upon cleaning this up it is probably then
worth looking at that one again.

>How-To-Repeat:

As above.

>Fix:

No idea, alas.



Home | Main Index | Thread Index | Old Index