That is all sane.
One of the bees I have in my bonnet is that everything necessary to comprehend what the compiler is going to do should be in one place, i.e. the source code. (That's based on some truly bizarre things I've seen in some companies!)
I'm prepared to compromise (remarkably :) ) and accept a single global set of command line compiler flags, provided they are treated in exactly the same way as source code, especially w.r.t. changing them. I get very suspicious when different sub-systems have different flags, since the probability of a maintenance engineer understanding everything and getting it right in 5 years time is vanishingly small - even if that engineer is the creator such as me.
Now the non-embedded (e.g. web-based) developers will argue that unit tests are sufficient to detect when command line arguments are wrong. I beg to differ, both for their cases and especially for the embedded systems with stimuli and responses that simply cannot be expressed in a unit test.