File:  [local] / rpl / autogen.sh
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Tue Jul 16 15:17:16 2019 UTC (4 years, 8 months ago) by bertrand
Branches: MAIN
CVS tags: rpl-4_1_35, rpl-4_1_34, rpl-4_1_33, rpl-4_1_32, rpl-4_1_31, HEAD
Cohérence.

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

CVSweb interface <joel.bertrand@systella.fr>