X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=autogen.sh;h=80b67c3872c310e98a3e87eee92f3d8736010f5d;hp=a1d7e271ca02243fdba77fdbdac50b196e55d45f;hb=bf0280bf589573c11529999a73e9ec642dea9d61;hpb=bccbfe5ab55c8aa5bbb0fb6e209936ff1359605a diff --git a/autogen.sh b/autogen.sh index a1d7e27..80b67c3 100755 --- a/autogen.sh +++ b/autogen.sh @@ -20,12 +20,62 @@ set -e set -v -export AUTOMAKE='automake --foreign' -mkdir -p daemon/m4 -aclocal -libtoolize -autoreconf -i -pushd daemon -autoreconf -i -popd -./configure "$@" + +# ocaml/.depend is updated automatically. However, as it's included by +# ocaml/Makefile.am we need to bootstrap it here. +touch ocaml/.depend + +# Ensure that whenever we pull in a gnulib update or otherwise change to a +# different version (i.e., when switching branches), we also rerun ./bootstrap. +curr_status=.git-module-status +t=$(git submodule status|sed 's/^[ +-]//;s/ .*//') +if test "$t" = "$(cat $curr_status 2>/dev/null)"; then + : # good, it's up to date +else + echo running bootstrap... + ./bootstrap && echo "$t" > $curr_status +fi + +CONFIGUREDIR=. + +# Run configure in BUILDDIR if it's set +if [ ! -z "$BUILDDIR" ]; then + mkdir -p $BUILDDIR + cd $BUILDDIR + + CONFIGUREDIR=.. +fi + +# Ensure that an ocaml package is present for build-from sources. +# This is *not* for anything that is required at configure-time +# when configure is run from a distribution tarball. From those, +# nothing ocaml-related is required. +# ocamlfind cannot detect the presence of -devel packages directly, +# so if $pkg ends in -devel, first check for the base package, and +# if that's found, check for the existence of $base.cmxa in the +# resulting directory. +require_ocaml_pkg() +{ + pkg=$1 + case $pkg in + *-devel) + local base=${pkg%%-devel} + local dir=$(ocamlfind query "$base") || return 1 + test -f "$dir/$base.cmxa" || return 1 + ;; + *) ocamlfind query "$pkg" > /dev/null 2>&1 || return 1;; + esac + return 0 +} + +{ require_ocaml_pkg xml-light && require_ocaml_pkg xml-light-devel; } \ + || { echo "you must have ocaml, ocamlfind, ocaml-xml-light" \ + "and ocaml-xml-light-devel" >&2; exit 1; } + +# If no arguments were specified and configure has run before, use the previous +# arguments +if test $# == 0 && test -x ./config.status; then + ./config.status --recheck +else + $CONFIGUREDIR/configure "$@" +fi