GNU Autoconf es una herramienta para producir scripts de configuración para construir, instalar y empaquetar software en sistemas informáticos donde está disponible un shell Bourne .
Autoconf es agnóstico en cuanto a los lenguajes de programación utilizados, pero a menudo se utiliza para proyectos que utilizan C , C++ , Fortran , Fortran 77, Erlang o Objective-C .
Un script de configuración configura un paquete de software para su instalación en un sistema de destino en particular. Después de ejecutar una serie de pruebas en el sistema de destino, el script de configuración genera archivos de encabezado y un archivo makefile a partir de plantillas, personalizando así el paquete de software para el sistema de destino. Junto con Automake y Libtool , Autoconf forma el GNU Build System , que comprende varias otras herramientas, en particular Autoheader.
El desarrollador especifica el comportamiento deseado del script de configuración escribiendo una lista de instrucciones en el lenguaje GNU m4 en un archivo llamado "configure.ac". Hay disponible una biblioteca de macros m4 predefinidas para describir instrucciones comunes del script de configuración. Autoconf transforma las instrucciones en "configure.ac" en un script de configuración portátil. El sistema que realizará la compilación no necesita tener instalado Autoconf: Autoconf es necesario únicamente para compilar el script de configuración, que generalmente se envía con el software.
Autoconf fue creado en el verano de 1991 por David Mackenzie para apoyar su trabajo en la Free Software Foundation . En los años siguientes, creció hasta incluir mejoras de diversos autores y se convirtió en el sistema de configuración de compilación más utilizado para escribir software libre o de código abierto portable .
Autoconf es similar al paquete Metaconfig que utiliza Perl . El sistema imake que utilizaba anteriormente X Window System (hasta X11R6.9) está estrechamente relacionado, pero tiene una filosofía diferente.
El enfoque de Autoconf para la portabilidad es probar las características , no las versiones . Por ejemplo, el compilador C nativo en SunOS 4 no era compatible con ISO C. Sin embargo, es posible que el usuario o el administrador hayan instalado un compilador compatible con ISO C. Un enfoque basado puramente en versiones no detectaría la presencia del compilador ISO C, pero un enfoque de prueba de características podría descubrir el compilador ISO C que el usuario había instalado. La razón de este enfoque es obtener las siguientes ventajas:
Autoconf proporciona una amplia documentación sobre la falta de portabilidad de muchas construcciones de shell POSIX a shells más antiguos y los errores que presentan. También proporciona M4SH, un reemplazo basado en macros para la sintaxis de shell. [2]
Hay algunas críticas que afirman que Autoconf utiliza tecnologías obsoletas, tiene muchas restricciones heredadas y complica escenarios simples innecesariamente para el autor de scripts configure.ac . En particular, los puntos débiles de Autoconf que se citan con frecuencia son:
Debido a estas limitaciones, varios proyectos que usaban GNU Build System cambiaron a sistemas de compilación diferentes, como CMake y SCons . [3] [9]