From b545a7e57de94715ec86060ee875abc0a9784567 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Mon, 17 Jul 2006 08:22:50 +0000
Subject: [PATCH] Fix some autotools related problems

Huge thanks to gnarlie for helping me find and diagnose
several problems stemming from autogen.sh on FreeBSD 6.1

We require autoconf 2.58 for autogen.sh, but it seems like
that's always been the case, we just never caught it before :/

"bash ./configure" just about sums up what I want to do right now...

git-svn-id: https://svn.musicpd.org/mpd/trunk@4384 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 autogen.sh   | 190 +++++++++++++++++++++++++++------------------------
 configure.ac |  14 +++-
 2 files changed, 111 insertions(+), 93 deletions(-)

diff --git a/autogen.sh b/autogen.sh
index 769929afc..6b0787ba8 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,44 +1,38 @@
 #!/bin/sh
 # Run this to set up the build system: configure, makefiles, etc.
-# (based on the version in enlightenment's cvs)
+# (at one point this was based on the version in enlightenment's cvs)
 
 package="mpd"
 
-olddir=`pwd`
-srcdir=`dirname $0`
+olddir="`pwd`"
+srcdir="`dirname $0`"
 test -z "$srcdir" && srcdir=.
-
 cd "$srcdir"
-DIE=0
-
-echo "checking for autoconf... "
-(autoconf --version) < /dev/null > /dev/null 2>&1 || {
-        echo
-        echo "You must have autoconf installed to compile $package."
-        echo "Download the appropriate package for your distribution,"
-        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
-        DIE=1
-}
-
-VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9]\).*/\1/"
+DIE=
+AM_VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9]\).*/\1/"
+AC_VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9][0-9]\).*/\1/"
 VERSIONMKINT="sed -e s/[^0-9]//"
-
-# define AM_FORCE_VERSION if you want to force a particular version of
-# automake and aclocal
 if test -n "$AM_FORCE_VERSION"
 then
 	AM_VERSIONS="$AM_FORCE_VERSION"
 else
 	AM_VERSIONS='1.6 1.7 1.8 1.9'
 fi
+if test -n "$AC_FORCE_VERSION"
+then
+	AC_VERSIONS="$AC_FORCE_VERSION"
+else
+	AC_VERSIONS='2.58 2.59'
+fi
 
 versioned_bins ()
 {
 	bin="$1"
-	for i in $AM_VERSIONS
+	needed_int=`echo $VERNEEDED | $VERSIONMKINT`
+	for i in $VERSIONS
 	do
 		i_int=`echo $i | $VERSIONMKINT`
-		if test $i_int -ge $VERNEEDED
+		if test $i_int -ge $needed_int
 		then
 			echo $bin-$i $bin$i $bin-$i_int $bin$i_int
 		fi
@@ -46,73 +40,84 @@ versioned_bins ()
 	echo $bin
 }
 
-# do we need automake?
-if test -r Makefile.am; then
-  AM_NEEDED=`fgrep AUTOMAKE_OPTIONS Makefile.am | $VERSIONGREP`
-  if test -z $AM_NEEDED; then
-    echo -n "checking for automake... "
-    AUTOMAKE=automake
-    ACLOCAL=aclocal
-    if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then
-      echo "no"
-      AUTOMAKE=
-    else
-      echo "yes"
-    fi
-  else
-    echo -n "checking for automake $AM_NEEDED or later... "
-    VERNEEDED=`echo $AM_NEEDED | $VERSIONMKINT`
-    for am in `versioned_bins automake`; do
-      ($am --version < /dev/null > /dev/null 2>&1) || continue
-      ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
-      if test $ver -ge $VERNEEDED; then
-        AUTOMAKE=$am
-        echo $AUTOMAKE
-        break
-      fi
-    done
-    test -z $AUTOMAKE &&  echo "no"
-    echo -n "checking for aclocal $AM_NEEDED or later... "
-    for ac in `versioned_bins aclocal`; do
-      ($ac --version < /dev/null > /dev/null 2>&1) || continue
-      ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
-      if test $ver -ge $VERNEEDED; then
-        ACLOCAL=$ac
-        echo $ACLOCAL
-        break
-      fi
-    done
-    test -z $ACLOCAL && echo "no"
-  fi
-  test -z $AUTOMAKE || test -z $ACLOCAL && {
-        echo
-        echo "You must have automake installed to compile $package."
-        echo "Download the appropriate package for your distribution,"
-        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
-        exit 1
-  }
+for c in autoconf autoheader automake aclocal
+do
+	uc=`echo $c | tr a-z A-Z`
+	eval "val=`echo '$'$uc`"
+	if test -n "$val"
+	then
+		echo "$uc=$val in environment, will not attempt to auto-detect"
+		continue
+	fi
+
+	case "$c" in
+	autoconf|autoheader)
+		VERNEEDED=`fgrep AC_PREREQ configure.ac | $AC_VERSIONGREP`
+		VERSIONS="$AC_VERSIONS"
+		pkg=autoconf
+		;;
+	automake|aclocal)
+		VERNEEDED=`fgrep AUTOMAKE_OPTIONS Makefile.am | $AM_VERSIONGREP`
+		VERSIONS="$AM_VERSIONS"
+		pkg=automake
+		;;
+	esac
+	printf "checking for $c ... "
+	for x in `versioned_bins $c`; do
+		($x --version < /dev/null > /dev/null 2>&1) > /dev/null 2>&1
+		if test $? -eq 0
+		then
+			echo $x
+			eval $uc=$x
+			break
+		fi
+	done
+	eval "val=`echo '$'$uc`"
+	if test -z "$val"
+	then
+		if test $c = $pkg
+		then
+			DIE="$DIE $c=$VERNEEDED"
+		else
+			DIE="$DIE $c($pkg)=$VERNEEDED"
+		fi
+	fi
+done
+
+if test -n "$LIBTOOLIZE"
+then
+	echo "LIBTOOLIZE=$LIBTOOLIZE in environment," \
+			"will not attempt to auto-detect"
+else
+	printf "checking for libtoolize ... "
+	for x in libtoolize glibtoolize
+	do
+		($x --version < /dev/null > /dev/null 2>&1) > /dev/null 2>&1
+		if test $? -eq 0
+		then
+			echo $x
+			LIBTOOLIZE=$x
+			break
+		fi
+	done
 fi
 
