Makefile only recompiles when necessary