bug-make
[Top][All Lists]
Advanced

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

Re: order-only prerequisites don't behave as I'd have expected after rea


From: Stefano Lattarini
Subject: Re: order-only prerequisites don't behave as I'd have expected after reading the documentation
Date: Mon, 11 Jun 2012 21:53:01 +0200

On 06/11/2012 07:03 PM, Philip Guenther wrote:
> On Mon, Jun 11, 2012 at 9:40 AM, Stefano Lattarini
> <address@hidden> wrote:
>> The GNU make 3.82 manual reads:
>>
>>    Normally, this is exactly what you want: if a target's prerequisite
>>    is updated, then the target should also be updated.
>>
>>    Occasionally, however, you have a situation where you want to impose
>>    a specific ordering on the rules to be invoked without forcing the
>>    target to be updated if one of those rules is executed.
>>
>> But if I write a makefile like this:
>>
>>    ALL = a b c d
>>    default:
>>        echo Specify a target: $(ALL); exit 1
>>    .PHONY: $(ALL)
> 
> What is your intent for declaring all the targets PHONY in this Makefile?
>
I was hoping to be able to the order-only prerequisites to enforce ordering
between .PHONY targets.  At this point, I guess I should state the problem
I am trying to solve rather than just the attempts I've made at solving it.

   Is there an easy, scalable way to specify in a GNUmakefile that, whenever
   two given targets T1 and T2 (either phony or not) are to be updated, T1's
   recipe must be executed before T2's, all without declaring any dependency
   of T2 on T1?  So that for example, assuming T1 and T2 are both phony:

     $ make T1 # Only run T1's recipe
     $ make T1 # Only run T2's recipe
     $ make T2 T1 # Run T1's recipe, then T2's recipe
     $ make -j8 T2 T1 # Again, run T1's recipe, then T2's recipe

> (Note: to quote 4.6 Phony Targets:
>     A phony target should not be a prerequisite of a real target file;
>     if it is, its recipe will be run every time `make' goes to update that
>     file.  As long as a phony target is never a prerequisite of a real
>     target, the phony target recipe will be executed only when the phony
>     target is a specified goal (*note Arguments to Specify the Goals:
>     Goals.).
> )
> 
> 
> Philip Guenther

Regards,
  Stefano



reply via email to

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