Skip to content
Snippets Groups Projects
Forked from Core Modules / dune-common
3905 commits behind the upstream repository.
dune-autogen 3.97 KiB
#!/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"