Activating replacements

To actually use a replacement or work-around, the code needs to "know" when it is necessary

Several approaches:
Manual definition of pre-processor defines (e.g. in Makefile)
Basing decisions on platform-supplied preprocessor symbols, such as __OpenBSD__
Maintaining per-platform sets of options in the build systems
Testing for platform features at build-time

