das gnu build system autotools roman leshchinsky david schulz, shaoke wu
TRANSCRIPT
Das GNU Build SystemAutotools
Roman LeshchinskyDavid 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
SourceCode
System V
Linux
BSD
Solaris HP-UXAIX
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
Konfiguration
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
autoconfconfigure
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=<install-path> --help: alle Optionen auflisten --version: autoconf Version anzeigen
LDFLAGS: linker flags, e.g. -L<lib dir> 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 automakeMakefile.in
Makefile.am
Easy to create by developer Syntax: prefix+primary Primarys: PROGRAMS, LIBRARIES, SCRIPTS Arbitrary code ## Automake comment
bin_PROGRAMS = hellohello_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