One thing I meant to ask about before, but clearly didn't: do the .S files produced really need to go through the preprocessor? If not, they really should be .s and not .S. (I think that this is the case because if we use gcc to call the assembler it will actually run a preprocess pass first. Even if we don't, people will think that preprocessing is done or required even when it isn't.)