In my opinion the Linux kernel is the gold standard for makefile use (they call it kbuild).
It solves the cflags-changed problem by writing out the command used to build and updating it in the filesystem only if it has been changed (see "if_changed").
It has some external (to make) dependencies (a c program and numerous shell scripts) to make it work but it's great and can be relied upon!
It wouldn't be that crazy to get content-based dependencies working, especially looking at kbuild as an example.