#!/bin/bash # barf on errors set -e usage () { echo "Usage: dune-autogen DUNE_MODULE_PATH_LIST [options]" echo " --ac=, --acversion=VERSION use a specific VERSION of autoconf" echo " --am=, --amversion=VERSION use a specific VERSION of automake" echo " -h, --help you already found this :-)" } ## get my name... grep '^Module:' dune.module >/dev/null || echo "Parser Error: Module entry missing in dune.module" name= while read head name rest do case "$head" in Module:) break;; Module:*) name="${head#Module:}"; break;; esac name= done <dune.module ## dune-all.m4 rm -f dune-all.m4 rm -f $name.m4 # add current dir to PATH PATH=`dirname "$0"`:$PATH # guess libtool prefix if test -n "$LIBTOOLIZE"; then LIBTOOL_prefix=`dirname "\`dirname "$LIBTOOLIZE"\`"` PATH=$LIBTOOL_prefix:$PATH ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I \"$LIBTOOL_prefix/share/aclocal\"" fi for OPT in "$@"; do set +e # stolen from configure... # when no option is set, this returns an error code arg=`expr "x$OPT" : 'x[^=]*=\(.*\)'` set -e case "$OPT" in --ac=*|--acversion=*) if test "x$arg" = "x"; then usage; exit 1; fi ACVERSION=$arg ;; --am=*|--amversion=*) if test "x$arg" = "x"; then usage; exit 1; fi AMVERSION=$arg ;; -h|--help) usage ; exit 0 ;; *) if test -d "$OPT/m4"; then ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I \"$OPT/m4\"" fi if test -z "$am_dir"; then # if am_dir is already set, then we already find dune-common # and did set am_dir correctly. if test -f "$OPT/dune-common.pc.in" ; then # if test \( -d "$OPT/am" \) -a ! \( -h "$OPT/am" \) ; then echo "Found am directory $OPT/am" am_dir="$OPT/am" fi if test -d "$OPT/share/dune/aclocal"; then ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $OPT/share/dune/aclocal" fi if test -d "$OPT/share/aclocal"; then ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $OPT/share/aclocal" fi if test -d "$OPT/share/dune-common/am"; then echo "Found am directory $OPT/share/dune-common/am" am_dir="$OPT/share/dune-common/am" fi fi PATH=$OPT/bin:$PATH ;; esac done ## report parameters if test "x$ACVERSION" != "x"; then echo "Forcing autoconf version �$ACVERSION�" if ! which autoconf$ACVERSION > /dev/null; then echo echo "Error: Could not find autoconf$ACVERSION" echo " Did you specify a wrong version?" exit 1 fi fi if test "x$AMVERSION" != "x"; then echo "Forcing automake version �$AMVERSION�" if ! which automake$AMVERSION > /dev/null; then echo echo "Error: Could not find automake$AMVERSION" echo " Did you specify a wrong version?" exit 1 fi fi ## run autotools echo "--> dunedoxynize..." dunedoxynize echo "--> libtoolize..." # this script won't rewrite the files if they already exist. This is a # PITA when you want to upgrade libtool, thus I'm setting --force if [ x`type -t glibtoolize` = xfile ]; then LIBTOOLIZE=glibtoolize fi ${LIBTOOLIZE-libtoolize} --force # writing privat m4 file echo -n "--> " dunecontrol --only=$name m4create # prepare everything echo "--> aclocal..." rm -f aclocal.m4 rm -rf autom4te.cache eval aclocal$AMVERSION "-I . $ACLOCAL_FLAGS" # create a link to the dune-common am directory if [ "$name" != "dune-common" ]; then if [ -n "$am_dir" ] && [ -d "$am_dir" ]; then echo "--> linking dune-common/am..." rm -f am ln -s "$am_dir" am else echo echo "Error: Could not find dune-common/am!" usage exit 1 fi fi # applications should provide a config.h for now echo "--> autoheader..." autoheader$ACVERSION echo "--> automake..." automake$AMVERSION -W all --add-missing echo "--> autoconf..." autoconf$ACVERSION ## tell the user what to do next echo "Now run ./configure to setup $name"