Makefile-supplied preprocessor
Define consistent sets of options per-platform in a Makefile
Removes the compile-time customisation from the code to somewhere easier to maintain
Good for developers: determinisim in which options are active
Easy to set up for cross-compilation
Again, it doesn't cope too well with...
OS variants and customisation
never-before-seen platforms