-echo -n "checking for libtool... "
-for LIBTOOLIZE in libtoolize glibtoolize nope; do
-  (which $LIBTOOLIZE) > /dev/null 2>&1 && break
-done
-if test x$LIBTOOLIZE = xnope; then
-  echo "nope."
-  LIBTOOLIZE=libtoolize
-else
-  echo $LIBTOOLIZE
+if test -z "$LIBTOOLIZE"
+then
+	DIE="$DIE libtoolize(libtool)"
 fi
-($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
-	echo
-	echo "You must have libtool installed to compile $package."
-	echo "Download the appropriate package for your system,"
+
+if test -n "$DIE"
+then
+	echo "You must have the following installed to compile $package:"
+	for i in $DIE
+	do
+		printf '  '
+		echo $i | sed -e 's/(/ (from /' -e 's/=\(.*\)/ (>= \1)/'
+	done
+	echo "Download the appropriate package(s) for your system,"
 	echo "or get the source from one of the GNU ftp sites"
 	echo "listed in http://www.gnu.org/order/ftp.html"
-	DIE=1
-}
-
-if test "$DIE" -eq 1; then
         exit 1
 fi
 
@@ -122,22 +127,27 @@ ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $PWD/m4"
 if [ -d /usr/local/share/aclocal ]; then
 	ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I /usr/local/share/aclocal"
 fi
+
+# if [ -d "/usr/local/share/`basename $ACLOCAL`" ]; then
+	# ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I /usr/local/share/`basename $ACLOCAL`"
+# fi
+
 echo "  $ACLOCAL $ACLOCAL_FLAGS"
 $ACLOCAL $ACLOCAL_FLAGS
 
-echo "  autoheader"
-autoheader
+echo "  $AUTOHEADER"
+$AUTOHEADER
 
 echo "  $LIBTOOLIZE --automake"
 $LIBTOOLIZE --automake
 
 echo "  $AUTOMAKE --add-missing $AUTOMAKE_FLAGS"
-$AUTOMAKE --add-missing $AUTOMAKE_FLAGS 
+$AUTOMAKE --add-missing $AUTOMAKE_FLAGS
 
-echo "  autoconf"
-autoconf
+echo "  $AUTOCONF"
+$AUTOCONF
 
-cd $olddir
+cd "$olddir"
 if test x$NOCONFIGURE = x; then
-	$srcdir/configure "$@" && echo
+	"$srcdir"/configure "$@" && echo
 fi
diff --git a/configure.ac b/configure.ac
index 5d9f3bdf8..000805232 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl AC_INIT(src/main.c)
 dnl AM_INIT_AUTOMAKE(mpd, 0.12.0)
 
-AC_PREREQ(2.52)
+AC_PREREQ(2.58)
 AC_INIT(mpd, 0.12.0, warren.dukes@gmail.com)
 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERSION)
 
@@ -234,7 +234,11 @@ if test x$enable_id3 = xyes; then
 	CFLAGS=$oldcflags
 	LIBS=$oldlibs
 	CPPFLAGS=$oldcppflags
-	AC_DEFINE(HAVE_ID3TAG,1,[Define to use id3tag])
+	if $use_libid3tag = xyes; then
+		AC_DEFINE(HAVE_ID3TAG,1,[Define to use id3tag])
+	else
+		enable_id3=no
+	fi
 fi
 
 MAD_SUBDIR=""
@@ -274,7 +278,11 @@ if test x$enable_mp3 = xyes; then
 	CFLAGS=$oldcflags
 	LIBS=$oldlibs
 	CPPFLAGS=$oldcppflags
-	AC_DEFINE(HAVE_MAD,1,[Define to use libmad])
+	if test x$use_libmad = xyes; then
+		AC_DEFINE(HAVE_MAD,1,[Define to use libmad])
+	else
+		enable_mp3=no
+	fi
 fi
 
 if test x$enable_mpc = xyes; then