help-make
[Top][All Lists]
Advanced

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

Re: implementing emake's #pragma multi in GNU make?


From: Michael Stahl
Subject: Re: implementing emake's #pragma multi in GNU make?
Date: Sat, 09 Feb 2013 00:22:32 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2

On 08/02/13 19:48, Mark Galeck wrote:
> --- On Fri, 2/8/13, Michael Stahl <address@hidden> wrote:
> 
>>> address@hidden ~]$ cat Makefile
>>> bar1: bar
>>>   touch $@
>>>
>>> bar: foo
>>> foo : baz
>>>   touch foo bar
>>> address@hidden ~]$ touch bar1 foo bar
>>> address@hidden ~]$ touch baz
>>> address@hidden ~]$ make bar1
>>> touch foo bar
>>> touch bar1
>>
>> but how often do users invoke a particular file target
>> manually?
>>
>>  [0] /tmp > make
>>  touch foo bar
>>  [0] /tmp > make
>>  touch bar1
>>
>> is a result far more likely to happen in practice with your
>> Makefile.

actually the above should do the same for both of us, since the default
target is "bar1" there so it shouldn't make a difference if you invoke
"make" or "make bar1"

> Michael,  I am sorry for being so dumb apparently, but I still don't see it.  
> Can you tell me the sequence of steps to reproduce the problem?  

apparently the problem is tricky and depends on the exact dependency
structure and the invoked target:

> address@hidden ~]$ cat Makefile
> all: foo bar bar1
> 
> bar1: bar
>         touch $@
> 
> bar: foo
> foo : baz
>         touch foo bar

with this ^ Makefile and make (3.82, Fedora18) and make-3.81 built from
source:

[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > make bar1
touch foo bar
[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > make
touch foo bar
touch bar1
[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > ~/stuff/make-3.81/make
touch foo bar
touch bar1
[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > ~/stuff/make-3.81/make bar1
touch foo bar

with "all" not depending on every target it's different:

[0] /tmp > sed -i "s/foo bar bar1/bar1/" Makefile
[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > ~/stuff/make-3.81/make
touch foo bar
[0] /tmp > touch foo bar bar1 && touch baz
[0] /tmp > make
touch foo bar

regards,
 michael




reply via email to

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