Why config.def.h is not named config.h.def? Extra "extensions" are usually added after existing, like "config.h.bak".
That way it would be possible to write config.h: @echo creating $@ from $...@.def @cp $...@.def $@ Or even better (will work if you don't rename it too): config.h: config.h.def @echo creating $@ from $< @cp $< $@