Das GNU Build System Autotools Roman Leshchinsky David Schulz, Shaoke Wu
History of autotools 1980s Multible variants of Unix Varios differences (even with POSIX) Familiarity for software developers with all differences -> more organized approach needed
Goal: Easy distribution of source code programs Source Code System V Linux BSD SolarisHP-UX AIX
History (2) 1992 Metaconfig, configure, GNU autoconf, Imake Building process in two steps Configuration - generates Makefile's build step – using UNIX make 1994 Autoconf solid framework But creation of large Makefile.in's nesseccary Automake was developed
Autoconf Konzept Probleme configure Konfigurat ion Computer Test Automatische Konfiguration von Programmen
Was macht autoconf Autoconf erzeugt configure Input: configure.ac (oder configure.in bei aelteren Versionen ) configure.ac enthaelt Aufruf von Makros Autoconf benutzt m4 aclocal.m4 definiert eigene Makros configure.in aclocla.m4 autoconf configure
Aufbau von configure.ac Reihenfolge egal AC_INIT Source-Katalog finden Kommando Zeilenargumente AC_OUTPUT Dateien generieren AC_INIT(helloworld.c)... AC_OUTPUT(Makefile)
Welche Tests gibt es? Programs Files Library Files Types System Services
./configure Optionen --prefix= --help: alle Optionen auflisten --version: autoconf Version anzeigen LDFLAGS: linker flags, e.g. -L CFLAGS C compiler flags Shell Umgebungsvariable:
Automake Goal: create Makefile.in Remove burden of Makefile maintenance from individual Developer (put it on automake maintainer) Input: Makefile.am Only make sence with autoconf Reads configure.in contents Needs perl (configure.in) Makefile.am automake Makefile.in
Makefile.am Easy to create by developer Syntax: prefix+primary Primarys: PROGRAMS, LIBRARIES, SCRIPTS Arbitrary code ## Automake comment bin_PROGRAMS = hello hello_SOURCES = hello.c hello.h SUBDIRS = src
Automake options --add-missing: create some files automaticly --copy: dont create links --foreign: lower strictness level --help: show options --verbose: show files being read --version: show automake version
Makefile.in Created by automake out of Makefile.am Makefile conforms with make syntax Tags to be substituted by configure script
Overview Create configure.ac and Makefile.am aclocal autoconf Automake --add-missing./configure make make install