Magellan Linux

Annotation of /tags/ac-wrapper-10/ac-wrapper.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1911 - (hide annotations) (download) (as text)
Tue Sep 11 13:43:47 2012 UTC (11 years, 7 months ago) by niro
Original Path: trunk/ac-wrapper/ac-wrapper.sh
File MIME type: application/x-sh
File size: 4280 byte(s)
-support autoconf-2.69
1 niro 1909 #!/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.5 2010-08-19 19:24:26 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 niro 1911 vers="2.60:2.6 2.68:2.6 2.67:2.6 2.59:2.5 2.13:2.1"
35 niro 1909
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