#!/bin/sh
#
-# Copyright © 2011-2012 Nick Bowler
+# Copyright © 2011-2012, 2015, 2021-2023 Nick Bowler
#
# Simple script to get started from a fresh git checkout.
#
scriptname=$0
-err() {
- printf '%s: %s\n' "$scriptname" "$@" 1>&2
-}
-
-die() {
- err "$@"
- exit 1
-}
+err() { printf '%s: %s\n' "$scriptname" "$*" 1>&2; }
+die() { err "$@"; exit 1; }
+: ${LIBTOOLIZE=libtoolize}
: ${AUTORECONF=autoreconf}
+: ${AUTOMAKE=automake}
: ${GNULIB=gnulib}
: ${GIT=git}
: ${PERL=perl}
$GIT submodule update --init || err "Failed to update submodules from git."
if test -x $GNULIB/gnulib-tool; then
- $GNULIB/gnulib-tool --update -S || die "Failed to update Gnulib."
+ $GNULIB/gnulib-tool --update -S || die "Failed to update Gnulib."
else
- die "Gnulib sources are not properly installed in gnulib/."
+ err "Gnulib sources are not properly installed in $GNULIB/"
+ cat >&2 <<'EOF'
+
+To bootstrap this package using an external Gnulib, you can set the GNULIB
+environment variable to indicate the location of the Gnulib sources.
+EOF
+
+ test ! -f configure || cat >&2 <<'EOF'
+
+However, it seems this package is already bootstrapped. It should not
+normally be necessary to run this script from a release tarball.
+EOF
+ exit 1
fi
$PERL common/scripts/fix-gnulib.pl -o lib/gnulib.mk -i lib/gnulib.mk.in \
- || die "Failed to fixup Gnulib makefile fragment."
+ || die "Failed to fixup Gnulib makefile fragment."
-$AUTORECONF -fis
+# Frustratingly, libtoolize has changed the name of its nonrecursive ltdl
+# makefile output, which broke all packages depending on previous documented
+# behaviour. Work around the issue by renaming the output.
+rm -f libltdl/ltdl.mk
+$LIBTOOLIZE -f || die "Failed to run libtoolize."
+test ! -f libltdl/Makefile.inc || mv -f libltdl/Makefile.inc libltdl/ltdl.mk.in
+test ! -f libltdl/ltdl.mk || mv -f libltdl/ltdl.mk libltdl/ltdl.mk.in
+
+$PERL common/scripts/fix-ltdl.pl -o libltdl/ltdl.mk -i libltdl/ltdl.mk.in \
+ || die "Failed to fixup libltdl makefile fragment."
+
+# Punt some automake-generated files so that Gentoo's wrapper script doesn't
+# try to detect the automake version in use.
+rm -f Makefile.in aclocal.m4
+LIBTOOLIZE=true $AUTORECONF -fis || exit
+
+amdir=`$AUTOMAKE --print-libdir`
+if test -f "$amdir/INSTALL"; then
+ ln -sf "$amdir/INSTALL" INSTALL
+fi