1. A system comprising: one or more processors; and one or more computer storage media storing one or more modules of computer program instructions executed by the one or more processors, the one or more modules of computer program instructions comprising: a lexer module to: generate a plurality of tokens from one or more source files, the one or more source files including source code in a first programming language, the source code comprising a macro invocation containing one or more static conditionals that include a conditional expression and branch code that is operative when the conditional expression is true, and wherein various configurations are possible based upon the conditionals and the conditionals can alter the macro invocation by changing a name or argument of the macro invocation; and a configuration-preserving preprocessor module to: determine that a first static conditional in the macro invocation includes one or more nested static conditionals within the branch code associated with the first static conditional; and hoist each of the one or more nested static conditionals around the macro invocation to a beginning of the branch code associated with the first static conditional, wherein each innermost branch code does not contain a static conditional, and wherein each possible configuration is preserved.