| 1 | #!sh.exe
|
|---|
| 2 | # Copyright 1999-2006 Gentoo Foundation
|
|---|
| 3 | # Distributed under the terms of the GNU General Public License v2
|
|---|
| 4 | # $Header: /var/cvsroot/gentoo-x86/sys-devel/autoconf-wrapper/files/ac-wrapper-4.sh,v 1.4 2006/11/26 14:35:36 vapier Exp $
|
|---|
| 5 |
|
|---|
| 6 | # Based on the ac-wrapper.pl script provided by MandrakeSoft
|
|---|
| 7 | # Rewritten in bash by Gregorio Guidi
|
|---|
| 8 | #
|
|---|
| 9 | # Executes the correct autoconf version.
|
|---|
| 10 | #
|
|---|
| 11 | # - defaults to newest version available (hopefully autoconf-2.60)
|
|---|
| 12 | # - runs autoconf 2.13 if:
|
|---|
| 13 | # - envvar WANT_AUTOCONF is set to `2.1'
|
|---|
| 14 | # -or-
|
|---|
| 15 | # - `ac{local,include}.m4' or `configure.{in,ac}' have AC_PREREQ(2.1) (not higher)
|
|---|
| 16 | # -or-
|
|---|
| 17 | # - `configure' is already present and was generated by autoconf 2.13
|
|---|
| 18 |
|
|---|
| 19 | if [ "${0##*/}" = "ac-wrapper.sh" ] ; then
|
|---|
| 20 | echo "Don't call this script directly" >&2
|
|---|
| 21 | exit 1
|
|---|
| 22 | fi
|
|---|
| 23 |
|
|---|
| 24 | if [ "${WANT_AUTOCONF}" = "2.1" -a "${0##*/}" = "autom4te" ] ; then
|
|---|
| 25 | echo "ac-wrapper: Autoconf 2.13 doesn't contain autom4te." >&2
|
|---|
| 26 | echo " Either unset WANT_AUTOCONF or don't execute anything" >&2
|
|---|
| 27 | echo " that would use autom4te." >&2
|
|---|
| 28 | exit 1
|
|---|
| 29 | fi
|
|---|
| 30 |
|
|---|
| 31 | #
|
|---|
| 32 | # Set up bindings between actual version and WANT_AUTOCONF
|
|---|
| 33 | #
|
|---|
| 34 | vers="2.61:2.5 2.60:2.5 2.59:2.5 2.13:2.1"
|
|---|
| 35 |
|
|---|
| 36 | binary=""
|
|---|
| 37 | for v in ${vers} ; do
|
|---|
| 38 | auto_ver=${v%:*}
|
|---|
| 39 | if [ -z "${binary}" ] && [ -x "${0}-${auto_ver}" ] ; then
|
|---|
| 40 | binary="${0}-${auto_ver}"
|
|---|
| 41 | fi
|
|---|
| 42 | done
|
|---|
| 43 | if [ -z "${binary}" ] ; then
|
|---|
| 44 | echo "ac-wrapper: Unable to locate any usuable version of autoconf." >&2
|
|---|
| 45 | echo " I tried these versions: ${vers}" >&2
|
|---|
| 46 | echo " With a base name of '${0}'." >&2
|
|---|
| 47 | exit 1
|
|---|
| 48 | fi
|
|---|
| 49 |
|
|---|
| 50 | #
|
|---|
| 51 | # Check the WANT_AUTOCONF setting. We accept a whitespace delimited
|
|---|
| 52 | # list of autoconf versions.
|
|---|
| 53 | #
|
|---|
| 54 | if [ -n "${WANT_AUTOCONF}" ] ; then
|
|---|
| 55 | for v in ${vers} x ; do
|
|---|
| 56 | if [ "${v}" = "x" ] ; then
|
|---|
| 57 | echo "ac-wrapper: warning: invalid WANT_AUTOCONF '${WANT_AUTOCONF}'; ignoring." >&2
|
|---|
| 58 | unset WANT_AUTOCONF
|
|---|
| 59 | break
|
|---|
| 60 | fi
|
|---|
| 61 |
|
|---|
| 62 | auto_ver=${v%:*}
|
|---|
| 63 | want_ver=${v#*:}
|
|---|
| 64 | for wx in ${WANT_AUTOCONF} ; do
|
|---|
| 65 | if [ "${wx}" = "${want_ver}" ] && [ -x "${0}-${auto_ver}" ] ; then
|
|---|
| 66 | binary="${0}-${auto_ver}"
|
|---|
| 67 | v="x"
|
|---|
| 68 | fi
|
|---|
| 69 | done
|
|---|
| 70 | [ "${v}" = "x" ] && break
|
|---|
| 71 | done
|
|---|
| 72 | fi
|
|---|
| 73 |
|
|---|
| 74 | #
|
|---|
| 75 | # autodetect helpers
|
|---|
| 76 | #
|
|---|
| 77 | acprereq_version() {
|
|---|
| 78 | gawk \
|
|---|
| 79 | '($0 !~ /^[[:space:]]*(#|dnl)/) {
|
|---|
| 80 | if (match($0, "AC_PREREQ\\(\\[?([0-9]\\.[0-9])", res))
|
|---|
| 81 | VERSIONS[COUNT++] = res[1]
|
|---|
| 82 | }
|
|---|
| 83 |
|
|---|
| 84 | END {
|
|---|
| 85 | asort(VERSIONS)
|
|---|
| 86 | print VERSIONS[COUNT]
|
|---|
| 87 | }' "$@"
|
|---|
| 88 | }
|
|---|
| 89 |
|
|---|
| 90 | generated_version() {
|
|---|
| 91 | gawk \
|
|---|
| 92 | '{
|
|---|
| 93 | if (match($0,
|
|---|
| 94 | "^# Generated (by (GNU )?Autoconf|automatically using autoconf version) ([0-9].[0-9])",
|
|---|
| 95 | res)) {
|
|---|
| 96 | print res[3]
|
|---|
| 97 | exit
|
|---|
| 98 | }
|
|---|
| 99 | }' "$@"
|
|---|
| 100 | }
|
|---|
| 101 |
|
|---|
| 102 | #
|
|---|
| 103 | # autodetect routine
|
|---|
| 104 | #
|
|---|
| 105 | if [ "${WANT_AUTOCONF}" = "2.1" -a -f "configure.ac" ] ; then
|
|---|
| 106 | echo "ac-wrapper: Since configure.ac is present, aclocal always use" >&2
|
|---|
| 107 | echo " autoconf 2.59+, which conflicts with your choice and" >&2
|
|---|
| 108 | echo " causes error. You have two options:" >&2
|
|---|
| 109 | echo " 1. Try execute command again after removing configure.ac" >&2
|
|---|
| 110 | echo " 2. Don't set WANT_AUTOCONF" >&2
|
|---|
| 111 | exit 1
|
|---|
| 112 | fi
|
|---|
| 113 |
|
|---|
| 114 | if [ "${WANT_AUTOCONF}" != "2.5" -a -n "${WANT_AUTOMAKE}" ] ; then
|
|---|
| 115 | # Automake-1.7 and better require autoconf-2.5x so if WANT_AUTOMAKE
|
|---|
| 116 | # is set to an older version, let's do some sanity checks.
|
|---|
| 117 | case "${WANT_AUTOMAKE}" in
|
|---|
| 118 | 1.[456])
|
|---|
| 119 | acfiles=$(ls ac{local,include}.m4 configure.{in,ac} 2>/dev/null)
|
|---|
| 120 | [ -n "${acfiles}" ] && confversion=$(acprereq_version ${acfiles})
|
|---|
| 121 |
|
|---|
| 122 | [ -z "${confversion}" -a -r "configure" ] \
|
|---|
| 123 | && confversion=$(generated_version configure)
|
|---|
| 124 |
|
|---|
| 125 | if [ "${confversion}" = "2.1" -a ! -f "configure.ac" ] ; then
|
|---|
| 126 | binary="${0}-2.13"
|
|---|
| 127 | fi
|
|---|
| 128 | esac
|
|---|
| 129 | fi
|
|---|
| 130 |
|
|---|
| 131 | if [ -n "${WANT_ACWRAPPER_DEBUG}" ] ; then
|
|---|
| 132 | if [ -n "${WANT_AUTOCONF}" ] ; then
|
|---|
| 133 | echo "ac-wrapper: DEBUG: WANT_AUTOCONF is set to ${WANT_AUTOCONF}" >&2
|
|---|
| 134 | fi
|
|---|
| 135 | echo "ac-wrapper: DEBUG: will execute <${binary}>" >&2
|
|---|
| 136 | fi
|
|---|
| 137 |
|
|---|
| 138 | #
|
|---|
| 139 | # for further consistency
|
|---|
| 140 | #
|
|---|
| 141 | for v in ${vers} ; do
|
|---|
| 142 | auto_ver=${v%:*}
|
|---|
| 143 | want_ver=${v#*:}
|
|---|
| 144 | if [ "${binary}" = "${0}-${auto_ver}" ] ; then
|
|---|
| 145 | export WANT_AUTOCONF="${want_ver}"
|
|---|
| 146 | fi
|
|---|
| 147 | done
|
|---|
| 148 |
|
|---|
| 149 | #
|
|---|
| 150 | # Now try to run the binary
|
|---|
| 151 | #
|
|---|
| 152 | if [ ! -x "${binary}" ] ; then
|
|---|
| 153 | # this shouldn't happen
|
|---|
| 154 | echo "ac-wrapper: ${binary} is missing or not executable." >&2
|
|---|
| 155 | echo " Please try emerging the correct version of autoconf." >&2
|
|---|
| 156 | exit 1
|
|---|
| 157 | fi
|
|---|
| 158 |
|
|---|
| 159 | exec "${binary}" "$@"
|
|---|
| 160 |
|
|---|
| 161 | echo "ac-wrapper: was unable to exec ${binary} !?" >&2
|
|---|
| 162 | exit 1
|
|---|