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