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