.PHONY: foo
echo PASS phony foo
.PHONY: bar
.PHONY: test4
# if no foo target, but foo is .PHONY, don't warn
# "Circular baz <- foo dependency dropped.".
baz: foo
echo baz
test1: foo bar baz
echo PASS test1 from foo bar baz
test3:
touch test4
test4:
echo PASS test4
# test5 is similar with test1, but foo2 has command.
# foo2 runs once to build test5 even if it appears twice
# test5 <- foo2, test5 <- baz2 <- foo2.
.PHONY: foo2
foo2:
echo foo2
baz2: foo2
echo baz2
test5: foo2 bar baz2
echo PASS test5 from foo bar baz