Autoconf makes use of GNU m4 to transform an user-written 'configure.ac' file to a portable shell script called 'configure'. The 'configure' script runs non-interactively, and generates customized headers and makefiles derived from pre-written templates.
Autoconf is similar to the Metaconfig package used by Perl. The IMake system used by the X Window System is closely related, but has a different philosophy.
The autoconf approach to portability is to test for features, not for versions. For example, the native C compiler on SunOS 4 did not support ISO C. However, it is possible for the user/administrator to have installed an ISO C compliant compiler. A pure version-based approach would not make use of the ISO C compiler, but a feature-testing approach would be able to discover that the specified compiler supported ISO C. The rationale of this approach is that