bug:
	$(MAKE) clean
	echo '#define S "wrong"' > foo.h
	$(MAKE) foo
	sleep 1  # ensure new time stamp
	echo '#error foo' >> foo.h
	$(MAKE) foo || true
	sleep 1  # ensure new time stamp
	echo '#define S "OK"' > foo.h
	$(MAKE) foo
	./foo

-include foo.d

%: %.c
	# rm -f "$@"  # work-around
	gcc -MD -o "$@" "$<"

clean:
	rm -f foo.h foo.d foo
