If you address targets in a mixed form,
as in: with or without their full path,
make ignores source dependencies.
Example
$ cat Makefile
all: myprog
myobj.o: mysource.c
date > $@
#myprog: myobj.o <- this would work
myprog: ${.CURDIR}/myobj.o
date > $@
[ first run. creates myobj.o and myprog ]
$ touch mysource.c; make
date > myobj.o
date > myprog
[ this should rebuild everything, but does nothing!]
$ touch mysource.c; make
While on OpenBSD 4.4 this used to work:
$ touch mysource.c; make
date > /home/marco/myobj.o
date > myprog
This has pbbly sth to do with the target name, now
being normalized to its relative path.
On 4.4, $@ expands to "/home/marco/myobj.o"
while post-4.6 it will always be just "myobj.o"
Marco