The GNU Autotools (Autoconf, Automake and Libtool) are the de-facto
standard for portably building C and C++ applications.
They support all UNIX platforms as well as Microsoft Win32
As far as the installer is concerned, building the program depends on nothing
but a Bourne shell implementation, a C compiler and a standard "make"
program.
Autoconf performs some system-wide tests to check for common system parameters:
the location of programs, the existence of functions and system calls, their
behaviour, the availability of libraries, etc.
Using this it builds (on each target system) an appropriate makefile and a
header file, which can be used to build the package natively
This is superior than writing various "#ifdef" for every system out there,
or writing a different makefile for every system.