GNU Automake est un logiciel générant des makefiles portables qui peuvent être utilisés par make pour compiler des programmes. Il provient de la Free Software Foundation et fait partie du système de compilation GNU. Les makefiles produits se conforment aux normes de programmation de GNU.
Automake est écrit en Perl et doit être utilisé avec Autoconf, un autre outil GNU. Il contient les commandes suivantes:
Automake peut présenter des difficultés à cause du fait que les versions récentes ne sont pas compatibles avec les plus anciennes. Par exemple, un projet créé avec Automake 1.4 ne fonctionnera pas avec Automake 1.9.
Automake vise à permettre au programmeur d'écrire un makefile dans un langage de plus haut niveau, plutôt que d'avoir à écrire le makefile au complet à la main. Dans les cas simples, il suffit de donner :
À partir de cette information, Automake génère un makefile qui permet à l'usager de :
Automake s'occupe aussi de générer automatiquement les informations de dépendances, afin que lorsqu'un fichier source est modifié, la prochaine invocation de la commande make sache quels fichiers sources ont besoin d'être recompilés en conséquence. Si le compilateur le permet, Automake tente de rendre le système de dépendances dynamique: chaque fois qu'un fichier source est compilé, les dépendances de ce fichier sont mises à jour en demandant au compilateur de regénérer la liste des dépendances de ce fichier. Autrement dit, la gestion des dépendances est un effet de bord du processus de compilation.
Ceci tente d'éviter le problème avec certains systèmes de dépendances statiques où les dépendances ne sont détectées qu'une seule fois quand le programmeur commence à travailler sur un projet. Dans un tel cas, si un fichier source acquiert une nouvelle dépendance (par exemple, si on ajoute une directive #include à un fichier source en C), une disparité apparaît alors entre les vraies dépendances et celles qui sont utilisées par le système de compilation. Le programmeur devrait alors regénérer les dépendances, mais il risque d'oublier de le faire.
Automake facilite aussi la compilation de bibliothèques en générant automatiquement des makefiles qui invoquent GNU Libtool. Le programmeur est alors exempté d'avoir à utiliser Libtool directement et le projet bénéficie d'un outil capable de créer des bibliothèques de façon portable.