On Thu, Dec 25, 2008 at 09:03:48PM +0100, Loïc Minier wrote: > Package: make > Version: 3.81-5 > Severity: normal
I believe this is not a bug at all. It is expected, documented behavior. > % make install-foo install-bar > make: Nothing to be done for `install-foo'. > make: Nothing to be done for `install-bar'. > Err, these look just like install except these are implicit, but these > don't get remade. All are .PHONY. ,---- '(make)Phony Targets' | Since it knows that phony targets do not name actual files that | could be remade from other files, `make' skips the implicit rule search | for phony targets (*note Implicit Rules). This is why declaring a | target phony is good for performance, even if you are not worried about | the actual file existing. `---- So these targets exist as phony targets, but there is actually no recipe for them. That's a feature. > % make install-foobar > install-foobar > Not .PHONY and implicit, works again. It works namely because it's not phony. > % make test2 > test2 > Err, this looks just like test but install-test2 is .PHONY and this > causes the install-test2 target *not* to be remade... Right. Make searches for explicit rule for install-test2, and there is none. So it proceeeds... If you define an install-test2 rule, it will override your pattern rule and you'd get what you expect. What make actually "sees" in your case is something like this: install-test2: ; test2: install-test2 @echo $@ .PHONY: install-test2 test2 > % make foobar-2 > make: Nothing to be done for `foobar-2'. > Grr. This and the rest of the examples are a consequence of the same invalid expectation. > % make foobar-3 > touch baz2 > foobar-3 > % make foobar-3 > foobar-3 > GRR. Correct -- foobar-3 depends on baz2; once the file is created make considers it up-to-date and does not run baz2's recipe. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org