Les GNU Autotools, appelé également le GNU build system, est un ensemble de logiciels permettant la construction d'un package qui se compile aisément et peut théoriquement s'adapter à toutes les plateformes UNIX. La compilation d'un paquet utilisant les Autotools se fait en 3 étapes :
Cepandant la mise en place d'un tel paquet est très longue et très fastidieuse, c'est pourquoi je vous le déconseille pour les plus petits projets, ou un Makefile suffit (si vous avez peu de dépendances notamment).
Vous avez à votre disposition différents outils pour ça : automake, autoconf, aclocal, autoheader. Cependant il existe un outil qui les réunit tous : autoreconf.
Dans un paquet vous devez avoir les fichiers suivants :
Voila, la base de votre paquet est prêt. Maintenant, il faut créer deux fichiers qui permettront aux autotools de générer le script configure :
AC_INITAC_PROG_CC etc...
Un configure.ac basique ressemble à ça :
AC_INIT([exemple],[1.0],[bug-report@adress.com]) AM_INIT_AUTOMAKE([-Wall foreign]) AC_PROG_CCAM_CONFIG_HEADER(config.h) AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT
Les crochets symbolisent les guillemets.
Le premier Makefile.am doit indiquer de lancer make dans src/ ( make -C src/) ce qui se fait par la variable :
SUBDIRS = src
Et celui dans src/ doit indiquer le binaire à créer, les sources à compiler :
bin_PROGRAMS = hello
Indique que hello est de type bin, en gros hello ira dans le dossier /usr/local/bin après installation, on peut très bien remplacer par :
lib_PROGRAMS = hello.so
Et là hello.so ira dans /usr/local/lib après installation Ensuite on indique les sources à compiler :
hello_SOURCES = hello.c
Et voilà
Votre paquet doit ressembler à ça :
.: AUTHORS ChangeLog configure.ac NEWS COPYING INSTALL Makefile.am README src ./src: hello main.c Makefile.am
On lance autoreconf -i (-i sert à installer les fichiers manquants) :
$ autoreconf -i automake: configure.ac: installing `./install-sh' automake: configure.ac: installing `./mkinstalldirs' automake: configure.ac: installing `./missing' automake: configure.ac: installing `./config.guess' automake: configure.ac: installing `./config.sub'
Ensuite on le test en compilant :
./configure make sudo make install
Et voilà votre premier paquet
To be continued