Modelo de build-system usando autotools

Além do previamente mencionado CODING, a equipe da Mandriva Conectiva em Manaus também desenvolveu um modelo de build-system baseado em autotools (autoconf, automake, libtool) que acredito ser muito útil. Ele também estava destinado ao esquecimento, mas resolvi ressuscitá-lo e disponibilizá-lo sob a GNU-GPL.

Pra quem o conhece, a parte principal continua a mesma. Eu adicionei algumas funcionalidades (como a geração de bibliotecas, plugins, suporte a pthread) e um pouco de documentação.

Algumas características desse modelo:

  • Recursos modernos do autoconf, automake e libtool;
  • Modular, limpo e facilmente extensível;
  • Suporte a unit-tests em C usando o check;
  • Suporte a code-coverage dos unit-tests com lcov;
  • Suporte a pkgconfig;
  • Modo debug, flags de warnings do gcc, electric-fence, pthreads;
  • make distcheck limpo e funcional;
  • Integrado com doxygen;

Escrevi um pequeno README sobre o uso do modelo que deve ser suficiente para quem já tem os conhecimentos básicos e encontrei um extenso tutorial que deve ser útil até para quem já é experiente. De qualquer modo, vale o bom e velho conselho: “Use the source, Luke”, ele é relativamente intuitivo.

O código está disponível em meu repositório SVN git: http://git.ademar.org/, e deve ser atualizado conforme as necessidades ou contribuições sejam feitas.

BTW, o grosso do trabalho inicial foi feito ainda em 2005 e paradoxalmente, o autor original é o Leonardo Boiko (paradoxalmente porque quem conhece autotools e o leoboiko sabe que o primeiro é conhecido pelo número de gambiarras/xunxos e o segundo pelo às vezes absurdo perfeccionismo). Acho que quando ele ver esse modelo vai querer me matar pelas novas “gambiarras” que adicionei… :-)

Correções e contribuições, como sempre, são muito bem vindas.

Comentários

Loading Facebook Comments ...
Loading Disqus Comments ...

7 Comments

  1. Vanderson Rodrigues

    Caramba!! Isso vai quebrar uma árvore. Muito bom.
    valeus.

    Reply
  2. ademar

    Link pra um paper que explica por que usar makefiles recursivos é uma idéia ruim: (sugestão recebida por e-mail do leoboiko)
    http://members.canb.auug.org.au/~millerp/rmch/recu-make-cons-harm.html

    Nesse template, é usado um único makefile pra todo o projeto (libs, plugins, programas, etc). Isso é uma boa prática. IMHO, múltiplos makefiles devem ser utilizados apenas quando o projeto é segmentado em múltiplos sub-projetos – com diferentes mantenedores.

    Reply
  3. ademar

    Encontrei um tutorial que parece promissor. É bastante extenso e cobre as técnicas mais modernas de uso do autotools:
    http://www-src.lip6.fr/homepages/Alexandre.Duret-Lutz/autotools.html

    Atualizei o texto do artigo pra referenciar esse tutorial também.

    Reply
  4. Adenilson Cavalcanti

    Ademar

    Olhei no repositorio sobre a licenca, em qual arquivo que aparece?

    E voce escolheu a GPL por algum motivo especial? Por que nao LGPL?

    Abraco

    Adenilson

    Reply
  5. ademar

    Adenilson, adicionei uma nota no README e também adicionei uma cópia da GNU-GPL no repositório. Obrigado por ter notado isso. :-)

    Creio não haver diferença prática entre a GPL e LGPL no caso desse build-system, pois não há o processo de link-edição entre os scripts. É possível argumentar que um novo arquivo .m4 seja equivalente a link-edição, mas acredito que esse cenário seja pouco relevante, dado que esse tipo de arquivo é bem simples e o código fonte sempre é visível.

    Note que o fato do build-system ser GPL não implica que o projeto que o use tenha que ser GPL ou que o próprio build-system tenha que ser público. É perfeitamente possível ter um projeto fechado que utilize esse build-system desde que o build-system em sí nunca seja distribuído.

    A motivação pra escolha da GPL é que modificações no build-system devem se tornar públicas e licenciadas sob a GPL se distribuídas.

    Bem, essa é a idéia original, mas estou aberto a sugestões.

    Reply
  6. zpuc

    Massa. Vou guardar isso nem que seja de recordação. he he he :]

    Reply
  7. Théo

    Boa noite, estou pesquisando na web uma maneira de montar uma jukebox. Me parece que vc já projetou uma na época da faculdade, se possivil gostaria de algumas dicas. Desde já agradeço.

    Reply

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *