After a little more digging, it looks like mf1 "works" because it's the first rule 
that gets triggered, not the second.  Unfortunately, in my particular case, having the 
first rule triggered will cause the wrong action to take place.

Here's what I see with "gmake -npqr":

# Implicit Rules

../install/%/.:
#  commands to execute (from `mf1', line 4):
        @echo building $(@): $(^)
        

../install/common/%/.: ../install/common/.
#  commands to execute (from `mf1', line 7):
        @echo building $(@): $(^)


For some reason, the order dependency rule is being changed to a normal dependency.

Thanks,
Noel

Noel Yap wrote:
> 
> I'm getting the following output:
> 
> $ ls -ld ../install/common/.
> drwxr-x---    5 yapn     morgan         96 Nov  9 16:52 ../install/common/./
> 
> $ ls -ld ../install/common/make/.:
> ls: ../install/common/make/.\:: No such file or directory
> 
> $ cat mf2
> install.DIR := ../install
> 
> $(install.DIR)/common/%/.: | $(install.DIR)/common/.
>         @echo building $(@): $(^)
> 
> $(install.DIR)/%/.:
>         @echo building $(@): $(^)
> 
> $ gmake -f mf2 ../install/common/make/.
> building ../install/common/make/.: ../install/common/.
> 
> I would expect the rule not to have been triggered.
> 
> When I do a "gmake -npqr" on it, I see:
> 
> # Implicit Rules
> 
> ../install/common/%/.: ../install/common/.
> #  commands to execute (from `mf2', line 4):
>         @echo building $(@): $(^)
> 
> Note that the order dependency rule became a normal dependency.
> 
> If I switch the two rules, everything works fine:
> 
> $ cat mf1
> install.DIR := ../install
> 
> $(install.DIR)/%/.:
>         @echo building $(@): $(^)
> 
> $(install.DIR)/common/%/.: | $(install.DIR)/common/.
>         @echo building $(@): $(^)
> 
> $ gmake -f mf1 ../install/common/make/.
> gmake: `../install/common/make/.' is up to date.
> 
> Any ideas?
> 
> Thanks,
> Noel


_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make

Reply via email to