makefile with automatic header dependency generation