I've got a project that builds two sets of targets. One is firmware for various version of a handheld device that ultimately creates a .dfu file for each device. This uses the arm compilation chain. The other set are emulators for those same devices that compile the code for the build platform (well, usually anyway). The Makefiles I inherited don't work well in any environment where cc != gcc because of issues with passing the compiler into recursive makes.
I'm thinking about rewriting the build files in shake, but wondered how well it can deal with wanting to do a "make release" that then compiles the same set of source files multiple times with different compilers or flags to generate different kinds of binaries. Not a problem I've faced before, and based on my google searches not one a lot of people have publicly talked about.