Thu 18 Jan 2018

GNU Build System

Yuck.

It's designed for portability with a load of systems no-one uses anymore.

600px-Autoconf-automake-process.svg.png

https://www.lrde.epita.fr/~adl/dl/autotools.pdf

https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html#Autotools-Introduction

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!