help-make
[Top][All Lists]
Advanced

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

Differing behaviour between make 3.81 and 4.0


From: Shriramana Sharma
Subject: Differing behaviour between make 3.81 and 4.0
Date: Sat, 31 May 2014 21:03:50 +0530

Hello. Consider a directory with (dummy) files {a,b,c,chelper,def}.c
and the attached Makefile.

Now with make 3.81 (on Kubuntu Trusty) I am getting the output:

$< gives /usr/bin/startx
$< gives /usr/bin/startx
$< gives chelper.c
$< gives /usr/bin/startx
$< gives /usr/bin/startx
$< gives /usr/bin/startx

I was wondering about this since as per
http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html#Prerequisite-Types
for every successive rule adding a prerequisite to a given target, the
prerequisites "are appended appropriately" (which I presume to mean
"in the order they are specified in the Makefile). So what I would
actually have expected make to give me is:

$< gives a.c
$< gives b.c
$< gives c.c
$< gives def.c
$< gives def.c
$< gives def.c

But with make 3.81 to get this output, I need to move the
/usr/bin/startx rule at location 2 to location 1 (see Makefile) which
doesn't seem right. OTOH with make 4.0 (backported from Kubuntu
Utopic) I am getting the above output with the /usr/bin/startx rule at
location 2 as expected, and if I move it to location 1, $< points to
/usr/bin/startx in all cases (and not chelper.c in one of the cases as
in 3.81's location 2 case).

I am just posting this here to ascertain from whether this was
actually an intentional bugfix in make 4.0 and not just a
serendipitous one.

Thanks.

-- 
Shriramana Sharma ஶ்ரீரமணஶர்மா श्रीरमणशर्मा

Attachment: Makefile
Description: Binary data


reply via email to

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