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
|
---|