C projects, cleaning & caching

Is there any tooling to break up a C build into independent derivations?

I wanted to look into building Emacs with more granularity but without relying on impure caching.

This is relevant: Advice wanted: writing a build system in Nix - #2 by Infinisil

Work on the tool @infinisil refers to in that thread has not continued yet, because we got the opportunity to do some serious yak shaving first. But the one by @sternenseemann follows the same pattern.