The GLAM Build Process

Configuration

The configuration step is always the first step taken in any software build process. Configuration is performed via GNU autoconf. When building a software package, you will want to perform the following steps after uncompressing the source archive:

  1. autoreconf

  2. ./configure

There are several options that you can pass the configure script. For example --enable-optimization would enable the package for optimum performance. Conversely, --enable-debug would add a great deal of overhead to better enable a developer to debug crashes in a particular section of software. For a complete list of available options, you can always pass configure the --help flag.

Pre-Compile Setup

Several directories and files need to be created before the compilation phase of the build process. This step is transparent to the person that is compiling, but is important and sometimes causes random build failures on strangely configured systems.

In general, the software systems described in this document try to separate the source directories from the temporary build directories. Source and header files are symbolically linked to their build locations before the compilation phase of the build process.

For example: libfoo/src/blah.h would be symbolically linked to libfoo/include/foo/blah.h. libfoo/src/blah.C would be symbolically linked to libfoo/src/build/blah.C. The file would be compiled in the libfoo/src/build/ directory.

Compiling and Linking Phase

The compile and link phase is relatively straight-forward. In general, all C++ source files in all build directories are compiled and linked into a set of libraries or executables.

For example: All C++ files in the libfoo/src/build directory would be linked into a shared library called libfoo/src/build/libfoo.so. That shared library would then be symbolically linked to the libfoo/lib/libfoo.so file.

In general, executables remain in the build directory until the software system is installed.

Installation

The final step in the software build process is installation. Rarely do you want to execute this step, it is included in the Makefiles to ease the Debian package build process.

make install can damage your system

Performing a make install may overwrite certain important files on your system. Don't execute the following command unless you know exactly what it does.

make install prefix=/usr will install the entire software system using the /usr directory as the root directory. In general, documentation will be installed in /usr/share/doc/packagename, library files will be installed in /usr/lib and header files will be installed in /usr/include.