GNU Build System
Yuck.
It's designed for portability with a load of systems no-one uses anymore.
https://www.lrde.epita.fr/~adl/dl/autotools.pdf
Also known collectively as autotools.
Alternatives
CMake is apparantly much better?
Honestly, it seems like anything would be better.
Benefits
Has some standard targets which sysadmins are apparantly familiar with.
These allow e.g. cross-compiling to different architectures.
GNU Makefile Conventions
DESTDIR environment variable.
Some standard targets.
Don't use any programs except stupid ancient ones.
autoscan
This makes the configure.scan file by scanning some source code for common portability issues.
This configure.scan file is then handed edited into configure.ac.
autoconf
autoconf turns configure.ac into configure.
automake
Converts a configure script generated by autoconf into Makefile.in.
m4
m4 is the macro system used by autotools.
shave
This is some sort of hack to tell automake to spit out less gunk.
It is now superceded by automake's silent rules.
aclocal
Automake makes some m4 macros for your project.
aclocal makes a file aclocal.m4 which holds these, based on configure.ac.
Autotools looks at this file.
autogen.sh
For "preparing the build system" prior to running autotools.
Really?
pkg-config
Looks up shared C libraries are on your system, and tells GCC when to find them.
libtool
Does the same as pkg-config. You would probably use either one or the other.
Some systems prefer dynamic or static linking, or don't support one of those two options. libtool knows about this.
libtoolize
"Prepares" a library for libtool. Whatever.
configure
Makes a config.status file.
config.status converts Makefile.in into Makefile.
configure --help
is useful!