Thanks for the prompt reply.
I rewrote the targets with the pattern rules as you
suggested, and it now works fine.
Still not sure why that the behaviour I saw had the
"sleep" dependency though. Even given that the rule I wrote
was essentially two separate rules, I would have expected
the visit to the second of those rules merely to return
with a "Nothing to do for ...".
cheers,
t
"Paul D. Smith" <[EMAIL PROTECTED]> writes:
> %% Tommy Kelly <[EMAIL PROTECTED]> writes:
>
> tk> I'm seeing an intermittent (i.e. two consecutive invocations
> tk> can be different) results when I have a command which
> tk> produces two targets. It occurs when both targets are
> tk> themselves given as dependencies of the same higher target.
>
> tk> sli4515:tommyk> cat Makefile
> tk> default : clean foo bar
>
> tk> foo bar :
> tk> touch foo bar
> tk> sleep 1
>
> This doesn't do what you think it does. This rule is identical to:
>
> foo:
> touch foo bar
> sleep 1
> bar:
> touch foo bar
> sleep 1
>
> That is, listing multiple targets in a normal rule are treated as if
> you'd declared that rule for each target, _NOT_ as if that one command
> script builds both targets.
>
> See the GNU make manual discussion of the syntax of rule definitions.
>
> So, you can see why you're getting the behavior you are.
>
> The only way to do what you want is either with a dummy target, or using
> multiple targets in a pattern rule, which _does_ behave this way (see
> this section of the manual).
>
> --
> -------------------------------------------------------------------------------
> Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at:
> http://www.gnu.org http://www.paulandlesley.org/gmake/
> "Please remain calm...I may be mad, but I am a professional." --Mad Scientist