configure.ac

  • Written in m4sh (m4 + shell)
  • Program initialization: AC_INIT macro—needs name, version, maintainer
  • Initialize automake: AM_INIT_AUTOMAKE
  • Make sure that C-compiler exists: AC_PROG_CC
  • Build Makefile from Makefile.in, replaces @PACKAGE_VERSION@-type variables: AC_CONFIG_FILES([Makefile])
  • Output the script: AC_OUTPUT

Makefile.am

  • The ./configure script (created by configure.ac), expects to find Makefile.in
  • Makefile.in is long and dumb (just like ./configure), so we make a Makefile.am
  • automake generates Makefile.in
  • foreign AUTOMAKEOPTIONS tells that the layout is "non standard"

Put it all together:

  • create m4 environment: aclocal
  • autoconf does: configure.acconfigure
  • automake --add-missing does: Makefile.amMakefile.in
  • autoreconf --install: autoreconf runs autoconf, autoheader, aclocal, automake, libtoolize, and autopoint