help-make
[Top][All Lists]
Advanced

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

Order-only Prerequisite Bug or User Error?


From: Davidson, Josh
Subject: Order-only Prerequisite Bug or User Error?
Date: Tue, 02 Dec 2008 15:17:42 -0700

I am experiencing a weird issue with order-only prerequisites in GNU Make v3.8.  My expectation is based on the following statement from section 4.2 Types of Prerequisites of the GNU Make manual: “Also, you may still declare multiple lines of prerequisites for the same target: they are appended appropriately.”

 

Consider this dumbed down example (as viewed from a terminal):

 

-------------------Begin Example-------------------------------

%> cat Makefile.mk

 

d := temp

obj_$(d) := $(d)/obj

 

include Blah.mk

 

d := wtf

obj_$(d) := $(d)/obj

 

include Blah.mk

 

%> cat Blah.mk

 

VPATH := $(VPATH) $(d)

 

#This doesn't work

$(obj_$(d))/%.o: | $(obj_$(d))

$(obj_$(d))/%.o: %.c

            touch $@

 

#This does work

#$(obj_$(d))/%.o: %.c | $(obj_$(d))

#          touch $@

 

 

$(obj_$(d)):

            mkdir $@

 

%> mkdir temp

%> mkdir wtf

%> touch temp/blah.c

%> gmake –f Makefile.mk temp/obj/blah.o

Touch temp/obj/blah.o

Cannot create temp/obj/blah.o: No such file or directory

gmake: ***[temp/obj/blah.o] Error 1

 

-------------------End Example-------------------------------

 

If you’ll notice, the Blah.mk that is being included from the main makefile has a section commented out where the order-only prerequisite is combined with the implicit rule.  That works as expected.  From my interpretation of the manual, it what is currently uncommented and failing should also work.  I should note that most of the time this does work correctly.  Not sure is it has to do with simply expanded variables or what the deal is.

 

Josh

 


reply via email to

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