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:
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.
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:
version
[:env]Ohne zusätzliche Angaben sagt
libtool:
dem Build-System, dass es das
Konfigurationsskript mit der auf dem System
installierten Kopie von version
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
.
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.
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.
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.
version
[:env]und
version
welches auch die Benutzung von
autoconf:
impliziert.version
Ä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.
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:
version
[:env
]und
version
was auch die Benutzung von
automake:
impliziert.version
Ä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.
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>.