miércoles, noviembre 11, 2009

El tutorial más corto sobre Autoconf y Automake

Traducción del artículo de Paolo Bonzini (2 de Noviembre del 2009).

El problema con autotools es que se usa para cosas complicadas, y los programadores copian y pegan cosas complicadas aún cuando deben hacer algo simple. El 99% de los programadores sólo necesita acceder a los archivos .pc y generar sencillos Makefiles. De la parte de la portabilidad se encarga glib, sdl, etc.

Se puede usar los siguientes archivos autotools, de sólo 9 líneas, para comenzar desde allí y agregar más cosas luego (incluyendo libtool).
  • configure.ac:
AC_INIT([package], [version])
AM_INIT_AUTOMAKE([foreign subdir-objects])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_HEADERS([config.h]) # no es realmente necesario
AC_PROG_CC # o AC_PROG_CXX
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
  • Makefile.am:
bin_PROGRAMS = hello
hello_SOURCES = hello.c

Suficiente para ejecutar:

$ autoreconf -fvi
$ ./configure
$ make

Para cada paquete que se necesite, se debe agregar:

PKG_CHECK_MODULES([cairo], [cairo])
PKG_CHECK_MODULES([fontconfig], [fontconfig])

y

AM_CFLAGS = $(cairo_CFLAGS) $(fontconfig_CFLAGS)
LIBS += $(cairo_LIBS) $(fontconfig_LIBS)

respectivamente en configure.ac (luego de AC_PROG_CC) y Makefile.am.