xref: /aosp_15_r20/external/sg3_utils/autogen.sh (revision 44704f698541f6367e81f991ef8bb54ccbf3fc18)
1*44704f69SBart Van Assche#!/bin/sh
2*44704f69SBart Van Assche#                        a u t o g e n . s h
3*44704f69SBart Van Assche#
4*44704f69SBart Van Assche# Copyright (c) 2005-2009 United States Government as represented by
5*44704f69SBart Van Assche# the U.S. Army Research Laboratory.
6*44704f69SBart Van Assche#
7*44704f69SBart Van Assche# Redistribution and use in source and binary forms, with or without
8*44704f69SBart Van Assche# modification, are permitted provided that the following conditions
9*44704f69SBart Van Assche# are met:
10*44704f69SBart Van Assche#
11*44704f69SBart Van Assche# 1. Redistributions of source code must retain the above copyright
12*44704f69SBart Van Assche# notice, this list of conditions and the following disclaimer.
13*44704f69SBart Van Assche#
14*44704f69SBart Van Assche# 2. Redistributions in binary form must reproduce the above
15*44704f69SBart Van Assche# copyright notice, this list of conditions and the following
16*44704f69SBart Van Assche# disclaimer in the documentation and/or other materials provided
17*44704f69SBart Van Assche# with the distribution.
18*44704f69SBart Van Assche#
19*44704f69SBart Van Assche# 3. The name of the author may not be used to endorse or promote
20*44704f69SBart Van Assche# products derived from this software without specific prior written
21*44704f69SBart Van Assche# permission.
22*44704f69SBart Van Assche#
23*44704f69SBart Van Assche# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
24*44704f69SBart Van Assche# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25*44704f69SBart Van Assche# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26*44704f69SBart Van Assche# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
27*44704f69SBart Van Assche# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28*44704f69SBart Van Assche# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29*44704f69SBart Van Assche# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30*44704f69SBart Van Assche# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31*44704f69SBart Van Assche# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32*44704f69SBart Van Assche# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33*44704f69SBart Van Assche# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*44704f69SBart Van Assche#
35*44704f69SBart Van Assche###
36*44704f69SBart Van Assche#
37*44704f69SBart Van Assche# Script for automatically preparing the sources for compilation by
38*44704f69SBart Van Assche# performing the myriad of necessary steps.  The script attempts to
39*44704f69SBart Van Assche# detect proper version support, and outputs warnings about particular
40*44704f69SBart Van Assche# systems that have autotool peculiarities.
41*44704f69SBart Van Assche#
42*44704f69SBart Van Assche# Basically, if everything is set up and installed correctly, the
43*44704f69SBart Van Assche# script will validate that minimum versions of the GNU Build System
44*44704f69SBart Van Assche# tools are installed, account for several common configuration
45*44704f69SBart Van Assche# issues, and then simply run autoreconf for you.
46*44704f69SBart Van Assche#
47*44704f69SBart Van Assche# If autoreconf fails, which can happen for many valid configurations,
48*44704f69SBart Van Assche# this script proceeds to run manual preparation steps effectively
49*44704f69SBart Van Assche# providing a POSIX shell script (mostly complete) reimplementation of
50*44704f69SBart Van Assche# autoreconf.
51*44704f69SBart Van Assche#
52*44704f69SBart Van Assche# The AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER
53*44704f69SBart Van Assche# environment variables and corresponding _OPTIONS variables (e.g.
54*44704f69SBart Van Assche# AUTORECONF_OPTIONS) may be used to override the default automatic
55*44704f69SBart Van Assche# detection behaviors.  Similarly the _VERSION variables will override
56*44704f69SBart Van Assche# the minimum required version numbers.
57*44704f69SBart Van Assche#
58*44704f69SBart Van Assche# Examples:
59*44704f69SBart Van Assche#
60*44704f69SBart Van Assche#   To obtain help on usage:
61*44704f69SBart Van Assche#     ./autogen.sh --help
62*44704f69SBart Van Assche#
63*44704f69SBart Van Assche#   To obtain verbose output:
64*44704f69SBart Van Assche#     ./autogen.sh --verbose
65*44704f69SBart Van Assche#
66*44704f69SBart Van Assche#   To skip autoreconf and prepare manually:
67*44704f69SBart Van Assche#     AUTORECONF=false ./autogen.sh
68*44704f69SBart Van Assche#
69*44704f69SBart Van Assche#   To verbosely try running with an older (unsupported) autoconf:
70*44704f69SBart Van Assche#     AUTOCONF_VERSION=2.50 ./autogen.sh --verbose
71*44704f69SBart Van Assche#
72*44704f69SBart Van Assche# Author:
73*44704f69SBart Van Assche#   Christopher Sean Morrison <[email protected]>
74*44704f69SBart Van Assche#
75*44704f69SBart Van Assche# Patches:
76*44704f69SBart Van Assche#   Sebastian Pipping <[email protected]>
77*44704f69SBart Van Assche#
78*44704f69SBart Van Assche######################################################################
79*44704f69SBart Van Assche
80*44704f69SBart Van Assche# set to minimum acceptable version of autoconf
81*44704f69SBart Van Asscheif [ "x$AUTOCONF_VERSION" = "x" ] ; then
82*44704f69SBart Van Assche    AUTOCONF_VERSION=2.52
83*44704f69SBart Van Asschefi
84*44704f69SBart Van Assche# set to minimum acceptable version of automake
85*44704f69SBart Van Asscheif [ "x$AUTOMAKE_VERSION" = "x" ] ; then
86*44704f69SBart Van Assche    AUTOMAKE_VERSION=1.6.0
87*44704f69SBart Van Asschefi
88*44704f69SBart Van Assche# set to minimum acceptable version of libtool
89*44704f69SBart Van Asscheif [ "x$LIBTOOL_VERSION" = "x" ] ; then
90*44704f69SBart Van Assche    LIBTOOL_VERSION=1.4.2
91*44704f69SBart Van Asschefi
92*44704f69SBart Van Assche
93*44704f69SBart Van Assche
94*44704f69SBart Van Assche##################
95*44704f69SBart Van Assche# ident function #
96*44704f69SBart Van Assche##################
97*44704f69SBart Van Asscheident ( ) {
98*44704f69SBart Van Assche    # extract copyright from header
99*44704f69SBart Van Assche    __copyright="`grep Copyright $AUTOGEN_SH | head -${HEAD_N}1 | awk '{print $4}'`"
100*44704f69SBart Van Assche    if [ "x$__copyright" = "x" ] ; then
101*44704f69SBart Van Assche	__copyright="`date +%Y`"
102*44704f69SBart Van Assche    fi
103*44704f69SBart Van Assche
104*44704f69SBart Van Assche    # extract version from CVS Id string
105*44704f69SBart Van Assche    __id="$Id: autogen.sh 33925 2009-03-01 23:27:06Z brlcad $"
106*44704f69SBart Van Assche    __version="`echo $__id | sed 's/.*\([0-9][0-9][0-9][0-9]\)[-\/]\([0-9][0-9]\)[-\/]\([0-9][0-9]\).*/\1\2\3/'`"
107*44704f69SBart Van Assche    if [ "x$__version" = "x" ] ; then
108*44704f69SBart Van Assche	__version=""
109*44704f69SBart Van Assche    fi
110*44704f69SBart Van Assche
111*44704f69SBart Van Assche    echo "autogen.sh build preparation script by Christopher Sean Morrison"
112*44704f69SBart Van Assche    echo "  + config.guess download patch by Sebastian Pipping (2008-12-03)"
113*44704f69SBart Van Assche    echo "revised 3-clause BSD-style license, copyright (c) $__copyright"
114*44704f69SBart Van Assche    echo "script version $__version, ISO/IEC 9945 POSIX shell script"
115*44704f69SBart Van Assche}
116*44704f69SBart Van Assche
117*44704f69SBart Van Assche
118*44704f69SBart Van Assche##################
119*44704f69SBart Van Assche# USAGE FUNCTION #
120*44704f69SBart Van Assche##################
121*44704f69SBart Van Asscheusage ( ) {
122*44704f69SBart Van Assche    echo "Usage: $AUTOGEN_SH [-h|--help] [-v|--verbose] [-q|--quiet] [-d|--download] [--version]"
123*44704f69SBart Van Assche    echo "    --help      Help on $NAME_OF_AUTOGEN usage"
124*44704f69SBart Van Assche    echo "    --verbose   Verbose progress output"
125*44704f69SBart Van Assche    echo "    --quiet     Quiet suppressed progress output"
126*44704f69SBart Van Assche    echo "    --download  Download the latest config.guess from gnulib"
127*44704f69SBart Van Assche    echo "    --version   Only perform GNU Build System version checks"
128*44704f69SBart Van Assche    echo
129*44704f69SBart Van Assche    echo "Description: This script will validate that minimum versions of the"
130*44704f69SBart Van Assche    echo "GNU Build System tools are installed and then run autoreconf for you."
131*44704f69SBart Van Assche    echo "Should autoreconf fail, manual preparation steps will be run"
132*44704f69SBart Van Assche    echo "potentially accounting for several common preparation issues.  The"
133*44704f69SBart Van Assche
134*44704f69SBart Van Assche    echo "AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER,"
135*44704f69SBart Van Assche    echo "PROJECT, & CONFIGURE environment variables and corresponding _OPTIONS"
136*44704f69SBart Van Assche    echo "variables (e.g. AUTORECONF_OPTIONS) may be used to override the"
137*44704f69SBart Van Assche    echo "default automatic detection behavior."
138*44704f69SBart Van Assche    echo
139*44704f69SBart Van Assche
140*44704f69SBart Van Assche    ident
141*44704f69SBart Van Assche
142*44704f69SBart Van Assche    return 0
143*44704f69SBart Van Assche}
144*44704f69SBart Van Assche
145*44704f69SBart Van Assche
146*44704f69SBart Van Assche##########################
147*44704f69SBart Van Assche# VERSION_ERROR FUNCTION #
148*44704f69SBart Van Assche##########################
149*44704f69SBart Van Asscheversion_error ( ) {
150*44704f69SBart Van Assche    if [ "x$1" = "x" ] ; then
151*44704f69SBart Van Assche	echo "INTERNAL ERROR: version_error was not provided a version"
152*44704f69SBart Van Assche	exit 1
153*44704f69SBart Van Assche    fi
154*44704f69SBart Van Assche    if [ "x$2" = "x" ] ; then
155*44704f69SBart Van Assche	echo "INTERNAL ERROR: version_error was not provided an application name"
156*44704f69SBart Van Assche	exit 1
157*44704f69SBart Van Assche    fi
158*44704f69SBart Van Assche    $ECHO
159*44704f69SBart Van Assche    $ECHO "ERROR:  To prepare the ${PROJECT} build system from scratch,"
160*44704f69SBart Van Assche    $ECHO "        at least version $1 of $2 must be installed."
161*44704f69SBart Van Assche    $ECHO
162*44704f69SBart Van Assche    $ECHO "$NAME_OF_AUTOGEN does not need to be run on the same machine that will"
163*44704f69SBart Van Assche    $ECHO "run configure or make.  Either the GNU Autotools will need to be installed"
164*44704f69SBart Van Assche    $ECHO "or upgraded on this system, or $NAME_OF_AUTOGEN must be run on the source"
165*44704f69SBart Van Assche    $ECHO "code on another system and then transferred to here. -- Cheers!"
166*44704f69SBart Van Assche    $ECHO
167*44704f69SBart Van Assche}
168*44704f69SBart Van Assche
169*44704f69SBart Van Assche##########################
170*44704f69SBart Van Assche# VERSION_CHECK FUNCTION #
171*44704f69SBart Van Assche##########################
172*44704f69SBart Van Asscheversion_check ( ) {
173*44704f69SBart Van Assche    if [ "x$1" = "x" ] ; then
174*44704f69SBart Van Assche	echo "INTERNAL ERROR: version_check was not provided a minimum version"
175*44704f69SBart Van Assche	exit 1
176*44704f69SBart Van Assche    fi
177*44704f69SBart Van Assche    _min="$1"
178*44704f69SBart Van Assche    if [ "x$2" = "x" ] ; then
179*44704f69SBart Van Assche	echo "INTERNAL ERROR: version check was not provided a comparison version"
180*44704f69SBart Van Assche	exit 1
181*44704f69SBart Van Assche    fi
182*44704f69SBart Van Assche    _cur="$2"
183*44704f69SBart Van Assche
184*44704f69SBart Van Assche    # needed to handle versions like 1.10 and 1.4-p6
185*44704f69SBart Van Assche    _min="`echo ${_min}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`"
186*44704f69SBart Van Assche    _cur="`echo ${_cur}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`"
187*44704f69SBart Van Assche
188*44704f69SBart Van Assche    _min_major="`echo $_min | cut -d. -f1`"
189*44704f69SBart Van Assche    _min_minor="`echo $_min | cut -d. -f2`"
190*44704f69SBart Van Assche    _min_patch="`echo $_min | cut -d. -f3`"
191*44704f69SBart Van Assche
192*44704f69SBart Van Assche    _cur_major="`echo $_cur | cut -d. -f1`"
193*44704f69SBart Van Assche    _cur_minor="`echo $_cur | cut -d. -f2`"
194*44704f69SBart Van Assche    _cur_patch="`echo $_cur | cut -d. -f3`"
195*44704f69SBart Van Assche
196*44704f69SBart Van Assche    if [ "x$_min_major" = "x" ] ; then
197*44704f69SBart Van Assche	_min_major=0
198*44704f69SBart Van Assche    fi
199*44704f69SBart Van Assche    if [ "x$_min_minor" = "x" ] ; then
200*44704f69SBart Van Assche	_min_minor=0
201*44704f69SBart Van Assche    fi
202*44704f69SBart Van Assche    if [ "x$_min_patch" = "x" ] ; then
203*44704f69SBart Van Assche	_min_patch=0
204*44704f69SBart Van Assche    fi
205*44704f69SBart Van Assche    if [ "x$_cur_minor" = "x" ] ; then
206*44704f69SBart Van Assche	_cur_major=0
207*44704f69SBart Van Assche    fi
208*44704f69SBart Van Assche    if [ "x$_cur_minor" = "x" ] ; then
209*44704f69SBart Van Assche	_cur_minor=0
210*44704f69SBart Van Assche    fi
211*44704f69SBart Van Assche    if [ "x$_cur_patch" = "x" ] ; then
212*44704f69SBart Van Assche	_cur_patch=0
213*44704f69SBart Van Assche    fi
214*44704f69SBart Van Assche
215*44704f69SBart Van Assche    $VERBOSE_ECHO "Checking if ${_cur_major}.${_cur_minor}.${_cur_patch} is greater than ${_min_major}.${_min_minor}.${_min_patch}"
216*44704f69SBart Van Assche
217*44704f69SBart Van Assche    if [ $_min_major -lt $_cur_major ] ; then
218*44704f69SBart Van Assche	return 0
219*44704f69SBart Van Assche    elif [ $_min_major -eq $_cur_major ] ; then
220*44704f69SBart Van Assche	if [ $_min_minor -lt $_cur_minor ] ; then
221*44704f69SBart Van Assche	    return 0
222*44704f69SBart Van Assche	elif [ $_min_minor -eq $_cur_minor ] ; then
223*44704f69SBart Van Assche	    if [ $_min_patch -lt $_cur_patch ] ; then
224*44704f69SBart Van Assche		return 0
225*44704f69SBart Van Assche	    elif [ $_min_patch -eq $_cur_patch ] ; then
226*44704f69SBart Van Assche		return 0
227*44704f69SBart Van Assche	    fi
228*44704f69SBart Van Assche	fi
229*44704f69SBart Van Assche    fi
230*44704f69SBart Van Assche    return 1
231*44704f69SBart Van Assche}
232*44704f69SBart Van Assche
233*44704f69SBart Van Assche
234*44704f69SBart Van Assche######################################
235*44704f69SBart Van Assche# LOCATE_CONFIGURE_TEMPLATE FUNCTION #
236*44704f69SBart Van Assche######################################
237*44704f69SBart Van Asschelocate_configure_template ( ) {
238*44704f69SBart Van Assche    _pwd="`pwd`"
239*44704f69SBart Van Assche    if test -f "./configure.ac" ; then
240*44704f69SBart Van Assche	echo "./configure.ac"
241*44704f69SBart Van Assche    elif test -f "./configure.in" ; then
242*44704f69SBart Van Assche	echo "./configure.in"
243*44704f69SBart Van Assche    elif test -f "$_pwd/configure.ac" ; then
244*44704f69SBart Van Assche	echo "$_pwd/configure.ac"
245*44704f69SBart Van Assche    elif test -f "$_pwd/configure.in" ; then
246*44704f69SBart Van Assche	echo "$_pwd/configure.in"
247*44704f69SBart Van Assche    elif test -f "$PATH_TO_AUTOGEN/configure.ac" ; then
248*44704f69SBart Van Assche	echo "$PATH_TO_AUTOGEN/configure.ac"
249*44704f69SBart Van Assche    elif test -f "$PATH_TO_AUTOGEN/configure.in" ; then
250*44704f69SBart Van Assche	echo "$PATH_TO_AUTOGEN/configure.in"
251*44704f69SBart Van Assche    fi
252*44704f69SBart Van Assche}
253*44704f69SBart Van Assche
254*44704f69SBart Van Assche
255*44704f69SBart Van Assche##################
256*44704f69SBart Van Assche# argument check #
257*44704f69SBart Van Assche##################
258*44704f69SBart Van AsscheARGS="$*"
259*44704f69SBart Van AsschePATH_TO_AUTOGEN="`dirname $0`"
260*44704f69SBart Van AsscheNAME_OF_AUTOGEN="`basename $0`"
261*44704f69SBart Van AsscheAUTOGEN_SH="$PATH_TO_AUTOGEN/$NAME_OF_AUTOGEN"
262*44704f69SBart Van Assche
263*44704f69SBart Van AsscheLIBTOOL_M4="${PATH_TO_AUTOGEN}/misc/libtool.m4"
264*44704f69SBart Van Assche
265*44704f69SBart Van Asscheif [ "x$HELP" = "x" ] ; then
266*44704f69SBart Van Assche    HELP=no
267*44704f69SBart Van Asschefi
268*44704f69SBart Van Asscheif [ "x$QUIET" = "x" ] ; then
269*44704f69SBart Van Assche    QUIET=no
270*44704f69SBart Van Asschefi
271*44704f69SBart Van Asscheif [ "x$VERBOSE" = "x" ] ; then
272*44704f69SBart Van Assche    VERBOSE=no
273*44704f69SBart Van Asschefi
274*44704f69SBart Van Asscheif [ "x$VERSION_ONLY" = "x" ] ; then
275*44704f69SBart Van Assche    VERSION_ONLY=no
276*44704f69SBart Van Asschefi
277*44704f69SBart Van Asscheif [ "x$DOWNLOAD" = "x" ] ; then
278*44704f69SBart Van Assche    DOWNLOAD=no
279*44704f69SBart Van Asschefi
280*44704f69SBart Van Asscheif [ "x$AUTORECONF_OPTIONS" = "x" ] ; then
281*44704f69SBart Van Assche    AUTORECONF_OPTIONS="-i -f"
282*44704f69SBart Van Asschefi
283*44704f69SBart Van Asscheif [ "x$AUTOCONF_OPTIONS" = "x" ] ; then
284*44704f69SBart Van Assche    AUTOCONF_OPTIONS="-f"
285*44704f69SBart Van Asschefi
286*44704f69SBart Van Asscheif [ "x$AUTOMAKE_OPTIONS" = "x" ] ; then
287*44704f69SBart Van Assche    AUTOMAKE_OPTIONS="-a -c -f"
288*44704f69SBart Van Asschefi
289*44704f69SBart Van AsscheALT_AUTOMAKE_OPTIONS="-a -c"
290*44704f69SBart Van Asscheif [ "x$LIBTOOLIZE_OPTIONS" = "x" ] ; then
291*44704f69SBart Van Assche    LIBTOOLIZE_OPTIONS="--automake -c -f"
292*44704f69SBart Van Asschefi
293*44704f69SBart Van AsscheALT_LIBTOOLIZE_OPTIONS="--automake --copy --force"
294*44704f69SBart Van Asscheif [ "x$ACLOCAL_OPTIONS" = "x" ] ; then
295*44704f69SBart Van Assche    ACLOCAL_OPTIONS=""
296*44704f69SBart Van Asschefi
297*44704f69SBart Van Asscheif [ "x$AUTOHEADER_OPTIONS" = "x" ] ; then
298*44704f69SBart Van Assche    AUTOHEADER_OPTIONS=""
299*44704f69SBart Van Asschefi
300*44704f69SBart Van Asscheif [ "x$CONFIG_GUESS_URL" = "x" ] ; then
301*44704f69SBart Van Assche    CONFIG_GUESS_URL="http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;f=build-aux/config.guess;hb=HEAD"
302*44704f69SBart Van Asschefi
303*44704f69SBart Van Asschefor arg in $ARGS ; do
304*44704f69SBart Van Assche    case "x$arg" in
305*44704f69SBart Van Assche	x--help) HELP=yes ;;
306*44704f69SBart Van Assche	x-[hH]) HELP=yes ;;
307*44704f69SBart Van Assche	x--quiet) QUIET=yes ;;
308*44704f69SBart Van Assche	x-[qQ]) QUIET=yes ;;
309*44704f69SBart Van Assche	x--verbose) VERBOSE=yes ;;
310*44704f69SBart Van Assche	x-[dD]) DOWNLOAD=yes ;;
311*44704f69SBart Van Assche	x--download) DOWNLOAD=yes ;;
312*44704f69SBart Van Assche	x-[vV]) VERBOSE=yes ;;
313*44704f69SBart Van Assche	x--version) VERSION_ONLY=yes ;;
314*44704f69SBart Van Assche	*)
315*44704f69SBart Van Assche	    echo "Unknown option: $arg"
316*44704f69SBart Van Assche	    echo
317*44704f69SBart Van Assche	    usage
318*44704f69SBart Van Assche	    exit 1
319*44704f69SBart Van Assche	    ;;
320*44704f69SBart Van Assche    esac
321*44704f69SBart Van Asschedone
322*44704f69SBart Van Assche
323*44704f69SBart Van Assche
324*44704f69SBart Van Assche#####################
325*44704f69SBart Van Assche# environment check #
326*44704f69SBart Van Assche#####################
327*44704f69SBart Van Assche
328*44704f69SBart Van Assche# sanity check before recursions potentially begin
329*44704f69SBart Van Asscheif [ ! -f "$AUTOGEN_SH" ] ; then
330*44704f69SBart Van Assche    echo "INTERNAL ERROR: $AUTOGEN_SH does not exist"
331*44704f69SBart Van Assche    if [ ! "x$0" = "x$AUTOGEN_SH" ] ; then
332*44704f69SBart Van Assche	echo "INTERNAL ERROR: dirname/basename inconsistency: $0 != $AUTOGEN_SH"
333*44704f69SBart Van Assche    fi
334*44704f69SBart Van Assche    exit 1
335*44704f69SBart Van Asschefi
336*44704f69SBart Van Assche
337*44704f69SBart Van Assche# force locale setting to C so things like date output as expected
338*44704f69SBart Van AsscheLC_ALL=C
339*44704f69SBart Van Assche
340*44704f69SBart Van Assche# commands that this script expects
341*44704f69SBart Van Asschefor __cmd in echo head tail pwd ; do
342*44704f69SBart Van Assche    echo "test" | $__cmd > /dev/null 2>&1
343*44704f69SBart Van Assche    if [ $? != 0 ] ; then
344*44704f69SBart Van Assche	echo "INTERNAL ERROR: '${__cmd}' command is required"
345*44704f69SBart Van Assche	exit 2
346*44704f69SBart Van Assche    fi
347*44704f69SBart Van Asschedone
348*44704f69SBart Van Asscheecho "test" | grep "test" > /dev/null 2>&1
349*44704f69SBart Van Asscheif test ! x$? = x0 ; then
350*44704f69SBart Van Assche    echo "INTERNAL ERROR: grep command is required"
351*44704f69SBart Van Assche    exit 1
352*44704f69SBart Van Asschefi
353*44704f69SBart Van Asscheecho "test" | sed "s/test/test/" > /dev/null 2>&1
354*44704f69SBart Van Asscheif test ! x$? = x0 ; then
355*44704f69SBart Van Assche    echo "INTERNAL ERROR: sed command is required"
356*44704f69SBart Van Assche    exit 1
357*44704f69SBart Van Asschefi
358*44704f69SBart Van Assche
359*44704f69SBart Van Assche
360*44704f69SBart Van Assche# determine the behavior of echo
361*44704f69SBart Van Asschecase `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
362*44704f69SBart Van Assche    *c*,-n*) ECHO_N= ECHO_C='
363*44704f69SBart Van Assche' ECHO_T='	' ;;
364*44704f69SBart Van Assche    *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
365*44704f69SBart Van Assche    *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
366*44704f69SBart Van Asscheesac
367*44704f69SBart Van Assche
368*44704f69SBart Van Assche# determine the behavior of head
369*44704f69SBart Van Asschecase "x`echo 'head' | head -n 1 2>&1`" in
370*44704f69SBart Van Assche    *xhead*) HEAD_N="n " ;;
371*44704f69SBart Van Assche    *) HEAD_N="" ;;
372*44704f69SBart Van Asscheesac
373*44704f69SBart Van Assche
374*44704f69SBart Van Assche# determine the behavior of tail
375*44704f69SBart Van Asschecase "x`echo 'tail' | tail -n 1 2>&1`" in
376*44704f69SBart Van Assche    *xtail*) TAIL_N="n " ;;
377*44704f69SBart Van Assche    *) TAIL_N="" ;;
378*44704f69SBart Van Asscheesac
379*44704f69SBart Van Assche
380*44704f69SBart Van AsscheVERBOSE_ECHO=:
381*44704f69SBart Van AsscheECHO=:
382*44704f69SBart Van Asscheif [ "x$QUIET" = "xyes" ] ; then
383*44704f69SBart Van Assche    if [ "x$VERBOSE" = "xyes" ] ; then
384*44704f69SBart Van Assche	echo "Verbose output quelled by quiet option.  Further output disabled."
385*44704f69SBart Van Assche    fi
386*44704f69SBart Van Asscheelse
387*44704f69SBart Van Assche    ECHO=echo
388*44704f69SBart Van Assche    if [ "x$VERBOSE" = "xyes" ] ; then
389*44704f69SBart Van Assche	echo "Verbose output enabled"
390*44704f69SBart Van Assche	VERBOSE_ECHO=echo
391*44704f69SBart Van Assche    fi
392*44704f69SBart Van Asschefi
393*44704f69SBart Van Assche
394*44704f69SBart Van Assche
395*44704f69SBart Van Assche# allow a recursive run to disable further recursions
396*44704f69SBart Van Asscheif [ "x$RUN_RECURSIVE" = "x" ] ; then
397*44704f69SBart Van Assche    RUN_RECURSIVE=yes
398*44704f69SBart Van Asschefi
399*44704f69SBart Van Assche
400*44704f69SBart Van Assche
401*44704f69SBart Van Assche################################################
402*44704f69SBart Van Assche# check for help arg and bypass version checks #
403*44704f69SBart Van Assche################################################
404*44704f69SBart Van Asscheif [ "x`echo $ARGS | sed 's/.*[hH][eE][lL][pP].*/help/'`" = "xhelp" ] ; then
405*44704f69SBart Van Assche    HELP=yes
406*44704f69SBart Van Asschefi
407*44704f69SBart Van Asscheif [ "x$HELP" = "xyes" ] ; then
408*44704f69SBart Van Assche    usage
409*44704f69SBart Van Assche    $ECHO "---"
410*44704f69SBart Van Assche    $ECHO "Help was requested.  No preparation or configuration will be performed."
411*44704f69SBart Van Assche    exit 0
412*44704f69SBart Van Asschefi
413*44704f69SBart Van Assche
414*44704f69SBart Van Assche
415*44704f69SBart Van Assche#######################
416*44704f69SBart Van Assche# set up signal traps #
417*44704f69SBart Van Assche#######################
418*44704f69SBart Van Asscheuntrap_abnormal ( ) {
419*44704f69SBart Van Assche    for sig in 1 2 13 15; do
420*44704f69SBart Van Assche	trap - $sig
421*44704f69SBart Van Assche    done
422*44704f69SBart Van Assche}
423*44704f69SBart Van Assche
424*44704f69SBart Van Assche# do this cleanup whenever we exit.
425*44704f69SBart Van Asschetrap '
426*44704f69SBart Van Assche    # start from the root
427*44704f69SBart Van Assche    if test -d "$START_PATH" ; then
428*44704f69SBart Van Assche	cd "$START_PATH"
429*44704f69SBart Van Assche    fi
430*44704f69SBart Van Assche
431*44704f69SBart Van Assche    # restore/delete backup files
432*44704f69SBart Van Assche    if test "x$PFC_INIT" = "x1" ; then
433*44704f69SBart Van Assche	recursive_restore
434*44704f69SBart Van Assche    fi
435*44704f69SBart Van Assche' 0
436*44704f69SBart Van Assche
437*44704f69SBart Van Assche# trap SIGHUP (1), SIGINT (2), SIGPIPE (13), SIGTERM (15)
438*44704f69SBart Van Asschefor sig in 1 2 13 15; do
439*44704f69SBart Van Assche    trap '
440*44704f69SBart Van Assche	$ECHO ""
441*44704f69SBart Van Assche	$ECHO "Aborting $NAME_OF_AUTOGEN: caught signal '$sig'"
442*44704f69SBart Van Assche
443*44704f69SBart Van Assche	# start from the root
444*44704f69SBart Van Assche	if test -d "$START_PATH" ; then
445*44704f69SBart Van Assche	    cd "$START_PATH"
446*44704f69SBart Van Assche	fi
447*44704f69SBart Van Assche
448*44704f69SBart Van Assche	# clean up on abnormal exit
449*44704f69SBart Van Assche	$VERBOSE_ECHO "rm -rf autom4te.cache"
450*44704f69SBart Van Assche	rm -rf autom4te.cache
451*44704f69SBart Van Assche
452*44704f69SBart Van Assche	if test -f "acinclude.m4.$$.backup" ; then
453*44704f69SBart Van Assche	    $VERBOSE_ECHO "cat acinclude.m4.$$.backup > acinclude.m4"
454*44704f69SBart Van Assche	    chmod u+w acinclude.m4
455*44704f69SBart Van Assche	    cat acinclude.m4.$$.backup > acinclude.m4
456*44704f69SBart Van Assche
457*44704f69SBart Van Assche	    $VERBOSE_ECHO "rm -f acinclude.m4.$$.backup"
458*44704f69SBart Van Assche	    rm -f acinclude.m4.$$.backup
459*44704f69SBart Van Assche        fi
460*44704f69SBart Van Assche
461*44704f69SBart Van Assche	{ (exit 1); exit 1; }
462*44704f69SBart Van Assche' $sig
463*44704f69SBart Van Asschedone
464*44704f69SBart Van Assche
465*44704f69SBart Van Assche
466*44704f69SBart Van Assche#############################
467*44704f69SBart Van Assche# look for a configure file #
468*44704f69SBart Van Assche#############################
469*44704f69SBart Van Asscheif [ "x$CONFIGURE" = "x" ] ; then
470*44704f69SBart Van Assche    CONFIGURE="`locate_configure_template`"
471*44704f69SBart Van Assche    if [ ! "x$CONFIGURE" = "x" ] ; then
472*44704f69SBart Van Assche	$VERBOSE_ECHO "Found a configure template: $CONFIGURE"
473*44704f69SBart Van Assche    fi
474*44704f69SBart Van Asscheelse
475*44704f69SBart Van Assche    $ECHO "Using CONFIGURE environment variable override: $CONFIGURE"
476*44704f69SBart Van Asschefi
477*44704f69SBart Van Asscheif [ "x$CONFIGURE" = "x" ] ; then
478*44704f69SBart Van Assche    if [ "x$VERSION_ONLY" = "xyes" ] ; then
479*44704f69SBart Van Assche	CONFIGURE=/dev/null
480*44704f69SBart Van Assche    else
481*44704f69SBart Van Assche	$ECHO
482*44704f69SBart Van Assche	$ECHO "A configure.ac or configure.in file could not be located implying"
483*44704f69SBart Van Assche	$ECHO "that the GNU Build System is at least not used in this directory.  In"
484*44704f69SBart Van Assche	$ECHO "any case, there is nothing to do here without one of those files."
485*44704f69SBart Van Assche	$ECHO
486*44704f69SBart Van Assche	$ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
487*44704f69SBart Van Assche	exit 1
488*44704f69SBart Van Assche    fi
489*44704f69SBart Van Asschefi
490*44704f69SBart Van Assche
491*44704f69SBart Van Assche####################
492*44704f69SBart Van Assche# get project name #
493*44704f69SBart Van Assche####################
494*44704f69SBart Van Asscheif [ "x$PROJECT" = "x" ] ; then
495*44704f69SBart Van Assche    PROJECT="`grep AC_INIT $CONFIGURE | grep -v '.*#.*AC_INIT' | tail -${TAIL_N}1 | sed 's/^[ 	]*AC_INIT(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
496*44704f69SBart Van Assche    if [ "x$PROJECT" = "xAC_INIT" ] ; then
497*44704f69SBart Van Assche	# projects might be using the older/deprecated arg-less AC_INIT .. look for AM_INIT_AUTOMAKE instead
498*44704f69SBart Van Assche	PROJECT="`grep AM_INIT_AUTOMAKE $CONFIGURE | grep -v '.*#.*AM_INIT_AUTOMAKE' | tail -${TAIL_N}1 | sed 's/^[ 	]*AM_INIT_AUTOMAKE(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
499*44704f69SBart Van Assche    fi
500*44704f69SBart Van Assche    if [ "x$PROJECT" = "xAM_INIT_AUTOMAKE" ] ; then
501*44704f69SBart Van Assche	PROJECT="project"
502*44704f69SBart Van Assche    fi
503*44704f69SBart Van Assche    if [ "x$PROJECT" = "x" ] ; then
504*44704f69SBart Van Assche	PROJECT="project"
505*44704f69SBart Van Assche    fi
506*44704f69SBart Van Asscheelse
507*44704f69SBart Van Assche    $ECHO "Using PROJECT environment variable override: $PROJECT"
508*44704f69SBart Van Asschefi
509*44704f69SBart Van Assche$ECHO "Preparing the $PROJECT build system...please wait"
510*44704f69SBart Van Assche$ECHO
511*44704f69SBart Van Assche
512*44704f69SBart Van Assche
513*44704f69SBart Van Assche########################
514*44704f69SBart Van Assche# check for autoreconf #
515*44704f69SBart Van Assche########################
516*44704f69SBart Van AsscheHAVE_AUTORECONF=no
517*44704f69SBart Van Asscheif [ "x$AUTORECONF" = "x" ] ; then
518*44704f69SBart Van Assche    for AUTORECONF in autoreconf ; do
519*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking autoreconf version: $AUTORECONF --version"
520*44704f69SBart Van Assche	$AUTORECONF --version > /dev/null 2>&1
521*44704f69SBart Van Assche	if [ $? = 0 ] ; then
522*44704f69SBart Van Assche	    HAVE_AUTORECONF=yes
523*44704f69SBart Van Assche	    break
524*44704f69SBart Van Assche	fi
525*44704f69SBart Van Assche    done
526*44704f69SBart Van Asscheelse
527*44704f69SBart Van Assche    HAVE_AUTORECONF=yes
528*44704f69SBart Van Assche    $ECHO "Using AUTORECONF environment variable override: $AUTORECONF"
529*44704f69SBart Van Asschefi
530*44704f69SBart Van Assche
531*44704f69SBart Van Assche
532*44704f69SBart Van Assche##########################
533*44704f69SBart Van Assche# autoconf version check #
534*44704f69SBart Van Assche##########################
535*44704f69SBart Van Assche_acfound=no
536*44704f69SBart Van Asscheif [ "x$AUTOCONF" = "x" ] ; then
537*44704f69SBart Van Assche    for AUTOCONF in autoconf ; do
538*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking autoconf version: $AUTOCONF --version"
539*44704f69SBart Van Assche	$AUTOCONF --version > /dev/null 2>&1
540*44704f69SBart Van Assche	if [ $? = 0 ] ; then
541*44704f69SBart Van Assche	    _acfound=yes
542*44704f69SBart Van Assche	    break
543*44704f69SBart Van Assche	fi
544*44704f69SBart Van Assche    done
545*44704f69SBart Van Asscheelse
546*44704f69SBart Van Assche    _acfound=yes
547*44704f69SBart Van Assche    $ECHO "Using AUTOCONF environment variable override: $AUTOCONF"
548*44704f69SBart Van Asschefi
549*44704f69SBart Van Assche
550*44704f69SBart Van Assche_report_error=no
551*44704f69SBart Van Asscheif [ ! "x$_acfound" = "xyes" ] ; then
552*44704f69SBart Van Assche    $ECHO "ERROR:  Unable to locate GNU Autoconf."
553*44704f69SBart Van Assche    _report_error=yes
554*44704f69SBart Van Asscheelse
555*44704f69SBart Van Assche    _version="`$AUTOCONF --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
556*44704f69SBart Van Assche    if [ "x$_version" = "x" ] ; then
557*44704f69SBart Van Assche	_version="0.0.0"
558*44704f69SBart Van Assche    fi
559*44704f69SBart Van Assche    $ECHO "Found GNU Autoconf version $_version"
560*44704f69SBart Van Assche    version_check "$AUTOCONF_VERSION" "$_version"
561*44704f69SBart Van Assche    if [ $? -ne 0 ] ; then
562*44704f69SBart Van Assche	_report_error=yes
563*44704f69SBart Van Assche    fi
564*44704f69SBart Van Asschefi
565*44704f69SBart Van Asscheif [ "x$_report_error" = "xyes" ] ; then
566*44704f69SBart Van Assche    version_error "$AUTOCONF_VERSION" "GNU Autoconf"
567*44704f69SBart Van Assche    exit 1
568*44704f69SBart Van Asschefi
569*44704f69SBart Van Assche
570*44704f69SBart Van Assche
571*44704f69SBart Van Assche##########################
572*44704f69SBart Van Assche# automake version check #
573*44704f69SBart Van Assche##########################
574*44704f69SBart Van Assche_amfound=no
575*44704f69SBart Van Asscheif [ "x$AUTOMAKE" = "x" ] ; then
576*44704f69SBart Van Assche    for AUTOMAKE in automake ; do
577*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking automake version: $AUTOMAKE --version"
578*44704f69SBart Van Assche	$AUTOMAKE --version > /dev/null 2>&1
579*44704f69SBart Van Assche	if [ $? = 0 ] ; then
580*44704f69SBart Van Assche	    _amfound=yes
581*44704f69SBart Van Assche	    break
582*44704f69SBart Van Assche	fi
583*44704f69SBart Van Assche    done
584*44704f69SBart Van Asscheelse
585*44704f69SBart Van Assche    _amfound=yes
586*44704f69SBart Van Assche    $ECHO "Using AUTOMAKE environment variable override: $AUTOMAKE"
587*44704f69SBart Van Asschefi
588*44704f69SBart Van Assche
589*44704f69SBart Van Assche
590*44704f69SBart Van Assche_report_error=no
591*44704f69SBart Van Asscheif [ ! "x$_amfound" = "xyes" ] ; then
592*44704f69SBart Van Assche    $ECHO
593*44704f69SBart Van Assche    $ECHO "ERROR: Unable to locate GNU Automake."
594*44704f69SBart Van Assche    _report_error=yes
595*44704f69SBart Van Asscheelse
596*44704f69SBart Van Assche    _version="`$AUTOMAKE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
597*44704f69SBart Van Assche    if [ "x$_version" = "x" ] ; then
598*44704f69SBart Van Assche	_version="0.0.0"
599*44704f69SBart Van Assche    fi
600*44704f69SBart Van Assche    $ECHO "Found GNU Automake version $_version"
601*44704f69SBart Van Assche    version_check "$AUTOMAKE_VERSION" "$_version"
602*44704f69SBart Van Assche    if [ $? -ne 0 ] ; then
603*44704f69SBart Van Assche	_report_error=yes
604*44704f69SBart Van Assche    fi
605*44704f69SBart Van Asschefi
606*44704f69SBart Van Asscheif [ "x$_report_error" = "xyes" ] ; then
607*44704f69SBart Van Assche    version_error "$AUTOMAKE_VERSION" "GNU Automake"
608*44704f69SBart Van Assche    exit 1
609*44704f69SBart Van Asschefi
610*44704f69SBart Van Assche
611*44704f69SBart Van Assche
612*44704f69SBart Van Assche########################
613*44704f69SBart Van Assche# check for libtoolize #
614*44704f69SBart Van Assche########################
615*44704f69SBart Van AsscheHAVE_LIBTOOLIZE=yes
616*44704f69SBart Van AsscheHAVE_ALT_LIBTOOLIZE=no
617*44704f69SBart Van Assche_ltfound=no
618*44704f69SBart Van Asscheif [ "x$LIBTOOLIZE" = "x" ] ; then
619*44704f69SBart Van Assche    LIBTOOLIZE=libtoolize
620*44704f69SBart Van Assche    $VERBOSE_ECHO "Checking libtoolize version: $LIBTOOLIZE --version"
621*44704f69SBart Van Assche    $LIBTOOLIZE --version > /dev/null 2>&1
622*44704f69SBart Van Assche    if [ ! $? = 0 ] ; then
623*44704f69SBart Van Assche	HAVE_LIBTOOLIZE=no
624*44704f69SBart Van Assche	$ECHO
625*44704f69SBart Van Assche	if [ "x$HAVE_AUTORECONF" = "xno" ] ; then
626*44704f69SBart Van Assche	    $ECHO "Warning:  libtoolize does not appear to be available."
627*44704f69SBart Van Assche	else
628*44704f69SBart Van Assche	    $ECHO "Warning:  libtoolize does not appear to be available.  This means that"
629*44704f69SBart Van Assche	    $ECHO "the automatic build preparation via autoreconf will probably not work."
630*44704f69SBart Van Assche	    $ECHO "Preparing the build by running each step individually, however, should"
631*44704f69SBart Van Assche	    $ECHO "work and will be done automatically for you if autoreconf fails."
632*44704f69SBart Van Assche	fi
633*44704f69SBart Van Assche
634*44704f69SBart Van Assche	# look for some alternates
635*44704f69SBart Van Assche	for tool in glibtoolize libtoolize15 libtoolize14 libtoolize13 ; do
636*44704f69SBart Van Assche	    $VERBOSE_ECHO "Checking libtoolize alternate: $tool --version"
637*44704f69SBart Van Assche	    _glibtoolize="`$tool --version > /dev/null 2>&1`"
638*44704f69SBart Van Assche	    if [ $? = 0 ] ; then
639*44704f69SBart Van Assche		$VERBOSE_ECHO "Found $tool --version"
640*44704f69SBart Van Assche		_glti="`which $tool`"
641*44704f69SBart Van Assche		if [ "x$_glti" = "x" ] ; then
642*44704f69SBart Van Assche		    $VERBOSE_ECHO "Cannot find $tool with which"
643*44704f69SBart Van Assche		    continue;
644*44704f69SBart Van Assche		fi
645*44704f69SBart Van Assche		if test ! -f "$_glti" ; then
646*44704f69SBart Van Assche		    $VERBOSE_ECHO "Cannot use $tool, $_glti is not a file"
647*44704f69SBart Van Assche		    continue;
648*44704f69SBart Van Assche		fi
649*44704f69SBart Van Assche		_gltidir="`dirname $_glti`"
650*44704f69SBart Van Assche		if [ "x$_gltidir" = "x" ] ; then
651*44704f69SBart Van Assche		    $VERBOSE_ECHO "Cannot find $tool path with dirname of $_glti"
652*44704f69SBart Van Assche		    continue;
653*44704f69SBart Van Assche		fi
654*44704f69SBart Van Assche		if test ! -d "$_gltidir" ; then
655*44704f69SBart Van Assche		    $VERBOSE_ECHO "Cannot use $tool, $_gltidir is not a directory"
656*44704f69SBart Van Assche		    continue;
657*44704f69SBart Van Assche		fi
658*44704f69SBart Van Assche		HAVE_ALT_LIBTOOLIZE=yes
659*44704f69SBart Van Assche		LIBTOOLIZE="$tool"
660*44704f69SBart Van Assche		$ECHO
661*44704f69SBart Van Assche		$ECHO "Fortunately, $tool was found which means that your system may simply"
662*44704f69SBart Van Assche		$ECHO "have a non-standard or incomplete GNU Autotools install.  If you have"
663*44704f69SBart Van Assche		$ECHO "sufficient system access, it may be possible to quell this warning by"
664*44704f69SBart Van Assche		$ECHO "running:"
665*44704f69SBart Van Assche		$ECHO
666*44704f69SBart Van Assche		sudo -V > /dev/null 2>&1
667*44704f69SBart Van Assche		if [ $? = 0 ] ; then
668*44704f69SBart Van Assche		    $ECHO "   sudo ln -s $_glti $_gltidir/libtoolize"
669*44704f69SBart Van Assche		    $ECHO
670*44704f69SBart Van Assche		else
671*44704f69SBart Van Assche		    $ECHO "   ln -s $_glti $_gltidir/libtoolize"
672*44704f69SBart Van Assche		    $ECHO
673*44704f69SBart Van Assche		    $ECHO "Run that as root or with proper permissions to the $_gltidir directory"
674*44704f69SBart Van Assche		    $ECHO
675*44704f69SBart Van Assche		fi
676*44704f69SBart Van Assche		_ltfound=yes
677*44704f69SBart Van Assche		break
678*44704f69SBart Van Assche	    fi
679*44704f69SBart Van Assche	done
680*44704f69SBart Van Assche    else
681*44704f69SBart Van Assche	_ltfound=yes
682*44704f69SBart Van Assche    fi
683*44704f69SBart Van Asscheelse
684*44704f69SBart Van Assche    _ltfound=yes
685*44704f69SBart Van Assche    $ECHO "Using LIBTOOLIZE environment variable override: $LIBTOOLIZE"
686*44704f69SBart Van Asschefi
687*44704f69SBart Van Assche
688*44704f69SBart Van Assche
689*44704f69SBart Van Assche############################
690*44704f69SBart Van Assche# libtoolize version check #
691*44704f69SBart Van Assche############################
692*44704f69SBart Van Assche_report_error=no
693*44704f69SBart Van Asscheif [ ! "x$_ltfound" = "xyes" ] ; then
694*44704f69SBart Van Assche    $ECHO
695*44704f69SBart Van Assche    $ECHO "ERROR: Unable to locate GNU Libtool."
696*44704f69SBart Van Assche    _report_error=yes
697*44704f69SBart Van Asscheelse
698*44704f69SBart Van Assche    _version="`$LIBTOOLIZE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
699*44704f69SBart Van Assche    if [ "x$_version" = "x" ] ; then
700*44704f69SBart Van Assche	_version="0.0.0"
701*44704f69SBart Van Assche    fi
702*44704f69SBart Van Assche    $ECHO "Found GNU Libtool version $_version"
703*44704f69SBart Van Assche    version_check "$LIBTOOL_VERSION" "$_version"
704*44704f69SBart Van Assche    if [ $? -ne 0 ] ; then
705*44704f69SBart Van Assche	_report_error=yes
706*44704f69SBart Van Assche    fi
707*44704f69SBart Van Asschefi
708*44704f69SBart Van Asscheif [ "x$_report_error" = "xyes" ] ; then
709*44704f69SBart Van Assche    version_error "$LIBTOOL_VERSION" "GNU Libtool"
710*44704f69SBart Van Assche    exit 1
711*44704f69SBart Van Asschefi
712*44704f69SBart Van Assche
713*44704f69SBart Van Assche
714*44704f69SBart Van Assche#####################
715*44704f69SBart Van Assche# check for aclocal #
716*44704f69SBart Van Assche#####################
717*44704f69SBart Van Asscheif [ "x$ACLOCAL" = "x" ] ; then
718*44704f69SBart Van Assche    for ACLOCAL in aclocal ; do
719*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking aclocal version: $ACLOCAL --version"
720*44704f69SBart Van Assche	$ACLOCAL --version > /dev/null 2>&1
721*44704f69SBart Van Assche	if [ $? = 0 ] ; then
722*44704f69SBart Van Assche	    break
723*44704f69SBart Van Assche	fi
724*44704f69SBart Van Assche    done
725*44704f69SBart Van Asscheelse
726*44704f69SBart Van Assche    $ECHO "Using ACLOCAL environment variable override: $ACLOCAL"
727*44704f69SBart Van Asschefi
728*44704f69SBart Van Assche
729*44704f69SBart Van Assche
730*44704f69SBart Van Assche########################
731*44704f69SBart Van Assche# check for autoheader #
732*44704f69SBart Van Assche########################
733*44704f69SBart Van Asscheif [ "x$AUTOHEADER" = "x" ] ; then
734*44704f69SBart Van Assche    for AUTOHEADER in autoheader ; do
735*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking autoheader version: $AUTOHEADER --version"
736*44704f69SBart Van Assche	$AUTOHEADER --version > /dev/null 2>&1
737*44704f69SBart Van Assche	if [ $? = 0 ] ; then
738*44704f69SBart Van Assche	    break
739*44704f69SBart Van Assche	fi
740*44704f69SBart Van Assche    done
741*44704f69SBart Van Asscheelse
742*44704f69SBart Van Assche    $ECHO "Using AUTOHEADER environment variable override: $AUTOHEADER"
743*44704f69SBart Van Asschefi
744*44704f69SBart Van Assche
745*44704f69SBart Van Assche
746*44704f69SBart Van Assche#########################
747*44704f69SBart Van Assche# check if version only #
748*44704f69SBart Van Assche#########################
749*44704f69SBart Van Assche$VERBOSE_ECHO "Checking whether to only output version information"
750*44704f69SBart Van Asscheif [ "x$VERSION_ONLY" = "xyes" ] ; then
751*44704f69SBart Van Assche    $ECHO
752*44704f69SBart Van Assche    ident
753*44704f69SBart Van Assche    $ECHO "---"
754*44704f69SBart Van Assche    $ECHO "Version requested.  No preparation or configuration will be performed."
755*44704f69SBart Van Assche    exit 0
756*44704f69SBart Van Asschefi
757*44704f69SBart Van Assche
758*44704f69SBart Van Assche
759*44704f69SBart Van Assche#################################
760*44704f69SBart Van Assche# PROTECT_FROM_CLOBBER FUNCTION #
761*44704f69SBart Van Assche#################################
762*44704f69SBart Van Asscheprotect_from_clobber ( ) {
763*44704f69SBart Van Assche    PFC_INIT=1
764*44704f69SBart Van Assche
765*44704f69SBart Van Assche    # protect COPYING & INSTALL from overwrite by automake.  the
766*44704f69SBart Van Assche    # automake force option will (inappropriately) ignore the existing
767*44704f69SBart Van Assche    # contents of a COPYING and/or INSTALL files (depending on the
768*44704f69SBart Van Assche    # version) instead of just forcing *missing* files like it does
769*44704f69SBart Van Assche    # for AUTHORS, NEWS, and README. this is broken but extremely
770*44704f69SBart Van Assche    # prevalent behavior, so we protect against it by keeping a backup
771*44704f69SBart Van Assche    # of the file that can later be restored.
772*44704f69SBart Van Assche
773*44704f69SBart Van Assche    for file in COPYING INSTALL ; do
774*44704f69SBart Van Assche	if test -f ${file} ; then
775*44704f69SBart Van Assche	    if test -f ${file}.$$.protect_from_automake.backup ; then
776*44704f69SBart Van Assche		$VERBOSE_ECHO "Already backed up ${file} in `pwd`"
777*44704f69SBart Van Assche	    else
778*44704f69SBart Van Assche		$VERBOSE_ECHO "Backing up ${file} in `pwd`"
779*44704f69SBart Van Assche		$VERBOSE_ECHO "cp -p ${file} ${file}.$$.protect_from_automake.backup"
780*44704f69SBart Van Assche		cp -p ${file} ${file}.$$.protect_from_automake.backup
781*44704f69SBart Van Assche	    fi
782*44704f69SBart Van Assche	fi
783*44704f69SBart Van Assche    done
784*44704f69SBart Van Assche}
785*44704f69SBart Van Assche
786*44704f69SBart Van Assche
787*44704f69SBart Van Assche##############################
788*44704f69SBart Van Assche# RECURSIVE_PROTECT FUNCTION #
789*44704f69SBart Van Assche##############################
790*44704f69SBart Van Asscherecursive_protect ( ) {
791*44704f69SBart Van Assche
792*44704f69SBart Van Assche    # for projects using recursive configure, run the build
793*44704f69SBart Van Assche    # preparation steps for the subdirectories.  this function assumes
794*44704f69SBart Van Assche    # START_PATH was set to pwd before recursion begins so that
795*44704f69SBart Van Assche    # relative paths work.
796*44704f69SBart Van Assche
797*44704f69SBart Van Assche    # git 'r done, protect COPYING and INSTALL from being clobbered
798*44704f69SBart Van Assche    protect_from_clobber
799*44704f69SBart Van Assche
800*44704f69SBart Van Assche    if test -d autom4te.cache ; then
801*44704f69SBart Van Assche	$VERBOSE_ECHO "Found an autom4te.cache directory, deleting it"
802*44704f69SBart Van Assche	$VERBOSE_ECHO "rm -rf autom4te.cache"
803*44704f69SBart Van Assche	rm -rf autom4te.cache
804*44704f69SBart Van Assche    fi
805*44704f69SBart Van Assche
806*44704f69SBart Van Assche    # find configure template
807*44704f69SBart Van Assche    _configure="`locate_configure_template`"
808*44704f69SBart Van Assche    if [ "x$_configure" = "x" ] ; then
809*44704f69SBart Van Assche	return
810*44704f69SBart Van Assche    fi
811*44704f69SBart Van Assche    # $VERBOSE_ECHO "Looking for configure template found `pwd`/$_configure"
812*44704f69SBart Van Assche
813*44704f69SBart Van Assche    # look for subdirs
814*44704f69SBart Van Assche    # $VERBOSE_ECHO "Looking for subdirs in `pwd`"
815*44704f69SBart Van Assche    _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ 	]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
816*44704f69SBart Van Assche    CHECK_DIRS=""
817*44704f69SBart Van Assche    for dir in $_det_config_subdirs ; do
818*44704f69SBart Van Assche	if test -d "`pwd`/$dir" ; then
819*44704f69SBart Van Assche	    CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
820*44704f69SBart Van Assche	fi
821*44704f69SBart Van Assche    done
822*44704f69SBart Van Assche
823*44704f69SBart Van Assche    # process subdirs
824*44704f69SBart Van Assche    if [ ! "x$CHECK_DIRS" = "x" ] ; then
825*44704f69SBart Van Assche	$VERBOSE_ECHO "Recursively scanning the following directories:"
826*44704f69SBart Van Assche	$VERBOSE_ECHO "  $CHECK_DIRS"
827*44704f69SBart Van Assche	for dir in $CHECK_DIRS ; do
828*44704f69SBart Van Assche	    $VERBOSE_ECHO "Protecting files from automake in $dir"
829*44704f69SBart Van Assche	    cd "$START_PATH"
830*44704f69SBart Van Assche	    eval "cd $dir"
831*44704f69SBart Van Assche
832*44704f69SBart Van Assche	    # recursively git 'r done
833*44704f69SBart Van Assche	    recursive_protect
834*44704f69SBart Van Assche	done
835*44704f69SBart Van Assche    fi
836*44704f69SBart Van Assche} # end of recursive_protect
837*44704f69SBart Van Assche
838*44704f69SBart Van Assche
839*44704f69SBart Van Assche#############################
840*44704f69SBart Van Assche# RESTORE_CLOBBERED FUNCION #
841*44704f69SBart Van Assche#############################
842*44704f69SBart Van Asscherestore_clobbered ( ) {
843*44704f69SBart Van Assche
844*44704f69SBart Van Assche    # The automake (and autoreconf by extension) -f/--force-missing
845*44704f69SBart Van Assche    # option may overwrite COPYING and INSTALL even if they do exist.
846*44704f69SBart Van Assche    # Here we restore the files if necessary.
847*44704f69SBart Van Assche
848*44704f69SBart Van Assche    spacer=no
849*44704f69SBart Van Assche
850*44704f69SBart Van Assche    for file in COPYING INSTALL ; do
851*44704f69SBart Van Assche	if test -f ${file}.$$.protect_from_automake.backup ; then
852*44704f69SBart Van Assche	    if test -f ${file} ; then
853*44704f69SBart Van Assche	    # compare entire content, restore if needed
854*44704f69SBart Van Assche	    if test "x`cat ${file}`" != "x`cat ${file}.$$.protect_from_automake.backup`" ; then
855*44704f69SBart Van Assche		if test "x$spacer" = "xno" ; then
856*44704f69SBart Van Assche		    $VERBOSE_ECHO
857*44704f69SBart Van Assche		    spacer=yes
858*44704f69SBart Van Assche		fi
859*44704f69SBart Van Assche		# restore the backup
860*44704f69SBart Van Assche		$VERBOSE_ECHO "Restoring ${file} from backup (automake -f likely clobbered it)"
861*44704f69SBart Van Assche		$VERBOSE_ECHO "rm -f ${file}"
862*44704f69SBart Van Assche		rm -f ${file}
863*44704f69SBart Van Assche		$VERBOSE_ECHO "mv ${file}.$$.protect_from_automake.backup ${file}"
864*44704f69SBart Van Assche		mv ${file}.$$.protect_from_automake.backup ${file}
865*44704f69SBart Van Assche	    fi # check contents
866*44704f69SBart Van Assche	    elif test -f ${file}.$$.protect_from_automake.backup ; then
867*44704f69SBart Van Assche		$VERBOSE_ECHO "mv ${file}.$$.protect_from_automake.backup ${file}"
868*44704f69SBart Van Assche		mv ${file}.$$.protect_from_automake.backup ${file}
869*44704f69SBart Van Assche	    fi # -f ${file}
870*44704f69SBart Van Assche
871*44704f69SBart Van Assche	    # just in case
872*44704f69SBart Van Assche	    $VERBOSE_ECHO "rm -f ${file}.$$.protect_from_automake.backup"
873*44704f69SBart Van Assche	    rm -f ${file}.$$.protect_from_automake.backup
874*44704f69SBart Van Assche	fi # -f ${file}.$$.protect_from_automake.backup
875*44704f69SBart Van Assche    done
876*44704f69SBart Van Assche
877*44704f69SBart Van Assche    CONFIGURE="`locate_configure_template`"
878*44704f69SBart Van Assche    if [ "x$CONFIGURE" = "x" ] ; then
879*44704f69SBart Van Assche	return
880*44704f69SBart Van Assche    fi
881*44704f69SBart Van Assche
882*44704f69SBart Van Assche    _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ 	]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
883*44704f69SBart Van Assche    if test ! -d "$_aux_dir" ; then
884*44704f69SBart Van Assche	_aux_dir=.
885*44704f69SBart Van Assche    fi
886*44704f69SBart Van Assche
887*44704f69SBart Van Assche    for file in config.guess config.sub ltmain.sh ; do
888*44704f69SBart Van Assche	if test -f "${_aux_dir}/${file}" ; then
889*44704f69SBart Van Assche	    $VERBOSE_ECHO "rm -f \"${_aux_dir}/${file}.backup\""
890*44704f69SBart Van Assche	    rm -f "${_aux_dir}/${file}.backup"
891*44704f69SBart Van Assche	fi
892*44704f69SBart Van Assche    done
893*44704f69SBart Van Assche} # end of restore_clobbered
894*44704f69SBart Van Assche
895*44704f69SBart Van Assche
896*44704f69SBart Van Assche##############################
897*44704f69SBart Van Assche# RECURSIVE_RESTORE FUNCTION #
898*44704f69SBart Van Assche##############################
899*44704f69SBart Van Asscherecursive_restore ( ) {
900*44704f69SBart Van Assche
901*44704f69SBart Van Assche    # restore COPYING and INSTALL from backup if they were clobbered
902*44704f69SBart Van Assche    # for each directory recursively.
903*44704f69SBart Van Assche
904*44704f69SBart Van Assche    # git 'r undone
905*44704f69SBart Van Assche    restore_clobbered
906*44704f69SBart Van Assche
907*44704f69SBart Van Assche    # find configure template
908*44704f69SBart Van Assche    _configure="`locate_configure_template`"
909*44704f69SBart Van Assche    if [ "x$_configure" = "x" ] ; then
910*44704f69SBart Van Assche	return
911*44704f69SBart Van Assche    fi
912*44704f69SBart Van Assche
913*44704f69SBart Van Assche    # look for subdirs
914*44704f69SBart Van Assche    _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ 	]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
915*44704f69SBart Van Assche    CHECK_DIRS=""
916*44704f69SBart Van Assche    for dir in $_det_config_subdirs ; do
917*44704f69SBart Van Assche	if test -d "`pwd`/$dir" ; then
918*44704f69SBart Van Assche	    CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
919*44704f69SBart Van Assche	fi
920*44704f69SBart Van Assche    done
921*44704f69SBart Van Assche
922*44704f69SBart Van Assche    # process subdirs
923*44704f69SBart Van Assche    if [ ! "x$CHECK_DIRS" = "x" ] ; then
924*44704f69SBart Van Assche	$VERBOSE_ECHO "Recursively scanning the following directories:"
925*44704f69SBart Van Assche	$VERBOSE_ECHO "  $CHECK_DIRS"
926*44704f69SBart Van Assche	for dir in $CHECK_DIRS ; do
927*44704f69SBart Van Assche	    $VERBOSE_ECHO "Checking files for automake damage in $dir"
928*44704f69SBart Van Assche	    cd "$START_PATH"
929*44704f69SBart Van Assche	    eval "cd $dir"
930*44704f69SBart Van Assche
931*44704f69SBart Van Assche	    # recursively git 'r undone
932*44704f69SBart Van Assche	    recursive_restore
933*44704f69SBart Van Assche	done
934*44704f69SBart Van Assche    fi
935*44704f69SBart Van Assche} # end of recursive_restore
936*44704f69SBart Van Assche
937*44704f69SBart Van Assche
938*44704f69SBart Van Assche#######################
939*44704f69SBart Van Assche# INITIALIZE FUNCTION #
940*44704f69SBart Van Assche#######################
941*44704f69SBart Van Asscheinitialize ( ) {
942*44704f69SBart Van Assche
943*44704f69SBart Van Assche    # this routine performs a variety of directory-specific
944*44704f69SBart Van Assche    # initializations.  some are sanity checks, some are preventive,
945*44704f69SBart Van Assche    # and some are necessary setup detection.
946*44704f69SBart Van Assche    #
947*44704f69SBart Van Assche    # this function sets:
948*44704f69SBart Van Assche    #   CONFIGURE
949*44704f69SBart Van Assche    #   SEARCH_DIRS
950*44704f69SBart Van Assche    #   CONFIG_SUBDIRS
951*44704f69SBart Van Assche
952*44704f69SBart Van Assche    ##################################
953*44704f69SBart Van Assche    # check for a configure template #
954*44704f69SBart Van Assche    ##################################
955*44704f69SBart Van Assche    CONFIGURE="`locate_configure_template`"
956*44704f69SBart Van Assche    if [ "x$CONFIGURE" = "x" ] ; then
957*44704f69SBart Van Assche	$ECHO
958*44704f69SBart Van Assche	$ECHO "A configure.ac or configure.in file could not be located implying"
959*44704f69SBart Van Assche	$ECHO "that the GNU Build System is at least not used in this directory.  In"
960*44704f69SBart Van Assche	$ECHO "any case, there is nothing to do here without one of those files."
961*44704f69SBart Van Assche	$ECHO
962*44704f69SBart Van Assche	$ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
963*44704f69SBart Van Assche	exit 1
964*44704f69SBart Van Assche    fi
965*44704f69SBart Van Assche
966*44704f69SBart Van Assche    #####################
967*44704f69SBart Van Assche    # detect an aux dir #
968*44704f69SBart Van Assche    #####################
969*44704f69SBart Van Assche    _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ 	]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
970*44704f69SBart Van Assche    if test ! -d "$_aux_dir" ; then
971*44704f69SBart Van Assche	_aux_dir=.
972*44704f69SBart Van Assche    else
973*44704f69SBart Van Assche	$VERBOSE_ECHO "Detected auxillary directory: $_aux_dir"
974*44704f69SBart Van Assche    fi
975*44704f69SBart Van Assche
976*44704f69SBart Van Assche    ################################
977*44704f69SBart Van Assche    # detect a recursive configure #
978*44704f69SBart Van Assche    ################################
979*44704f69SBart Van Assche    CONFIG_SUBDIRS=""
980*44704f69SBart Van Assche    _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $CONFIGURE | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ 	]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
981*44704f69SBart Van Assche    for dir in $_det_config_subdirs ; do
982*44704f69SBart Van Assche	if test -d "`pwd`/$dir" ; then
983*44704f69SBart Van Assche	    $VERBOSE_ECHO "Detected recursive configure directory: `pwd`/$dir"
984*44704f69SBart Van Assche	    CONFIG_SUBDIRS="$CONFIG_SUBDIRS `pwd`/$dir"
985*44704f69SBart Van Assche	fi
986*44704f69SBart Van Assche    done
987*44704f69SBart Van Assche
988*44704f69SBart Van Assche    ###########################################################
989*44704f69SBart Van Assche    # make sure certain required files exist for GNU projects #
990*44704f69SBart Van Assche    ###########################################################
991*44704f69SBart Van Assche    _marker_found=""
992*44704f69SBart Van Assche    _marker_found_message_intro='Detected non-GNU marker "'
993*44704f69SBart Van Assche    _marker_found_message_mid='" in '
994*44704f69SBart Van Assche    for marker in foreign cygnus ; do
995*44704f69SBart Van Assche	_marker_found_message=${_marker_found_message_intro}${marker}${_marker_found_message_mid}
996*44704f69SBart Van Assche	_marker_found="`grep 'AM_INIT_AUTOMAKE.*'${marker} $CONFIGURE`"
997*44704f69SBart Van Assche	if [ ! "x$_marker_found" = "x" ] ; then
998*44704f69SBart Van Assche	    $VERBOSE_ECHO "${_marker_found_message}`basename \"$CONFIGURE\"`"
999*44704f69SBart Van Assche	    break
1000*44704f69SBart Van Assche	fi
1001*44704f69SBart Van Assche	if test -f "`dirname \"$CONFIGURE\"/Makefile.am`" ; then
1002*44704f69SBart Van Assche	    _marker_found="`grep 'AUTOMAKE_OPTIONS.*'${marker} Makefile.am`"
1003*44704f69SBart Van Assche	    if [ ! "x$_marker_found" = "x" ] ; then
1004*44704f69SBart Van Assche		$VERBOSE_ECHO "${_marker_found_message}Makefile.am"
1005*44704f69SBart Van Assche		break
1006*44704f69SBart Van Assche	    fi
1007*44704f69SBart Van Assche	fi
1008*44704f69SBart Van Assche    done
1009*44704f69SBart Van Assche    if [ "x${_marker_found}" = "x" ] ; then
1010*44704f69SBart Van Assche	_suggest_foreign=no
1011*44704f69SBart Van Assche	for file in AUTHORS COPYING ChangeLog INSTALL NEWS README ; do
1012*44704f69SBart Van Assche	    if [ ! -f $file ] ; then
1013*44704f69SBart Van Assche		$VERBOSE_ECHO "Touching ${file} since it does not exist"
1014*44704f69SBart Van Assche		_suggest_foreign=yes
1015*44704f69SBart Van Assche		touch $file
1016*44704f69SBart Van Assche	    fi
1017*44704f69SBart Van Assche	done
1018*44704f69SBart Van Assche
1019*44704f69SBart Van Assche	if [ "x${_suggest_foreign}" = "xyes" ] ; then
1020*44704f69SBart Van Assche	    $ECHO
1021*44704f69SBart Van Assche	    $ECHO "Warning: Several files expected of projects that conform to the GNU"
1022*44704f69SBart Van Assche	    $ECHO "coding standards were not found.  The files were automatically added"
1023*44704f69SBart Van Assche	    $ECHO "for you since you do not have a 'foreign' declaration specified."
1024*44704f69SBart Van Assche	    $ECHO
1025*44704f69SBart Van Assche	    $ECHO "Considered adding 'foreign' to AM_INIT_AUTOMAKE in `basename \"$CONFIGURE\"`"
1026*44704f69SBart Van Assche	    if test -f "`dirname \"$CONFIGURE\"/Makefile.am`" ; then
1027*44704f69SBart Van Assche		$ECHO "or to AUTOMAKE_OPTIONS in your top-level Makefile.am file."
1028*44704f69SBart Van Assche	    fi
1029*44704f69SBart Van Assche	    $ECHO
1030*44704f69SBart Van Assche	fi
1031*44704f69SBart Van Assche    fi
1032*44704f69SBart Van Assche
1033*44704f69SBart Van Assche    ##################################################
1034*44704f69SBart Van Assche    # make sure certain generated files do not exist #
1035*44704f69SBart Van Assche    ##################################################
1036*44704f69SBart Van Assche    for file in config.guess config.sub ltmain.sh ; do
1037*44704f69SBart Van Assche	if test -f "${_aux_dir}/${file}" ; then
1038*44704f69SBart Van Assche	    $VERBOSE_ECHO "mv -f \"${_aux_dir}/${file}\" \"${_aux_dir}/${file}.backup\""
1039*44704f69SBart Van Assche	    mv -f "${_aux_dir}/${file}" "${_aux_dir}/${file}.backup"
1040*44704f69SBart Van Assche	fi
1041*44704f69SBart Van Assche    done
1042*44704f69SBart Van Assche
1043*44704f69SBart Van Assche    ############################
1044*44704f69SBart Van Assche    # search alternate m4 dirs #
1045*44704f69SBart Van Assche    ############################
1046*44704f69SBart Van Assche    SEARCH_DIRS=""
1047*44704f69SBart Van Assche    for dir in m4 ; do
1048*44704f69SBart Van Assche	if [ -d $dir ] ; then
1049*44704f69SBart Van Assche	    $VERBOSE_ECHO "Found extra aclocal search directory: $dir"
1050*44704f69SBart Van Assche	    SEARCH_DIRS="$SEARCH_DIRS -I $dir"
1051*44704f69SBart Van Assche	fi
1052*44704f69SBart Van Assche    done
1053*44704f69SBart Van Assche
1054*44704f69SBart Van Assche    ######################################
1055*44704f69SBart Van Assche    # remove any previous build products #
1056*44704f69SBart Van Assche    ######################################
1057*44704f69SBart Van Assche    if test -d autom4te.cache ; then
1058*44704f69SBart Van Assche	$VERBOSE_ECHO "Found an autom4te.cache directory, deleting it"
1059*44704f69SBart Van Assche	$VERBOSE_ECHO "rm -rf autom4te.cache"
1060*44704f69SBart Van Assche	rm -rf autom4te.cache
1061*44704f69SBart Van Assche    fi
1062*44704f69SBart Van Assche# tcl/tk (and probably others) have a customized aclocal.m4, so can't delete it
1063*44704f69SBart Van Assche#     if test -f aclocal.m4 ; then
1064*44704f69SBart Van Assche# 	$VERBOSE_ECHO "Found an aclocal.m4 file, deleting it"
1065*44704f69SBart Van Assche# 	$VERBOSE_ECHO "rm -f aclocal.m4"
1066*44704f69SBart Van Assche# 	rm -f aclocal.m4
1067*44704f69SBart Van Assche#     fi
1068*44704f69SBart Van Assche
1069*44704f69SBart Van Assche} # end of initialize()
1070*44704f69SBart Van Assche
1071*44704f69SBart Van Assche
1072*44704f69SBart Van Assche##############
1073*44704f69SBart Van Assche# initialize #
1074*44704f69SBart Van Assche##############
1075*44704f69SBart Van Assche
1076*44704f69SBart Van Assche# stash path
1077*44704f69SBart Van AsscheSTART_PATH="`pwd`"
1078*44704f69SBart Van Assche
1079*44704f69SBart Van Assche# Before running autoreconf or manual steps, some prep detection work
1080*44704f69SBart Van Assche# is necessary or useful.  Only needs to occur once per directory, but
1081*44704f69SBart Van Assche# does need to traverse the entire subconfigure hierarchy to protect
1082*44704f69SBart Van Assche# files from being clobbered even by autoreconf.
1083*44704f69SBart Van Asscherecursive_protect
1084*44704f69SBart Van Assche
1085*44704f69SBart Van Assche# start from where we started
1086*44704f69SBart Van Asschecd "$START_PATH"
1087*44704f69SBart Van Assche
1088*44704f69SBart Van Assche# get ready to process
1089*44704f69SBart Van Asscheinitialize
1090*44704f69SBart Van Assche
1091*44704f69SBart Van Assche
1092*44704f69SBart Van Assche#########################################
1093*44704f69SBart Van Assche# DOWNLOAD_GNULIB_CONFIG_GUESS FUNCTION #
1094*44704f69SBart Van Assche#########################################
1095*44704f69SBart Van Assche
1096*44704f69SBart Van Assche# TODO - should make sure wget/curl exist and/or work before trying to
1097*44704f69SBart Van Assche# use them.
1098*44704f69SBart Van Assche
1099*44704f69SBart Van Asschedownload_gnulib_config_guess () {
1100*44704f69SBart Van Assche    # abuse gitweb to download gnulib's latest config.guess via HTTP
1101*44704f69SBart Van Assche    config_guess_temp="config.guess.$$.download"
1102*44704f69SBart Van Assche    ret=1
1103*44704f69SBart Van Assche    for __cmd in wget curl fetch ; do
1104*44704f69SBart Van Assche	$VERBOSE_ECHO "Checking for command ${__cmd}"
1105*44704f69SBart Van Assche	${__cmd} --version > /dev/null 2>&1
1106*44704f69SBart Van Assche	ret=$?
1107*44704f69SBart Van Assche	if [ ! $ret = 0 ] ; then
1108*44704f69SBart Van Assche	    continue
1109*44704f69SBart Van Assche        fi
1110*44704f69SBart Van Assche
1111*44704f69SBart Van Assche	__cmd_version=`${__cmd} --version | head -n 1 | sed -e 's/^[^0-9]\+//' -e 's/ .*//'`
1112*44704f69SBart Van Assche	$VERBOSE_ECHO "Found ${__cmd} ${__cmd_version}"
1113*44704f69SBart Van Assche
1114*44704f69SBart Van Assche	opts=""
1115*44704f69SBart Van Assche	case ${__cmd} in
1116*44704f69SBart Van Assche	    wget)
1117*44704f69SBart Van Assche		opts="-O"
1118*44704f69SBart Van Assche		;;
1119*44704f69SBart Van Assche	    curl)
1120*44704f69SBart Van Assche		opts="-o"
1121*44704f69SBart Van Assche		;;
1122*44704f69SBart Van Assche	    fetch)
1123*44704f69SBart Van Assche		opts="-t 5 -f"
1124*44704f69SBart Van Assche		;;
1125*44704f69SBart Van Assche	esac
1126*44704f69SBart Van Assche
1127*44704f69SBart Van Assche	$VERBOSE_ECHO "Running $__cmd \"${CONFIG_GUESS_URL}\" $opts \"${config_guess_temp}\""
1128*44704f69SBart Van Assche	eval "$__cmd \"${CONFIG_GUESS_URL}\" $opts \"${config_guess_temp}\"" > /dev/null 2>&1
1129*44704f69SBart Van Assche	if [ $? = 0 ] ; then
1130*44704f69SBart Van Assche	    mv -f "${config_guess_temp}" ${_aux_dir}/config.guess
1131*44704f69SBart Van Assche	    ret=0
1132*44704f69SBart Van Assche	    break
1133*44704f69SBart Van Assche	fi
1134*44704f69SBart Van Assche    done
1135*44704f69SBart Van Assche
1136*44704f69SBart Van Assche    if [ ! $ret = 0 ] ; then
1137*44704f69SBart Van Assche	$ECHO "Warning: config.guess download failed from: $CONFIG_GUESS_URL"
1138*44704f69SBart Van Assche	rm -f "${config_guess_temp}"
1139*44704f69SBart Van Assche    fi
1140*44704f69SBart Van Assche}
1141*44704f69SBart Van Assche
1142*44704f69SBart Van Assche
1143*44704f69SBart Van Assche##############################
1144*44704f69SBart Van Assche# LIBTOOLIZE_NEEDED FUNCTION #
1145*44704f69SBart Van Assche##############################
1146*44704f69SBart Van Asschelibtoolize_needed () {
1147*44704f69SBart Van Assche    ret=1 # means no, don't need libtoolize
1148*44704f69SBart Van Assche    for feature in AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT ; do
1149*44704f69SBart Van Assche	$VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
1150*44704f69SBart Van Assche	found="`grep \"^$feature.*\" $CONFIGURE`"
1151*44704f69SBart Van Assche	if [ ! "x$found" = "x" ] ; then
1152*44704f69SBart Van Assche	    ret=0 # means yes, need to run libtoolize
1153*44704f69SBart Van Assche	    break
1154*44704f69SBart Van Assche	fi
1155*44704f69SBart Van Assche    done
1156*44704f69SBart Van Assche    return ${ret}
1157*44704f69SBart Van Assche}
1158*44704f69SBart Van Assche
1159*44704f69SBart Van Assche
1160*44704f69SBart Van Assche
1161*44704f69SBart Van Assche############################################
1162*44704f69SBart Van Assche# prepare build via autoreconf or manually #
1163*44704f69SBart Van Assche############################################
1164*44704f69SBart Van Asschereconfigure_manually=no
1165*44704f69SBart Van Asscheif [ "x$HAVE_AUTORECONF" = "xyes" ] ; then
1166*44704f69SBart Van Assche    $ECHO
1167*44704f69SBart Van Assche    $ECHO $ECHO_N "Automatically preparing build ... $ECHO_C"
1168*44704f69SBart Van Assche
1169*44704f69SBart Van Assche    $VERBOSE_ECHO "$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS"
1170*44704f69SBart Van Assche    autoreconf_output="`$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS 2>&1`"
1171*44704f69SBart Van Assche    ret=$?
1172*44704f69SBart Van Assche    $VERBOSE_ECHO "$autoreconf_output"
1173*44704f69SBart Van Assche
1174*44704f69SBart Van Assche    if [ ! $ret = 0 ] ; then
1175*44704f69SBart Van Assche	if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then
1176*44704f69SBart Van Assche	    if [ ! "x`echo \"$autoreconf_output\" | grep libtoolize | grep \"No such file or directory\"`" = "x" ] ; then
1177*44704f69SBart Van Assche		$ECHO
1178*44704f69SBart Van Assche		$ECHO "Warning: autoreconf failed but due to what is usually a common libtool"
1179*44704f69SBart Van Assche		$ECHO "misconfiguration issue.  This problem is encountered on systems that"
1180*44704f69SBart Van Assche		$ECHO "have installed libtoolize under a different name without providing a"
1181*44704f69SBart Van Assche		$ECHO "symbolic link or without setting the LIBTOOLIZE environment variable."
1182*44704f69SBart Van Assche		$ECHO
1183*44704f69SBart Van Assche		$ECHO "Restarting the preparation steps with LIBTOOLIZE set to $LIBTOOLIZE"
1184*44704f69SBart Van Assche
1185*44704f69SBart Van Assche		export LIBTOOLIZE
1186*44704f69SBart Van Assche		RUN_RECURSIVE=no
1187*44704f69SBart Van Assche		export RUN_RECURSIVE
1188*44704f69SBart Van Assche		untrap_abnormal
1189*44704f69SBart Van Assche
1190*44704f69SBart Van Assche		$VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
1191*44704f69SBart Van Assche		sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
1192*44704f69SBart Van Assche		exit $?
1193*44704f69SBart Van Assche	    fi
1194*44704f69SBart Van Assche	fi
1195*44704f69SBart Van Assche
1196*44704f69SBart Van Assche	$ECHO "Warning: $AUTORECONF failed"
1197*44704f69SBart Van Assche
1198*44704f69SBart Van Assche	if test -f ltmain.sh ; then
1199*44704f69SBart Van Assche	    $ECHO "libtoolize being run by autoreconf is not creating ltmain.sh in the auxillary directory like it should"
1200*44704f69SBart Van Assche	fi
1201*44704f69SBart Van Assche
1202*44704f69SBart Van Assche	$ECHO "Attempting to run the preparation steps individually"
1203*44704f69SBart Van Assche	reconfigure_manually=yes
1204*44704f69SBart Van Assche    else
1205*44704f69SBart Van Assche	if [ "x$DOWNLOAD" = "xyes" ] ; then
1206*44704f69SBart Van Assche	    if libtoolize_needed ; then
1207*44704f69SBart Van Assche		download_gnulib_config_guess
1208*44704f69SBart Van Assche	    fi
1209*44704f69SBart Van Assche	fi
1210*44704f69SBart Van Assche    fi
1211*44704f69SBart Van Asscheelse
1212*44704f69SBart Van Assche    reconfigure_manually=yes
1213*44704f69SBart Van Asschefi
1214*44704f69SBart Van Assche
1215*44704f69SBart Van Assche
1216*44704f69SBart Van Assche############################
1217*44704f69SBart Van Assche# LIBTOOL_FAILURE FUNCTION #
1218*44704f69SBart Van Assche############################
1219*44704f69SBart Van Asschelibtool_failure ( ) {
1220*44704f69SBart Van Assche
1221*44704f69SBart Van Assche    # libtool is rather error-prone in comparison to the other
1222*44704f69SBart Van Assche    # autotools and this routine attempts to compensate for some
1223*44704f69SBart Van Assche    # common failures.  the output after a libtoolize failure is
1224*44704f69SBart Van Assche    # parsed for an error related to AC_PROG_LIBTOOL and if found, we
1225*44704f69SBart Van Assche    # attempt to inject a project-provided libtool.m4 file.
1226*44704f69SBart Van Assche
1227*44704f69SBart Van Assche    _autoconf_output="$1"
1228*44704f69SBart Van Assche
1229*44704f69SBart Van Assche    if [ "x$RUN_RECURSIVE" = "xno" ] ; then
1230*44704f69SBart Van Assche	# we already tried the libtool.m4, don't try again
1231*44704f69SBart Van Assche	return 1
1232*44704f69SBart Van Assche    fi
1233*44704f69SBart Van Assche
1234*44704f69SBart Van Assche    if test -f "$LIBTOOL_M4" ; then
1235*44704f69SBart Van Assche	found_libtool="`$ECHO $_autoconf_output | grep AC_PROG_LIBTOOL`"
1236*44704f69SBart Van Assche	if test ! "x$found_libtool" = "x" ; then
1237*44704f69SBart Van Assche	    if test -f acinclude.m4 ; then
1238*44704f69SBart Van Assche		rm -f acinclude.m4.$$.backup
1239*44704f69SBart Van Assche		$VERBOSE_ECHO "cat acinclude.m4 > acinclude.m4.$$.backup"
1240*44704f69SBart Van Assche		cat acinclude.m4 > acinclude.m4.$$.backup
1241*44704f69SBart Van Assche	    fi
1242*44704f69SBart Van Assche	    $VERBOSE_ECHO "cat \"$LIBTOOL_M4\" >> acinclude.m4"
1243*44704f69SBart Van Assche	    chmod u+w acinclude.m4
1244*44704f69SBart Van Assche	    cat "$LIBTOOL_M4" >> acinclude.m4
1245*44704f69SBart Van Assche
1246*44704f69SBart Van Assche	    # don't keep doing this
1247*44704f69SBart Van Assche	    RUN_RECURSIVE=no
1248*44704f69SBart Van Assche	    export RUN_RECURSIVE
1249*44704f69SBart Van Assche	    untrap_abnormal
1250*44704f69SBart Van Assche
1251*44704f69SBart Van Assche	    $ECHO
1252*44704f69SBart Van Assche	    $ECHO "Restarting the preparation steps with libtool macros in acinclude.m4"
1253*44704f69SBart Van Assche	    $VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
1254*44704f69SBart Van Assche	    sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
1255*44704f69SBart Van Assche	    exit $?
1256*44704f69SBart Van Assche	fi
1257*44704f69SBart Van Assche    fi
1258*44704f69SBart Van Assche}
1259*44704f69SBart Van Assche
1260*44704f69SBart Van Assche
1261*44704f69SBart Van Assche###########################
1262*44704f69SBart Van Assche# MANUAL_AUTOGEN FUNCTION #
1263*44704f69SBart Van Assche###########################
1264*44704f69SBart Van Asschemanual_autogen ( ) {
1265*44704f69SBart Van Assche
1266*44704f69SBart Van Assche    ##################################################
1267*44704f69SBart Van Assche    # Manual preparation steps taken are as follows: #
1268*44704f69SBart Van Assche    #   aclocal [-I m4]                              #
1269*44704f69SBart Van Assche    #   libtoolize --automake -c -f                  #
1270*44704f69SBart Van Assche    #   aclocal [-I m4]                              #
1271*44704f69SBart Van Assche    #   autoconf -f                                  #
1272*44704f69SBart Van Assche    #   autoheader                                   #
1273*44704f69SBart Van Assche    #   automake -a -c -f                            #
1274*44704f69SBart Van Assche    ##################################################
1275*44704f69SBart Van Assche
1276*44704f69SBart Van Assche    ###########
1277*44704f69SBart Van Assche    # aclocal #
1278*44704f69SBart Van Assche    ###########
1279*44704f69SBart Van Assche    $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS"
1280*44704f69SBart Van Assche    aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`"
1281*44704f69SBart Van Assche    ret=$?
1282*44704f69SBart Van Assche    $VERBOSE_ECHO "$aclocal_output"
1283*44704f69SBart Van Assche    if [ ! $ret = 0 ] ; then $ECHO "ERROR: $ACLOCAL failed" && exit 2 ; fi
1284*44704f69SBart Van Assche
1285*44704f69SBart Van Assche    ##############
1286*44704f69SBart Van Assche    # libtoolize #
1287*44704f69SBart Van Assche    ##############
1288*44704f69SBart Van Assche    if libtoolize_needed ; then
1289*44704f69SBart Van Assche	if [ "x$HAVE_LIBTOOLIZE" = "xyes" ] ; then
1290*44704f69SBart Van Assche	    $VERBOSE_ECHO "$LIBTOOLIZE $LIBTOOLIZE_OPTIONS"
1291*44704f69SBart Van Assche	    libtoolize_output="`$LIBTOOLIZE $LIBTOOLIZE_OPTIONS 2>&1`"
1292*44704f69SBart Van Assche	    ret=$?
1293*44704f69SBart Van Assche	    $VERBOSE_ECHO "$libtoolize_output"
1294*44704f69SBart Van Assche
1295*44704f69SBart Van Assche	    if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
1296*44704f69SBart Van Assche	else
1297*44704f69SBart Van Assche	    if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then
1298*44704f69SBart Van Assche		$VERBOSE_ECHO "$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS"
1299*44704f69SBart Van Assche		libtoolize_output="`$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS 2>&1`"
1300*44704f69SBart Van Assche		ret=$?
1301*44704f69SBart Van Assche		$VERBOSE_ECHO "$libtoolize_output"
1302*44704f69SBart Van Assche
1303*44704f69SBart Van Assche		if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
1304*44704f69SBart Van Assche	    fi
1305*44704f69SBart Van Assche	fi
1306*44704f69SBart Van Assche
1307*44704f69SBart Van Assche	###########
1308*44704f69SBart Van Assche	# aclocal #
1309*44704f69SBart Van Assche	###########
1310*44704f69SBart Van Assche	# re-run again as instructed by libtoolize
1311*44704f69SBart Van Assche	$VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS"
1312*44704f69SBart Van Assche	aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`"
1313*44704f69SBart Van Assche	ret=$?
1314*44704f69SBart Van Assche	$VERBOSE_ECHO "$aclocal_output"
1315*44704f69SBart Van Assche
1316*44704f69SBart Van Assche	# libtoolize might put ltmain.sh in the wrong place
1317*44704f69SBart Van Assche	if test -f ltmain.sh ; then
1318*44704f69SBart Van Assche	    if test ! -f "${_aux_dir}/ltmain.sh" ; then
1319*44704f69SBart Van Assche		$ECHO
1320*44704f69SBart Van Assche		$ECHO "Warning:  $LIBTOOLIZE is creating ltmain.sh in the wrong directory"
1321*44704f69SBart Van Assche		$ECHO
1322*44704f69SBart Van Assche		$ECHO "Fortunately, the problem can be worked around by simply copying the"
1323*44704f69SBart Van Assche		$ECHO "file to the appropriate location (${_aux_dir}/).  This has been done for you."
1324*44704f69SBart Van Assche		$ECHO
1325*44704f69SBart Van Assche		$VERBOSE_ECHO "cp -p ltmain.sh \"${_aux_dir}/ltmain.sh\""
1326*44704f69SBart Van Assche		cp -p ltmain.sh "${_aux_dir}/ltmain.sh"
1327*44704f69SBart Van Assche		$ECHO $ECHO_N "Continuing build preparation ... $ECHO_C"
1328*44704f69SBart Van Assche	    fi
1329*44704f69SBart Van Assche	fi # ltmain.sh
1330*44704f69SBart Van Assche
1331*44704f69SBart Van Assche	if [ "x$DOWNLOAD" = "xyes" ] ; then
1332*44704f69SBart Van Assche	    download_gnulib_config_guess
1333*44704f69SBart Van Assche	fi
1334*44704f69SBart Van Assche    fi # libtoolize_needed
1335*44704f69SBart Van Assche
1336*44704f69SBart Van Assche    ############
1337*44704f69SBart Van Assche    # autoconf #
1338*44704f69SBart Van Assche    ############
1339*44704f69SBart Van Assche    $VERBOSE_ECHO
1340*44704f69SBart Van Assche    $VERBOSE_ECHO "$AUTOCONF $AUTOCONF_OPTIONS"
1341*44704f69SBart Van Assche    autoconf_output="`$AUTOCONF $AUTOCONF_OPTIONS 2>&1`"
1342*44704f69SBart Van Assche    ret=$?
1343*44704f69SBart Van Assche    $VERBOSE_ECHO "$autoconf_output"
1344*44704f69SBart Van Assche
1345*44704f69SBart Van Assche    if [ ! $ret = 0 ] ; then
1346*44704f69SBart Van Assche	# retry without the -f and check for usage of macros that are too new
1347*44704f69SBart Van Assche	ac2_59_macros="AC_C_RESTRICT AC_INCLUDES_DEFAULT AC_LANG_ASSERT AC_LANG_WERROR AS_SET_CATFILE"
1348*44704f69SBart Van Assche	ac2_55_macros="AC_COMPILER_IFELSE AC_FUNC_MBRTOWC AC_HEADER_STDBOOL AC_LANG_CONFTEST AC_LANG_SOURCE AC_LANG_PROGRAM AC_LANG_CALL AC_LANG_FUNC_TRY_LINK AC_MSG_FAILURE AC_PREPROC_IFELSE"
1349*44704f69SBart Van Assche	ac2_54_macros="AC_C_BACKSLASH_A AC_CONFIG_LIBOBJ_DIR AC_GNU_SOURCE AC_PROG_EGREP AC_PROG_FGREP AC_REPLACE_FNMATCH AC_FUNC_FNMATCH_GNU AC_FUNC_REALLOC AC_TYPE_MBSTATE_T"
1350*44704f69SBart Van Assche
1351*44704f69SBart Van Assche	macros_to_search=""
1352*44704f69SBart Van Assche	ac_major="`echo ${AUTOCONF_VERSION}. | cut -d. -f1 | sed 's/[^0-9]//g'`"
1353*44704f69SBart Van Assche	ac_minor="`echo ${AUTOCONF_VERSION}. | cut -d. -f2 | sed 's/[^0-9]//g'`"
1354*44704f69SBart Van Assche
1355*44704f69SBart Van Assche	if [ $ac_major -lt 2 ] ; then
1356*44704f69SBart Van Assche	    macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros"
1357*44704f69SBart Van Assche	else
1358*44704f69SBart Van Assche	    if [ $ac_minor -lt 54 ] ; then
1359*44704f69SBart Van Assche		macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros"
1360*44704f69SBart Van Assche	    elif [ $ac_minor -lt 55 ] ; then
1361*44704f69SBart Van Assche		macros_to_search="$ac2_59_macros $ac2_55_macros"
1362*44704f69SBart Van Assche	    elif [ $ac_minor -lt 59 ] ; then
1363*44704f69SBart Van Assche		macros_to_search="$ac2_59_macros"
1364*44704f69SBart Van Assche	    fi
1365*44704f69SBart Van Assche	fi
1366*44704f69SBart Van Assche
1367*44704f69SBart Van Assche	configure_ac_macros=__none__
1368*44704f69SBart Van Assche	for feature in $macros_to_search ; do
1369*44704f69SBart Van Assche	    $VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
1370*44704f69SBart Van Assche	    found="`grep \"^$feature.*\" $CONFIGURE`"
1371*44704f69SBart Van Assche	    if [ ! "x$found" = "x" ] ; then
1372*44704f69SBart Van Assche		if [ "x$configure_ac_macros" = "x__none__" ] ; then
1373*44704f69SBart Van Assche		    configure_ac_macros="$feature"
1374*44704f69SBart Van Assche		else
1375*44704f69SBart Van Assche		    configure_ac_macros="$feature $configure_ac_macros"
1376*44704f69SBart Van Assche		fi
1377*44704f69SBart Van Assche	    fi
1378*44704f69SBart Van Assche	done
1379*44704f69SBart Van Assche	if [ ! "x$configure_ac_macros" = "x__none__" ] ; then
1380*44704f69SBart Van Assche	    $ECHO
1381*44704f69SBart Van Assche	    $ECHO "Warning:  Unsupported macros were found in $CONFIGURE"
1382*44704f69SBart Van Assche	    $ECHO
1383*44704f69SBart Van Assche	    $ECHO "The `basename \"$CONFIGURE\"` file was scanned in order to determine if any"
1384*44704f69SBart Van Assche	    $ECHO "unsupported macros are used that exceed the minimum version"
1385*44704f69SBart Van Assche	    $ECHO "settings specified within this file.  As such, the following macros"
1386*44704f69SBart Van Assche	    $ECHO "should be removed from configure.ac or the version numbers in this"
1387*44704f69SBart Van Assche	    $ECHO "file should be increased:"
1388*44704f69SBart Van Assche	    $ECHO
1389*44704f69SBart Van Assche	    $ECHO "$configure_ac_macros"
1390*44704f69SBart Van Assche	    $ECHO
1391*44704f69SBart Van Assche	    $ECHO $ECHO_N "Ignorantly continuing build preparation ... $ECHO_C"
1392*44704f69SBart Van Assche	fi
1393*44704f69SBart Van Assche
1394*44704f69SBart Van Assche	###################
1395*44704f69SBart Van Assche	# autoconf, retry #
1396*44704f69SBart Van Assche	###################
1397*44704f69SBart Van Assche	$VERBOSE_ECHO
1398*44704f69SBart Van Assche	$VERBOSE_ECHO "$AUTOCONF"
1399*44704f69SBart Van Assche	autoconf_output="`$AUTOCONF 2>&1`"
1400*44704f69SBart Van Assche	ret=$?
1401*44704f69SBart Van Assche	$VERBOSE_ECHO "$autoconf_output"
1402*44704f69SBart Van Assche
1403*44704f69SBart Van Assche	if [ ! $ret = 0 ] ; then
1404*44704f69SBart Van Assche	    # test if libtool is busted
1405*44704f69SBart Van Assche	    libtool_failure "$autoconf_output"
1406*44704f69SBart Van Assche
1407*44704f69SBart Van Assche	    # let the user know what went wrong
1408*44704f69SBart Van Assche	    cat <<EOF
1409*44704f69SBart Van Assche$autoconf_output
1410*44704f69SBart Van AsscheEOF
1411*44704f69SBart Van Assche	    $ECHO "ERROR: $AUTOCONF failed"
1412*44704f69SBart Van Assche	    exit 2
1413*44704f69SBart Van Assche	else
1414*44704f69SBart Van Assche	    # autoconf sans -f and possibly sans unsupported options succeed so warn verbosely
1415*44704f69SBart Van Assche	    $ECHO
1416*44704f69SBart Van Assche	    $ECHO "Warning: autoconf seems to have succeeded by removing the following options:"
1417*44704f69SBart Van Assche	    $ECHO "	AUTOCONF_OPTIONS=\"$AUTOCONF_OPTIONS\""
1418*44704f69SBart Van Assche	    $ECHO
1419*44704f69SBart Van Assche	    $ECHO "Removing those options should not be necessary and indicate some other"
1420*44704f69SBart Van Assche	    $ECHO "problem with the build system.  The build preparation is highly suspect"
1421*44704f69SBart Van Assche	    $ECHO "and may result in configuration or compilation errors.  Consider"
1422*44704f69SBart Van Assche	    if [ "x$VERBOSE_ECHO" = "x:" ] ; then
1423*44704f69SBart Van Assche		$ECHO "rerunning the build preparation with verbose output enabled."
1424*44704f69SBart Van Assche		$ECHO "	$AUTOGEN_SH --verbose"
1425*44704f69SBart Van Assche	    else
1426*44704f69SBart Van Assche		$ECHO "reviewing the minimum GNU Autotools version settings contained in"
1427*44704f69SBart Van Assche		$ECHO "this script along with the macros being used in your `basename \"$CONFIGURE\"` file."
1428*44704f69SBart Van Assche	    fi
1429*44704f69SBart Van Assche	    $ECHO
1430*44704f69SBart Van Assche	    $ECHO $ECHO_N "Continuing build preparation ... $ECHO_C"
1431*44704f69SBart Van Assche	fi # autoconf ret = 0
1432*44704f69SBart Van Assche    fi # autoconf ret = 0
1433*44704f69SBart Van Assche
1434*44704f69SBart Van Assche    ##############
1435*44704f69SBart Van Assche    # autoheader #
1436*44704f69SBart Van Assche    ##############
1437*44704f69SBart Van Assche    need_autoheader=no
1438*44704f69SBart Van Assche    for feature in AM_CONFIG_HEADER AC_CONFIG_HEADER ; do
1439*44704f69SBart Van Assche	$VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
1440*44704f69SBart Van Assche	found="`grep \"^$feature.*\" $CONFIGURE`"
1441*44704f69SBart Van Assche	if [ ! "x$found" = "x" ] ; then
1442*44704f69SBart Van Assche	    need_autoheader=yes
1443*44704f69SBart Van Assche	    break
1444*44704f69SBart Van Assche	fi
1445*44704f69SBart Van Assche    done
1446*44704f69SBart Van Assche    if [ "x$need_autoheader" = "xyes" ] ; then
1447*44704f69SBart Van Assche	$VERBOSE_ECHO "$AUTOHEADER $AUTOHEADER_OPTIONS"
1448*44704f69SBart Van Assche	autoheader_output="`$AUTOHEADER $AUTOHEADER_OPTIONS 2>&1`"
1449*44704f69SBart Van Assche	ret=$?
1450*44704f69SBart Van Assche	$VERBOSE_ECHO "$autoheader_output"
1451*44704f69SBart Van Assche	if [ ! $ret = 0 ] ; then $ECHO "ERROR: $AUTOHEADER failed" && exit 2 ; fi
1452*44704f69SBart Van Assche    fi # need_autoheader
1453*44704f69SBart Van Assche
1454*44704f69SBart Van Assche    ############
1455*44704f69SBart Van Assche    # automake #
1456*44704f69SBart Van Assche    ############
1457*44704f69SBart Van Assche    need_automake=no
1458*44704f69SBart Van Assche    for feature in AM_INIT_AUTOMAKE ; do
1459*44704f69SBart Van Assche	$VERBOSE_ECHO "Searching for $feature in $CONFIGURE"
1460*44704f69SBart Van Assche	found="`grep \"^$feature.*\" $CONFIGURE`"
1461*44704f69SBart Van Assche	if [ ! "x$found" = "x" ] ; then
1462*44704f69SBart Van Assche	    need_automake=yes
1463*44704f69SBart Van Assche	    break
1464*44704f69SBart Van Assche	fi
1465*44704f69SBart Van Assche    done
1466*44704f69SBart Van Assche
1467*44704f69SBart Van Assche    if [ "x$need_automake" = "xyes" ] ; then
1468*44704f69SBart Van Assche	$VERBOSE_ECHO "$AUTOMAKE $AUTOMAKE_OPTIONS"
1469*44704f69SBart Van Assche	automake_output="`$AUTOMAKE $AUTOMAKE_OPTIONS 2>&1`"
1470*44704f69SBart Van Assche	ret=$?
1471*44704f69SBart Van Assche	$VERBOSE_ECHO "$automake_output"
1472*44704f69SBart Van Assche
1473*44704f69SBart Van Assche	if [ ! $ret = 0 ] ; then
1474*44704f69SBart Van Assche
1475*44704f69SBart Van Assche	    ###################
1476*44704f69SBart Van Assche	    # automake, retry #
1477*44704f69SBart Van Assche	    ###################
1478*44704f69SBart Van Assche	    $VERBOSE_ECHO
1479*44704f69SBart Van Assche	    $VERBOSE_ECHO "$AUTOMAKE $ALT_AUTOMAKE_OPTIONS"
1480*44704f69SBart Van Assche	    # retry without the -f
1481*44704f69SBart Van Assche	    automake_output="`$AUTOMAKE $ALT_AUTOMAKE_OPTIONS 2>&1`"
1482*44704f69SBart Van Assche	    ret=$?
1483*44704f69SBart Van Assche	    $VERBOSE_ECHO "$automake_output"
1484*44704f69SBart Van Assche
1485*44704f69SBart Van Assche	    if [ ! $ret = 0 ] ; then
1486*44704f69SBart Van Assche	 	# test if libtool is busted
1487*44704f69SBart Van Assche		libtool_failure "$automake_output"
1488*44704f69SBart Van Assche
1489*44704f69SBart Van Assche		# let the user know what went wrong
1490*44704f69SBart Van Assche		cat <<EOF
1491*44704f69SBart Van Assche$automake_output
1492*44704f69SBart Van AsscheEOF
1493*44704f69SBart Van Assche		$ECHO "ERROR: $AUTOMAKE failed"
1494*44704f69SBart Van Assche		exit 2
1495*44704f69SBart Van Assche	    fi # automake retry
1496*44704f69SBart Van Assche	fi # automake ret = 0
1497*44704f69SBart Van Assche    fi # need_automake
1498*44704f69SBart Van Assche} # end of manual_autogen
1499*44704f69SBart Van Assche
1500*44704f69SBart Van Assche
1501*44704f69SBart Van Assche#####################################
1502*44704f69SBart Van Assche# RECURSIVE_MANUAL_AUTOGEN FUNCTION #
1503*44704f69SBart Van Assche#####################################
1504*44704f69SBart Van Asscherecursive_manual_autogen ( ) {
1505*44704f69SBart Van Assche
1506*44704f69SBart Van Assche    # run the build preparation steps manually for this directory
1507*44704f69SBart Van Assche    manual_autogen
1508*44704f69SBart Van Assche
1509*44704f69SBart Van Assche    # for projects using recursive configure, run the build
1510*44704f69SBart Van Assche    # preparation steps for the subdirectories.
1511*44704f69SBart Van Assche    if [ ! "x$CONFIG_SUBDIRS" = "x" ] ; then
1512*44704f69SBart Van Assche	$VERBOSE_ECHO "Recursively configuring the following directories:"
1513*44704f69SBart Van Assche	$VERBOSE_ECHO "  $CONFIG_SUBDIRS"
1514*44704f69SBart Van Assche	for dir in $CONFIG_SUBDIRS ; do
1515*44704f69SBart Van Assche	    $VERBOSE_ECHO "Processing recursive configure in $dir"
1516*44704f69SBart Van Assche	    cd "$START_PATH"
1517*44704f69SBart Van Assche	    cd "$dir"
1518*44704f69SBart Van Assche
1519*44704f69SBart Van Assche	    # new directory, prepare
1520*44704f69SBart Van Assche	    initialize
1521*44704f69SBart Van Assche
1522*44704f69SBart Van Assche	    # run manual steps for the subdir and any others below
1523*44704f69SBart Van Assche	    recursive_manual_autogen
1524*44704f69SBart Van Assche	done
1525*44704f69SBart Van Assche    fi
1526*44704f69SBart Van Assche}
1527*44704f69SBart Van Assche
1528*44704f69SBart Van Assche
1529*44704f69SBart Van Assche################################
1530*44704f69SBart Van Assche# run manual preparation steps #
1531*44704f69SBart Van Assche################################
1532*44704f69SBart Van Asscheif [ "x$reconfigure_manually" = "xyes" ] ; then
1533*44704f69SBart Van Assche    $ECHO
1534*44704f69SBart Van Assche    $ECHO $ECHO_N "Preparing build ... $ECHO_C"
1535*44704f69SBart Van Assche
1536*44704f69SBart Van Assche    recursive_manual_autogen
1537*44704f69SBart Van Asschefi
1538*44704f69SBart Van Assche
1539*44704f69SBart Van Assche
1540*44704f69SBart Van Assche#########################
1541*44704f69SBart Van Assche# restore and summarize #
1542*44704f69SBart Van Assche#########################
1543*44704f69SBart Van Asschecd "$START_PATH"
1544*44704f69SBart Van Assche
1545*44704f69SBart Van Assche# restore COPYING and INSTALL from backup if necessary
1546*44704f69SBart Van Asscherecursive_restore
1547*44704f69SBart Van Assche
1548*44704f69SBart Van Assche# make sure we end up with a configure script
1549*44704f69SBart Van Asscheconfig_ac="`locate_configure_template`"
1550*44704f69SBart Van Asscheconfig="`echo $config_ac | sed 's/\.ac$//' | sed 's/\.in$//'`"
1551*44704f69SBart Van Asscheif [ "x$config" = "x" ] ; then
1552*44704f69SBart Van Assche    $VERBOSE_ECHO "Could not locate the configure template (from `pwd`)"
1553*44704f69SBart Van Asschefi
1554*44704f69SBart Van Assche
1555*44704f69SBart Van Assche# summarize
1556*44704f69SBart Van Assche$ECHO "done"
1557*44704f69SBart Van Assche$ECHO
1558*44704f69SBart Van Asscheif test "x$config" = "x" -o ! -f "$config" ; then
1559*44704f69SBart Van Assche    $ECHO "WARNING: The $PROJECT build system should now be prepared but there"
1560*44704f69SBart Van Assche    $ECHO "does not seem to be a resulting configure file.  This is unexpected"
1561*44704f69SBart Van Assche    $ECHO "and likely the result of an error.  You should run $NAME_OF_AUTOGEN"
1562*44704f69SBart Van Assche    $ECHO "with the --verbose option to get more details on a potential"
1563*44704f69SBart Van Assche    $ECHO "misconfiguration."
1564*44704f69SBart Van Asscheelse
1565*44704f69SBart Van Assche    $ECHO "The $PROJECT build system is now prepared.  To build here, run:"
1566*44704f69SBart Van Assche    $ECHO "  $config"
1567*44704f69SBart Van Assche    $ECHO "  make"
1568*44704f69SBart Van Asschefi
1569*44704f69SBart Van Assche
1570*44704f69SBart Van Assche
1571*44704f69SBart Van Assche# Local Variables:
1572*44704f69SBart Van Assche# mode: sh
1573*44704f69SBart Van Assche# tab-width: 8
1574*44704f69SBart Van Assche# sh-basic-offset: 4
1575*44704f69SBart Van Assche# sh-indentation: 4
1576*44704f69SBart Van Assche# indent-tabs-mode: t
1577*44704f69SBart Van Assche# End:
1578*44704f69SBart Van Assche# ex: shiftwidth=4 tabstop=8
1579