6.4. Benutzung von GNU autotools
Zurück | Kapitel 6. Besonderheiten | Weiter

## 6.4. Benutzung von GNU autotools

### 6.4.1. Einführung

Die verschiedenen GNU autotools stellen einen Abstraktionsmechanismus bereit für das Kompilieren von Software für eine Vielfalt von Betriebssystemen und Maschinenarchitekturen. Innerhalb der Ports-Sammlung kann ein einzelner Port diese Werkzeuge mit Hilfe eines einfachen Konstrukts benutzen:

USE_AUTOTOOLS= `tool`:`version`[:`operation`] ...

Als dies geschrieben wurde konnte `tool` eins von `libtool`, `libltdl`, `autoconf`, `autoheader`, `automake` oder `aclocal` sein.

`version` gibt die einzelne Werkzeug-Revision an, die benutzt werden soll (siehe `devel/{automake,autoconf,libtool}[0-9]+` für mögliche Versionen).

`operation` ist eine optionale Angabe, die modifiziert, wie das Werkzeug benutzt wird.

Es können auch mehrere Werkzeuge angegeben werden – entweder durch Angabe aller in einer einzigen Zeile oder durch Benutzung des `+=` Makefile-Konstrukts.

Schliesslich gibt es das spezielle Tool, genannt `autotools`, das der Einfachheit dient indem es von alle verfügbaren Versionen der Autotools abhängt, was sinnvoll für Cross-Development ist. Dies kann auch erreicht werden, indem man den Port `devel/autotools` installiert.

### 6.4.2. `libtool`

Shared-Libraries, die das GNU Build-System benutzen, verwenden normalerweise `libtool`, um die Kompilierung und Installation solcher Bibliotheken anzupassen. Die übliche Praxis ist, eine Kopie von `libtool`, die mit dem Quelltext geliefert wird, zu benutzen. Falls Sie ein externes `libtool` benötigen, können Sie die Version, die von der Ports-Sammlung bereitgestellt wird, benutzen:

USE_AUTOTOOLS= libtool:`version`[:env]

Ohne zusätzliche Angaben sagt `libtool:`version`` dem Build-System, dass es das Konfigurationsskript mit der auf dem System installierten Kopie von `libtool` patchen soll. Die Variable `GNU_CONFIGURE` ist impliziert. Außerdem werden einige make– und shell-Variablen zur weiteren Benutzung durch den Port gesetzt. Für Genaueres siehe `bsd.autotools.mk`.

Mit der Angabe `:env` wird nur die Umgebung vorbereitet.

Schließlich können optional `LIBTOOLFLAGS` und `LIBTOOLFILES` gesetzt werden, um die häufigsten Argumente und durch `libtool` gepatchten Dateien außer Kraft zu setzen. Die meisten Ports werden das aber nicht brauchen. Für Weiteres siehe `bsd.autotools.mk`.

### 6.4.3. `libltdl`

Einige Ports benutzen das `libltdl`-Bibliothekspaket, welches Teil der `libtool`-Suite ist. Der Gebrauch dieser Bibliothek macht nicht automatisch den Gebrauch von `libtool` selbst nötig, deshalb wird ein separates Konstrukt zur Verfügung gestellt.

USE_AUTOTOOLS= libltdl:`version`

Im Moment sorgt dies nur für eine `LIB_DEPENDS`-Abhängigkeit von dem entsprechenden `libltdl`-Port und wird zur Vereinfachung zur Verfügung gestellt, um Abhängigkeiten von den Autotools-Ports ausserhalb des `USE_AUTOTOOLS`-Systems zu eliminieren. Es gibt keine weiteren Angaben für dieses Werkzeug.

### 6.4.4. `autoconf` und `autoheader`

Manche Ports enthalten kein Konfigurationsskript, sondern eine autoconf-Vorlage in der `configure.ac`-Datei. Sie können die folgenden Zuweisungen benutzen, um `autoconf` das Konfigurationsskript erzeugen zu lassen, und auch `autoheader` Header-Vorlagen zur Benutzung durch das Konfigurationsskript erzeugen zu lassen.

USE_AUTOTOOLS= autoconf:`version`[:env]

und

USE_AUTOTOOLS= autoheader:`version`

welches auch die Benutzung von `autoconf:`version`` impliziert.

Ähnlich wie bei `libtool`, bereitet die Angabe des optionalen `:env` nur die Umgebung für weitere Benutzung vor. Ohne dieses wird der Port auch gepatched und erneut konfiguriert.

Die zusätzlichen optionalen Variablen `AUTOCONF_ARGS` und `AUTOHEADER_ARGS` können durch das `Makefile` des Ports ausser Kraft gesetzt werden, wenn erforderlich. Wie bei den `libtool`-Äquivalenten werden die meisten Ports dies aber nicht benötigen.

### 6.4.5. `automake` und `aclocal`

Manche Pakete enthalten nur `Makefile.am`-Dateien. Diese müssen durch `automake` in `Makefile.in`-Dateien konvertiert und dann durch `configure` weiterbearbeitet werden, um schließlich ein `Makefile` zu erzeugen.

Ähnliches gilt für Pakete, die gelegentlich keine `aclocal.m4`-Dateien mitliefern, welche ebenfalls zum Erstellen der Software benötigt werden. Diese können durch `aclocal` erzeugt werden, welches `configure.ac` oder `configure.in` durchsucht.

`aclocal` hat eine ähnliche Beziehung zu `automake` wie `autoheader` zu `autoconf` – beschrieben im vorherigen Abschnitt. `aclocal` impliziert die Benutzung von `automake`, also haben wir:

USE_AUTOTOOLS= automake:`version`[:`env`]

und

USE_AUTOTOOLS= aclocal:`version`

was auch die Benutzung von `automake:`version`` impliziert.

Ähnlich wie bei `libtool` und `autoconf`, bereitet die optionale Angabe `:env` nur die Umgebung zur weiteren Benutzung vor. Ohne sie wird der Port erneut konfiguriert.

Wie schon `autoconf` und `autoheader`, hat sowohl `automake` als auch `aclocal` eine optionale Argument-Variable `AUTOMAKE_ARGS` bzw. `ACLOCAL_ARGS`, die durch das `Makefile` des Ports, falls nötig, außer Kraft gesetzt werden kann.

Zurück | Nach oben | Weiter
6.3. Build-Mechanismen | Zum Anfang | 6.5. Benutzung von GNU `gettext`

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.