Automatic compile-time detection

Detect platform characteristics at the time of compilation
As implemented in GNU autoconf, though the technique is older

Good for users:
Fairly easy to use interface
Good chance at working on a never-before-seen platform
Copes very well with customised platforms
Handy place for compile-time customisation (e.g. paths)

Not so good for developers:
The most popular tool (autoconf) is a little fragile
Difficult to reconstruct which options were selected

Probably the most popular method

