Currently mk would consider the target out of date when the newest prerequisite has the same timestamp with it. The following reproduces this behavior:
$ echo 't: p' > mkfile
$ echo ' touch t' >> mkfile
$ touch t p
$ mk
touch t
$ mk
mk: 't' is up to date
GNU Make and BSD Make both behave correctly. Continuing the following situation:
$ cp mkfile makefile
$ touch t p
$ make # GNU Make
make: `t' is up to date
$ bmake # BSD Make
`t' is up to date
According to mk(1), the target is out of date only when one of the prerequisites is newer than the target. I take "newer" to mean "strictly newer".
I don't know how mk on Plan 9 resolves this, but in Unix this issue is a problem. I heard that older versions of make has the same behavior, but I'm not sure where I heard that.
9port version is 20120106, which I suppose is new enough.