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 [email protected]
@cp [email protected] $@
Or even better (will work if you don't rename it too):
config.h: config.h.def
@echo creating $@ from $<
@cp $< $@
