[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
.PHONY and .SECONDARY interaction in make 3.81: bug/feature?
From: |
Alexey Neyman |
Subject: |
.PHONY and .SECONDARY interaction in make 3.81: bug/feature? |
Date: |
Tue, 15 Mar 2005 18:50:24 +0300 |
User-agent: |
KMail/1.6.2 |
Hi,
I tried make 3.81beta2, and its behavior differed from make 3.80 for
some of my Makefiles I used. I tracked the problem to the following
testcase:
======= Makefile ========
OBJS = main.o version.o
all: main
clean:
rm -f main $(OBJS) version.c
date_stamp := $(shell LANG=C date)
.SECONDARY:
.PHONY: version.c
version.c:
@echo "Creating address@hidden"
@echo "const char *version=\"$(date_stamp)\";" > $@
%.o: %.c
gcc -c -o $@ $<
main: $(OBJS)
gcc -o $@ $^
=========================
The 1st "make all" does what's expected with both make 3.80 and make
3.81: rebuilds the 'main' binary. However, if "make all" is issued
again, make 3.80 rebuilds version.c and all files that depend on it
(version.o, main). Make 3.81beta2, however, considers it up-to-date
and doesn't rebuild anything.
I didn't find anything in the description of the .SECONDARY that
states such behavior.
This behavior was introduced by the revision 1.69 of the 'file.c'
file. The description says that it fixes bug #2515, but that bug ends
with a sentence "I'll look at this more carefully." by Paul Smith.
I am not sure which .SECONDARY behavior is right.
PS. I know that .SECONDARY is pointless in this makefile, this
testcase was snipped from a much larger project.
Regards,
Alexey.
--
We seek not to invade, but to pervade. There is a difference.
-- Arilou, SC2
- .PHONY and .SECONDARY interaction in make 3.81: bug/feature?,
Alexey Neyman <=