Make(1) with the -n argument seems to be confused, or at least confusable: phk> make all phk> make -n all | wc -l 176 phk> gmake -n all gmake: Nothing to be done for 'all'. phk> make -n all | head -1 cc -o lib/libvarnish/binary_heap.o [...] phk> make -n lib/libvarnish/binary_heap.o cc -o lib/libvarnish/binary_heap.o [...] phk> make lib/libvarnish/binary_heap.o `lib/libvarnish/binary_heap.o' is up to date. phk> gmake -n lib/libvarnish/binary_heap.o gmake: 'lib/libvarnish/binary_heap.o' is up to date. phk> gmake lib/libvarnish/binary_heap.o gmake: 'lib/libvarnish/binary_heap.o' is up to date. phk> ls -l lib/libvarnish/binary_heap.c -rw-rw-r-- 1 phk wheel 14505 Jan 16 13:12 lib/libvarnish/binary_heap.c phk> ls -l lib/libvarnish/binary_heap.o -rw-rw-r-- 1 phk wheel 18160 Jan 17 14:05 lib/libvarnish/binary_heap.o The makefile is huge (7k lines) but utterly trivial, being emitted by a program.