thumb|350px| Fluxograma do autoconf e automake GNU Automake é uma ferramenta de programação que produz arquivos makefile portáveis para o uso do programa make, usado na compilação de software. É produzido pela Free Software Foundation como um dos programas GNU, e é parte do GNU build system. Os makefiles produzidos seguem padrões de codificação GNU.

Ele é escrito em linguagem de programação Perl e deve ser usado com o autoconf. Automake contém os seguintes comandos:

aclocal automake

aclocal, entretanto, é um programa de propósito geral que pode ser útil para usuários autoconf. O GNU Compiler Collection, por exemplo, usa aclocal mesmo sendo o makefile escrito manualmente.

Como Autoconf, Automake pode ser difícil de lidar porque ele não é inteiramente compatível com versões anteriores. Por exemplo, um projeto criado com automake 1.4 pode não necessariamente funcionar com automake 1.9.

Enfoque Automake tenta facilitar o trabalho de escrever um makefile, utilizando linguagem de alto nível, em contraposição de ter de escrever todo o arquivo manualmente. Ele pede: uma linha que declara o nome do programa a ser construído; uma lista de arquivos fontes; uma lista de opções para comandos de linha a serem passados para o compilador (diretórios onde os arquivos podem ser encontrados); uma lista de opções para comandos de linha a serem passados para o linker (quais bibliotecas o programa utiliza e em que diretórios eles podem ser achados).

Dessa informação, Automake gera um makefile que permite ao usuário: compilar o programa; limpar (isto é, remove os arquivos intermediários da compilação); instala o programa em diretórios padrão; desinstala o programa de onde ele foi instalado; cria um arquivo de distribuição de código (comumente chamado um tarball); testa se esse arquivo é autosuficiente, e em particular se o programa pode ser compilado num diretório outro que não o diretório em que será utilizado.

Geração de dependências Automake também gera automaticamente as dependências de dependências Traceamento Automático de Dependências, Manual do Automake, de modo que quando o arquivo fonte é modificado, a próxima invocação do comando make sabe quais os arquivos fonte precisam recompilação. Se o compilador permitir, Automake tenta fazer um sistema dinâmico de dependências: quando o arquivo fonte é compilado, que dependências de arquivos são atualizadas perguntando ao compilador para regenerar a lista de recompilação. Em outras palavras, traceamento de dependências é o efeito colateral de um processo de compilação. Essa tentativa de evitar o problema com dependências de sistema estáticas, onde as dependências são detectadas somente quando o programador começa a trabalhar no projeto.Dependency Tracking in Automake, Automake Manual

Nesse caso, se um arquivo fonte ganha uma nova dependência (por exemplo, se o programador acrescenta uma nova directiva #include em um arquivo fonte C) e, em seguida, é introduzida uma discrepância entre o real dependências e aqueles que são utilizados pelo sistema de compilação . O programador deve, então, regenerar as dependências, mas corre o risco de nos esquecermos de o fazer.

No caso geral, automake gera dependências através da bundled depcomp script, que irá invocar o compilador adequadamente ou retroceder para makedepend. Se o compilador é suficientemente recente versão do gcc, porém, a dependência automake irá inline geração código para chamar o gcc diretamente.

Libtool Automake pode também ajudar na compilação de bibliotecas gerando automaticamente makefiles que irão invocar o Libtool. O programador é então aliviado de ter de saber como chamar a Libtool diretamente, e o projeto se benefecia do uso de uma ferramenta criação de biblioteca portável.

Saneando o ambiente de construção Muitos Autoconf configuram scripts de saída com a mensagem "checking whether build environment is sane..." cedo na fase de configuração. Essa mensagem é o resultado de testes feitos pela macro do Automake: AM_SANITY_CHECK. Ela checa se o arquivo criado no diretório de construção é mais novo que o arquivo fonte do diretório de fontes. Pode falhar em sistemas onde o relógio não é ajustado. Essa macro roda automaticamente de AM_INIT_AUTOMAKE.

Ver também CMake imake Flowtracer

Gary V. Vaughan, Ben Elliston, Tom Tromey: Gnu Autoconf, Automake, and Libtool, Sams, ISBN 1-57870-190-2

Ligações externas Automake home page Versão online de The Goat Book, também chamado, Autobook Tutorial "Aprendendo Autoconf e Automake" por Eleftherios Gkioulekas Tutorial para inciantes "Autotools Tutorial" por Sarah George Artigo "Usando Automake e Autoconf com C++" por Murray Cumming Autotoolset home page The "Autotools Tutorial" by Alexandre Duret-Lutz introduz Autoconf, Automake, Libtool, e Gettext. Aprendendo as ferramentas de desenvolvimento GNU

Categoria:Projeto GNU Categoria:Ferramentas de compilação Categoria:Software livre multiplataforma