Karl Berry Olaf Bachmann and many others. A phony target is one that is not really the name of a file. It is just a name for some commands to be executed when you make an explicit request. If you write a rule whose commands will not create the target file, the commands will be executed every time the target comes up for remaking. This is why declaring a target phony is good for performance, even if you are not worried about the actual file existing.
Phony targets can have dependencies.
When one phony target is a dependency of another, it serves as a subroutine of the other.