Magellan Linux

Contents of /trunk/autoconf/ac-wrapper-4.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 920 - (show annotations) (download) (as text)
Sat Oct 31 16:27:10 2009 UTC (14 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 4298 byte(s)
updated wrapper to use autoconf-2.64

1 #!/bin/bash
2 # Copyright 1999-2006 Gentoo Foundation
3 # Distributed under the terms of the GNU General Public License v2
4 # $Header: /root/magellan-cvs/src/autoconf/ac-wrapper-4.sh,v 1.3 2009-10-31 16:27:10 niro 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" && ${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.64:2.5 2.63:2.5 2.62:2.5 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" ]] && [ -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" ]] && [[ -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} && -r "configure" ]] \
123 && confversion=$(generated_version configure)
124
125 if [[ ${confversion} == "2.1" && ! -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