I am looking for a high-level build system/tool that can help organise my embedded C project into \"modules\" and \"components\". Note that these two terms are highly subjective
For a general solution, I'd fully recommend to go with Jonathan Leffler's solution. However, if you absolutely need an automated test whether your modules are self-contained and isolated, you might give Debian's build system a try.
Package each module into a Debian package (which is done very quickly when it's already autoconf'd), declare Build-Depends properly and build the packages inside a pbuilder environment. This ensures that only public headers of each module are available (because only those are in the .deb packages that are installed by pbuilder to build the other packages) and there are excellent tools to look at Debian package trees and make sure they are cycle-free.
However, this is probably over-kill. Just stating it for completeness and the case you definitely need an automated solution.