[Top][All Lists]

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

Make 3.82: weird "circular dependency" and missing $< expansion

From: Akim Demaille
Subject: Make 3.82: weird "circular dependency" and missing $< expansion
Date: Mon, 2 May 2011 09:17:45 +0200

Hi all,

First of all, thanks a lot for the good work on GNU Make!

I have a piece of Makefile that started behaving differently in the migration 
from 3.81 to 3.82, and I'm tempted to call it a bug.

Using the attached Makefile (I spent quite a while to strip it down from an 
Automake generated file), Make 3.81 reports:

$ make
echo accel.dat >accel.dat
echo "{accel.dat}"
test -n "accel.dat"
echo accel.pdf >accel.eps

Which is what I expect.  But Make 3.82 reports:

$ LC_ALL=C gmake -rR
gmake: Circular accel.pdf <- accel.pdf dependency dropped.
echo "{}"
test -n ""
gmake: *** [accel.pdf] Error 1

I would have understood that something be reported about accel.eps, but I don't 
understand what it means about accel.pdf.  It would be really nice to have more 
details about those "circular dependencies".  And see how $< is expanding to 

Weirdly enough, if I comment the "document.pdf" dependency, which is not 
involved in plain "make all", it works.  If I move it, it works too.  If I 
compare the --print-db without-document.pdf -> with-document.pdf, I can see 
that things about accel.pdf differ (and $< is not defined), but it does not 
help me understand what's wrong:

-#  Implicit rule search has not been done.
-#  File does not exist.
+#  Implicit rule search has been done.
+#  Implicit/static pattern stem: `accel'
+#  Also makes: accel.eps
+#  Modification time never checked.
 #  File has been updated.
-#  Successfully updated.
+#  Failed to be updated.
+# automatic
+# @ := accel.pdf
+# automatic
+# % := 
+# automatic
+# * := accel
+# automatic
+# + := 
+# automatic
+# | := 
+# automatic
+# < := 
+# automatic
+# ^ := 
+# automatic
+# ? := 
+# variable set hash-table stats:
+# Load=8/32=25%, Rehash=0, Collisions=1/19=5%
+#  recipe to execute (from `Makefile', line 9):
+ echo "{$<}"
+ test -n "$<"

There might be something I did not notice, I don't know.  Any help would be 
appreciated.  Please, keep me in CC as I am not member of this list, nor 
reading the newsgroup.

Attachment: Makefile
Description: Binary data

reply via email to

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