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

Reply via email to