Automake

Origem: Wikipédia, a enciclopédia livre.
Automake
The GNU Project
Versão estável 1.16.5 (3 de outubro de 2021)
Sistema operacional Multiplataforma
Gênero(s) Ferramenta de programação
Licença GPL
Página oficial http://sources.redhat.com/automake
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[editar | editar código-fonte]

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[editar | editar código-fonte]

Automake também gera automaticamente as dependências [1], 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.[2]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

Referências

Ligações externas[editar | editar código-fonte]