automake ed autoconf

Francesco Casadei casadeif a yahoo.it
Lun 25 Ott 2004 18:22:11 CEST


Stefano wrote:
> Ho una domanda da porvi che potra' sermbrarvi banale:
> vorrei creare dei file di Make utilizzando uno script di bootstrap che
> si appoggia su automake ed autoconf, ora lo script di bootstrap sotto
> Linux funziona benissimo in quanto trova gli eseguibili automake ed
> autoconf mentre con FreeBSD non ne vuole sapere. Ho visto che nella dir
> /usr/local/bin ci sono i vari auto* seguiti dal numero di versione ma
> non c'e' il wrapper automake ed autoconf
> 
> ciao
> 
> S.
> 
> 
> 

Ho affrontato qualcosa di simile quando ho dovuto fare per un esame un 
progetto in C che doveva girare su FreeBSD e Linux.

In allegato trovi lo script che ho usato io.

In pratica è molto rudimentale: esegue un ciclo sui possibili suffissi 
con cui può terminare ciascun eseguibile di Automake, Autoconf e 
Libtool. I suffissi li puoi configurare nelle variabili AC_VERSIONS, 
AM_VERSIONS e LT_VERSIONS.

Nel progetto originale ho usato Autconf 2.57, Automake 1.7 e libtool 1.5 
perciò ho impostato:

AC_VERSIONS='257 -2.57 -257'
AM_VERSIONS='17 -1.7 -17'
LT_VERSIONS='15 -1.5 -15'

In questo caso lo script cerca nell'ordine:

autoconf257, autoconf-2.57, autoconf-257, autoconf
automake17, automake-1.7, automake-17, automake
libtool15, libtool-1.5, libtool-15, libtool.

Ora non ricordo quale convenzione usa FreeBSD e quale Linux, ma sapendo 
come invocare gli autotools su ogni piattaforma che vuoi supportare, 
basta che inserisci i suffissi che ti servono. Ad esempio se vuoi 
supportare più versioni, diciamo Autoconf 2.53 e seguenti e Automake 1.5 
e seguenti:

# This project requires at least Autoconf 2.53, Automake 1.5
AC_VERSIONS='259 -2.59 -259 258 -2.58 -258 257 -2.57 -257'
AC_VERSIONS="${AC_VERSIONS} 256 -2.56 -256 255 -2.55 -255"
AC_VERSIONS="${AC_VERSIONS} 254 -2.54 -254 253 -2.53 -253"
AM_VERSIONS='18 -1.8 -18 17 -1.7 -17 16 -1.6 -16 15 -1.5 -15'

Spero di esserti stato d'aiuto.

	Francesco Casadei
-------------- parte successiva --------------
#! /bin/sh
#
# Script to run when a Makefile is not yet in place. It executes GNU
# Autotools in the correct order to generate a configure script, which can
# then be used to produce a Makefile.
#
# Author: Francesco Casadei <f.casadei a tiscali.it>
#
# $Id: bootstrap,v 1.3 2003/10/25 13:34:55 casimiro Exp $

# This project uses Autoconf 2.57, Automake 1.7 and Libtool 1.5
AC_VERSIONS='257 -2.57 -257'
AM_VERSIONS='17 -1.7 -17'
LT_VERSIONS='15 -1.5 -15'

# Figure out under which name autoconf is installed
for suffix in ${AC_VERSIONS} ""
do
    eval autoconf${suffix} --version 2>/dev/null | grep '2\.57' >/dev/null
    if test "x$?" = "x0"
    then
        ac_suffix=${suffix}
        ac_found=yes
    fi
done
if test ${ac_found-no} = no
then 
    echo "Error: could not find GNU Autoconf 2.57"
    exit 1
fi

# Figure out under which name automake is installed
for suffix in ${AM_VERSIONS} ""
do
    eval automake${suffix} --version 2>/dev/null | grep '1\.7' >/dev/null
    if test "x$?" = "x0"
    then
        am_suffix=${suffix}
        am_found=yes
    fi
done
if test ${am_found-no} = no
then 
    echo "Error: could not find GNU Automake 1.7"
    exit 1
fi

# Figure out under which name libtoolize is installed
for suffix in ${LT_VERSIONS} ""
do
    eval libtoolize${suffix} --version 2>/dev/null | grep '1\.5' >/dev/null
    if test "x$?" = "x0"
    then
        lt_suffix=${suffix}
        lt_found=yes
    fi
done
if test ${lt_found-no} = no
then 
    echo "Error: could not find GNU Libtool 1.5"
    exit 1
fi

# Output commands
set -x

# Collect M4 macros in aclocal.m4, searching also ./config for includes
aclocal${am_suffix} -I config

# Run libtoolize to add libtool support to sniffire project
libtoolize${lt_suffix} --force --copy

# Scan configure.ac to generate config headers
autoheader${ac_suffix}

# Run automake without enforcing strict GNU standards and copy missing files
env AUTOCONF=autoconf${ac_suffix} \
    automake${am_suffix} --foreign --add-missing --copy

# Finally, generate configure script from configure.ac
autoconf${ac_suffix}


Maggiori informazioni sulla lista esperti