5. Mise en place des fichiers pour autoconf et automake

Vous l'aurez compris, votre projet nécessite un fichier configure.ac à la racine, et un fichier Makefile.am à la racine ainsi que dans tous les sous-répertoires. Commençons par le fichier configure.ac; Vous pouvez le générer en lançant la commande autoscan. Vous obtiendriez un fichier configure.scan à renommer configure.ac. Voici ce fichier :

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([src/afficher.c])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h])

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.
AC_OUTPUT
		

Ce fichier fait appel à quelques notions que nous verrons dans des articles suivants. Aussi, nous allons nous limiter au fichier configure.ac suivant :

AC_PREREQ(2.59)
AC_INIT(bonjour, 0.1, ymettier@libertysurf.fr)
AM_INIT_AUTOMAKE

AC_PROG_CC
AC_PROG_MAKE_SET

AC_CONFIG_FILES([
        Makefile
        src/Makefile
        ])
AC_OUTPUT
		

Note

Pour insérer des commentaires, faites-les précéder d'un signe #. Vous pouvez aussi écrire dnl à la place, comme cela était le cas avec la version 2.13 d'autoconf.

La première ligne permet d'ôter toute ambiguité sur la version d'autoconf à utiliser. Cela est utile sur les machines où autoconf-2.5X cotoie encore l'ancienne version 2.13. La ligne AC_INIT vous oblige à indiquer le nom de votre projet (notion différente du nom de l'exécutable que nous allons générer), son numéro de version et une adresse électronique que les utilisateurs pourront utiliser pour envoyer des rapports de bogues (pensez à utiliser une liste de diffusion dédiée lorsqu'elle existe). La troisième ligne indique à automake qu'il faut s'initialiser.

Les deux lignes en AC_PROG_* testent la présence de programmes et définissent des variables. C'est grâce à elles que le script configure va vérifier la présence du compilateur, en général gcc, et définir la variable $CC. Idem pour make dont la version et l'implémentation (ce n'est pas toujours GNU Make) varient d'une plateforme à l'autre.

Enfin la ligne AC_CONFIG_FILES indique les fichiers à générer (à partir des fichiers portant le même nom, mais avec l'extension supplémentaire .in) et AC_OUTPUT lance la génération de ces fichiers.

L'étape suivante consiste à éditer des fichiers Makefile.am. Dans notre cas d'école, celui de la racine ne contient qu'une ligne définissant les sous-répertoires du projet (mettez une espace en guise de séparateur entre les différents sous-répertoires) :

SUBDIRS=src
		

Pour les autres fichiers Makefile.am, définissez en premier la variable bin_PROGRAMS qui doit contenir le nom des binaires à générer. Notre programme s'appelant bonjour, nous y mettons bonjour. La variable suivante définit les fichiers sources nécessaires à la compilation du programme bonjour. Le nom de la variable est constitué du nom du binaire, suivi de l'extension _SOURCES. Le fichiers ${racine}/src/Makefile.am est le suivant :

bin_PROGRAMS=bonjour

bonjour_SOURCES= \
	main.c \
	afficher.c afficher.h
		

Nous verrons dans un article suivant des éléments de syntaxe pour une utilisation un peu plus poussée de ces fichiers Makefile.am.

création est mise à disposition sous un contrat Creative Commons