4 # Copyright (c) 2005-2009 United States Government as represented by
5 # the U.S. Army Research Laboratory.
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
11 # 1. Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
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.
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
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.
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.
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.
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
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.
60 # To obtain help on usage:
63 # To obtain verbose output:
64 # ./autogen.sh --verbose
66 # To skip autoreconf and prepare manually:
67 # AUTORECONF=false ./autogen.sh
69 # To verbosely try running with an older (unsupported) autoconf:
70 # AUTOCONF_VERSION=2.50 ./autogen.sh --verbose
73 # Christopher Sean Morrison <morrison@brlcad.org>
76 # Sebastian Pipping <sebastian@pipping.org>
78 ######################################################################
80 # set to minimum acceptable version of autoconf
81 if [ "x$AUTOCONF_VERSION" = "x" ] ; then
84 # set to minimum acceptable version of automake
85 if [ "x$AUTOMAKE_VERSION" = "x" ] ; then
86 AUTOMAKE_VERSION=1.6.0
88 # set to minimum acceptable version of libtool
89 if [ "x$LIBTOOL_VERSION" = "x" ] ; then
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`"
104 # extract version from CVS Id string
105 __id="$Id: autogen.sh 33925 2009-03-01 23:27:06Z brlcad $"
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
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"
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"
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"
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."
146 ##########################
147 # VERSION_ERROR FUNCTION #
148 ##########################
150 if [ "x$1" = "x" ] ; then
151 echo "INTERNAL ERROR: version_error was not provided a version"
154 if [ "x$2" = "x" ] ; then
155 echo "INTERNAL ERROR: version_error was not provided an application name"
159 $ECHO "ERROR: To prepare the ${PROJECT} build system from scratch,"
160 $ECHO " at least version $1 of $2 must be installed."
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!"
169 ##########################
170 # VERSION_CHECK FUNCTION #
171 ##########################
173 if [ "x$1" = "x" ] ; then
174 echo "INTERNAL ERROR: version_check was not provided a minimum version"
178 if [ "x$2" = "x" ] ; then
179 echo "INTERNAL ERROR: version check was not provided a comparison version"
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'`"
188 _min_major="`echo $_min | cut -d. -f1`"
189 _min_minor="`echo $_min | cut -d. -f2`"
190 _min_patch="`echo $_min | cut -d. -f3`"
192 _cur_major="`echo $_cur | cut -d. -f1`"
193 _cur_minor="`echo $_cur | cut -d. -f2`"
194 _cur_patch="`echo $_cur | cut -d. -f3`"
196 if [ "x$_min_major" = "x" ] ; then
199 if [ "x$_min_minor" = "x" ] ; then
202 if [ "x$_min_patch" = "x" ] ; then
205 if [ "x$_cur_minor" = "x" ] ; then
208 if [ "x$_cur_minor" = "x" ] ; then
211 if [ "x$_cur_patch" = "x" ] ; then
215 $VERBOSE_ECHO "Checking if ${_cur_major}.${_cur_minor}.${_cur_patch} is greater than ${_min_major}.${_min_minor}.${_min_patch}"
217 if [ $_min_major -lt $_cur_major ] ; then
219 elif [ $_min_major -eq $_cur_major ] ; then
220 if [ $_min_minor -lt $_cur_minor ] ; then
222 elif [ $_min_minor -eq $_cur_minor ] ; then
223 if [ $_min_patch -lt $_cur_patch ] ; then
225 elif [ $_min_patch -eq $_cur_patch ] ; then
234 ######################################
235 # LOCATE_CONFIGURE_TEMPLATE FUNCTION #
236 ######################################
237 locate_configure_template ( ) {
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"
259 PATH_TO_AUTOGEN="`dirname $0`"
260 NAME_OF_AUTOGEN="`basename $0`"
261 AUTOGEN_SH="$PATH_TO_AUTOGEN/$NAME_OF_AUTOGEN"
263 LIBTOOL_M4="${PATH_TO_AUTOGEN}/misc/libtool.m4"
265 if [ "x$HELP" = "x" ] ; then
268 if [ "x$QUIET" = "x" ] ; then
271 if [ "x$VERBOSE" = "x" ] ; then
274 if [ "x$VERSION_ONLY" = "x" ] ; then
277 if [ "x$DOWNLOAD" = "x" ] ; then
280 if [ "x$AUTORECONF_OPTIONS" = "x" ] ; then
281 AUTORECONF_OPTIONS="-i -f"
283 if [ "x$AUTOCONF_OPTIONS" = "x" ] ; then
284 AUTOCONF_OPTIONS="-f"
286 if [ "x$AUTOMAKE_OPTIONS" = "x" ] ; then
287 AUTOMAKE_OPTIONS="-a -c -f"
289 ALT_AUTOMAKE_OPTIONS="-a -c"
290 if [ "x$LIBTOOLIZE_OPTIONS" = "x" ] ; then
291 LIBTOOLIZE_OPTIONS="--automake -c -f"
293 ALT_LIBTOOLIZE_OPTIONS="--automake --copy --force"
294 if [ "x$ACLOCAL_OPTIONS" = "x" ] ; then
297 if [ "x$AUTOHEADER_OPTIONS" = "x" ] ; then
298 AUTOHEADER_OPTIONS=""
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"
303 for arg in $ARGS ; do
307 x--quiet) 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 ;;
315 echo "Unknown option: $arg"
324 #####################
325 # environment check #
326 #####################
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"
337 # force locale setting to C so things like date output as expected
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"
348 echo "test" | grep "test" > /dev/null 2>&1
349 if test ! x$? = x0 ; then
350 echo "INTERNAL ERROR: grep command is required"
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"
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='
364 *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
365 *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
368 # determine the behavior of head
369 case "x`echo 'head' | head -n 1 2>&1`" in
370 *xhead*) HEAD_N="n " ;;
374 # determine the behavior of tail
375 case "x`echo 'tail' | tail -n 1 2>&1`" in
376 *xtail*) TAIL_N="n " ;;
382 if [ "x$QUIET" = "xyes" ] ; then
383 if [ "x$VERBOSE" = "xyes" ] ; then
384 echo "Verbose output quelled by quiet option. Further output disabled."
388 if [ "x$VERBOSE" = "xyes" ] ; then
389 echo "Verbose output enabled"
395 # allow a recursive run to disable further recursions
396 if [ "x$RUN_RECURSIVE" = "x" ] ; then
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
407 if [ "x$HELP" = "xyes" ] ; then
410 $ECHO "Help was requested. No preparation or configuration will be performed."
415 #######################
416 # set up signal traps #
417 #######################
418 untrap_abnormal ( ) {
419 for sig in 1 2 13 15; do
424 # do this cleanup whenever we exit.
426 # start from the root
427 if test -d "$START_PATH" ; then
431 # restore/delete backup files
432 if test "x$PFC_INIT" = "x1" ; then
437 # trap SIGHUP (1), SIGINT (2), SIGPIPE (13), SIGTERM (15)
438 for sig in 1 2 13 15; do
441 $ECHO "Aborting $NAME_OF_AUTOGEN: caught signal '$sig'"
443 # start from the root
444 if test -d "$START_PATH" ; then
448 # clean up on abnormal exit
449 $VERBOSE_ECHO "rm -rf autom4te.cache"
450 rm -rf autom4te.cache
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
457 $VERBOSE_ECHO "rm -f acinclude.m4.$$.backup"
458 rm -f acinclude.m4.$$.backup
461 { (exit 1); exit 1; }
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"
475 $ECHO "Using CONFIGURE environment variable override: $CONFIGURE"
477 if [ "x$CONFIGURE" = "x" ] ; then
478 if [ "x$VERSION_ONLY" = "xyes" ] ; then
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."
486 $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
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/'`"
500 if [ "x$PROJECT" = "xAM_INIT_AUTOMAKE" ] ; then
503 if [ "x$PROJECT" = "x" ] ; then
507 $ECHO "Using PROJECT environment variable override: $PROJECT"
509 $ECHO "Preparing the $PROJECT build system...please wait"
513 ########################
514 # check for autoreconf #
515 ########################
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
528 $ECHO "Using AUTORECONF environment variable override: $AUTORECONF"
532 ##########################
533 # autoconf version check #
534 ##########################
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
547 $ECHO "Using AUTOCONF environment variable override: $AUTOCONF"
551 if [ ! "x$_acfound" = "xyes" ] ; then
552 $ECHO "ERROR: Unable to locate GNU Autoconf."
555 _version="`$AUTOCONF --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
556 if [ "x$_version" = "x" ] ; then
559 $ECHO "Found GNU Autoconf version $_version"
560 version_check "$AUTOCONF_VERSION" "$_version"
561 if [ $? -ne 0 ] ; then
565 if [ "x$_report_error" = "xyes" ] ; then
566 version_error "$AUTOCONF_VERSION" "GNU Autoconf"
571 ##########################
572 # automake version check #
573 ##########################
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
586 $ECHO "Using AUTOMAKE environment variable override: $AUTOMAKE"
591 if [ ! "x$_amfound" = "xyes" ] ; then
593 $ECHO "ERROR: Unable to locate GNU Automake."
596 _version="`$AUTOMAKE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
597 if [ "x$_version" = "x" ] ; then
600 $ECHO "Found GNU Automake version $_version"
601 version_check "$AUTOMAKE_VERSION" "$_version"
602 if [ $? -ne 0 ] ; then
606 if [ "x$_report_error" = "xyes" ] ; then
607 version_error "$AUTOMAKE_VERSION" "GNU Automake"
612 ########################
613 # check for libtoolize #
614 ########################
616 HAVE_ALT_LIBTOOLIZE=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
625 if [ "x$HAVE_AUTORECONF" = "xno" ] ; then
626 $ECHO "Warning: libtoolize does not appear to be available."
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."
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`"
639 $VERBOSE_ECHO "Found $tool --version"
640 _glti="`which $tool`"
641 if [ "x$_glti" = "x" ] ; then
642 $VERBOSE_ECHO "Cannot find $tool with which"
645 if test ! -f "$_glti" ; then
646 $VERBOSE_ECHO "Cannot use $tool, $_glti is not a file"
649 _gltidir="`dirname $_glti`"
650 if [ "x$_gltidir" = "x" ] ; then
651 $VERBOSE_ECHO "Cannot find $tool path with dirname of $_glti"
654 if test ! -d "$_gltidir" ; then
655 $VERBOSE_ECHO "Cannot use $tool, $_gltidir is not a directory"
658 HAVE_ALT_LIBTOOLIZE=yes
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"
666 sudo -V > /dev/null 2>&1
668 $ECHO " sudo ln -s $_glti $_gltidir/libtoolize"
671 $ECHO " ln -s $_glti $_gltidir/libtoolize"
673 $ECHO "Run that as root or with proper permissions to the $_gltidir directory"
685 $ECHO "Using LIBTOOLIZE environment variable override: $LIBTOOLIZE"
689 ############################
690 # libtoolize version check #
691 ############################
693 if [ ! "x$_ltfound" = "xyes" ] ; then
695 $ECHO "ERROR: Unable to locate GNU Libtool."
698 _version="`$LIBTOOLIZE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`"
699 if [ "x$_version" = "x" ] ; then
702 $ECHO "Found GNU Libtool version $_version"
703 version_check "$LIBTOOL_VERSION" "$_version"
704 if [ $? -ne 0 ] ; then
708 if [ "x$_report_error" = "xyes" ] ; then
709 version_error "$LIBTOOL_VERSION" "GNU Libtool"
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
726 $ECHO "Using ACLOCAL environment variable override: $ACLOCAL"
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
742 $ECHO "Using AUTOHEADER environment variable override: $AUTOHEADER"
746 #########################
747 # check if version only #
748 #########################
749 $VERBOSE_ECHO "Checking whether to only output version information"
750 if [ "x$VERSION_ONLY" = "xyes" ] ; then
754 $ECHO "Version requested. No preparation or configuration will be performed."
759 #################################
760 # PROTECT_FROM_CLOBBER FUNCTION #
761 #################################
762 protect_from_clobber ( ) {
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.
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`"
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
787 ##############################
788 # RECURSIVE_PROTECT FUNCTION #
789 ##############################
790 recursive_protect ( ) {
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.
797 # git 'r done, protect COPYING and INSTALL from being clobbered
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
806 # find configure template
807 _configure="`locate_configure_template`"
808 if [ "x$_configure" = "x" ] ; then
811 # $VERBOSE_ECHO "Looking for configure template found `pwd`/$_configure"
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/'`"
817 for dir in $_det_config_subdirs ; do
818 if test -d "`pwd`/$dir" ; then
819 CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
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"
832 # recursively git 'r done
836 } # end of recursive_protect
839 #############################
840 # RESTORE_CLOBBERED FUNCION #
841 #############################
842 restore_clobbered ( ) {
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.
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
860 $VERBOSE_ECHO "Restoring ${file} from backup (automake -f likely clobbered it)"
861 $VERBOSE_ECHO "rm -f ${file}"
863 $VERBOSE_ECHO "mv ${file}.$$.protect_from_automake.backup ${file}"
864 mv ${file}.$$.protect_from_automake.backup ${file}
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}
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
877 CONFIGURE="`locate_configure_template`"
878 if [ "x$CONFIGURE" = "x" ] ; then
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
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"
893 } # end of restore_clobbered
896 ##############################
897 # RECURSIVE_RESTORE FUNCTION #
898 ##############################
899 recursive_restore ( ) {
901 # restore COPYING and INSTALL from backup if they were clobbered
902 # for each directory recursively.
907 # find configure template
908 _configure="`locate_configure_template`"
909 if [ "x$_configure" = "x" ] ; then
914 _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`"
916 for dir in $_det_config_subdirs ; do
917 if test -d "`pwd`/$dir" ; then
918 CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\""
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"
931 # recursively git 'r undone
935 } # end of recursive_restore
938 #######################
939 # INITIALIZE FUNCTION #
940 #######################
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.
947 # this function sets:
952 ##################################
953 # check for a configure template #
954 ##################################
955 CONFIGURE="`locate_configure_template`"
956 if [ "x$CONFIGURE" = "x" ] ; then
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."
962 $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`"
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
973 $VERBOSE_ECHO "Detected auxillary directory: $_aux_dir"
976 ################################
977 # detect a recursive configure #
978 ################################
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"
988 ###########################################################
989 # make sure certain required files exist for GNU projects #
990 ###########################################################
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\"`"
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"
1009 if [ "x${_marker_found}" = "x" ] ; then
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
1019 if [ "x${_suggest_foreign}" = "xyes" ] ; then
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."
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."
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"
1043 ############################
1044 # search alternate m4 dirs #
1045 ############################
1048 if [ -d $dir ] ; then
1049 $VERBOSE_ECHO "Found extra aclocal search directory: $dir"
1050 SEARCH_DIRS="$SEARCH_DIRS -I $dir"
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
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"
1069 } # end of initialize()
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.
1085 # start from where we started
1088 # get ready to process
1092 #########################################
1093 # DOWNLOAD_GNULIB_CONFIG_GUESS FUNCTION #
1094 #########################################
1096 # TODO - should make sure wget/curl exist and/or work before trying to
1099 download_gnulib_config_guess () {
1100 # abuse gitweb to download gnulib's latest config.guess via HTTP
1101 config_guess_temp="config.guess.$$.download"
1103 for __cmd in wget curl fetch ; do
1104 $VERBOSE_ECHO "Checking for command ${__cmd}"
1105 ${__cmd} --version > /dev/null 2>&1
1107 if [ ! $ret = 0 ] ; then
1111 __cmd_version=`${__cmd} --version | head -n 1 | sed -e 's/^[^0-9]\+//' -e 's/ .*//'`
1112 $VERBOSE_ECHO "Found ${__cmd} ${__cmd_version}"
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
1136 if [ ! $ret = 0 ] ; then
1137 $ECHO "Warning: config.guess download failed from: $CONFIG_GUESS_URL"
1138 rm -f "${config_guess_temp}"
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
1161 ############################################
1162 # prepare build via autoreconf or manually #
1163 ############################################
1164 reconfigure_manually=no
1165 if [ "x$HAVE_AUTORECONF" = "xyes" ] ; then
1167 $ECHO $ECHO_N "Automatically preparing build ... $ECHO_C"
1169 $VERBOSE_ECHO "$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS"
1170 autoreconf_output="`$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS 2>&1`"
1172 $VERBOSE_ECHO "$autoreconf_output"
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
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."
1183 $ECHO "Restarting the preparation steps with LIBTOOLIZE set to $LIBTOOLIZE"
1187 export RUN_RECURSIVE
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"
1196 $ECHO "Warning: $AUTORECONF failed"
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"
1202 $ECHO "Attempting to run the preparation steps individually"
1203 reconfigure_manually=yes
1205 if [ "x$DOWNLOAD" = "xyes" ] ; then
1206 if libtoolize_needed ; then
1207 download_gnulib_config_guess
1212 reconfigure_manually=yes
1216 ############################
1217 # LIBTOOL_FAILURE FUNCTION #
1218 ############################
1219 libtool_failure ( ) {
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.
1227 _autoconf_output="$1"
1229 if [ "x$RUN_RECURSIVE" = "xno" ] ; then
1230 # we already tried the libtool.m4, don't try again
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
1242 $VERBOSE_ECHO "cat \"$LIBTOOL_M4\" >> acinclude.m4"
1243 chmod u+w acinclude.m4
1244 cat "$LIBTOOL_M4" >> acinclude.m4
1246 # don't keep doing this
1248 export RUN_RECURSIVE
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"
1261 ###########################
1262 # MANUAL_AUTOGEN FUNCTION #
1263 ###########################
1264 manual_autogen ( ) {
1266 ##################################################
1267 # Manual preparation steps taken are as follows: #
1269 # libtoolize --automake -c -f #
1273 # automake -a -c -f #
1274 ##################################################
1279 $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS"
1280 aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`"
1282 $VERBOSE_ECHO "$aclocal_output"
1283 if [ ! $ret = 0 ] ; then $ECHO "ERROR: $ACLOCAL failed" && exit 2 ; fi
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`"
1293 $VERBOSE_ECHO "$libtoolize_output"
1295 if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
1297 if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then
1298 $VERBOSE_ECHO "$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS"
1299 libtoolize_output="`$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS 2>&1`"
1301 $VERBOSE_ECHO "$libtoolize_output"
1303 if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi
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`"
1314 $VERBOSE_ECHO "$aclocal_output"
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
1320 $ECHO "Warning: $LIBTOOLIZE is creating ltmain.sh in the wrong directory"
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."
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"
1331 if [ "x$DOWNLOAD" = "xyes" ] ; then
1332 download_gnulib_config_guess
1334 fi # libtoolize_needed
1340 $VERBOSE_ECHO "$AUTOCONF $AUTOCONF_OPTIONS"
1341 autoconf_output="`$AUTOCONF $AUTOCONF_OPTIONS 2>&1`"
1343 $VERBOSE_ECHO "$autoconf_output"
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"
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'`"
1355 if [ $ac_major -lt 2 ] ; then
1356 macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros"
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"
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"
1375 configure_ac_macros="$feature $configure_ac_macros"
1379 if [ ! "x$configure_ac_macros" = "x__none__" ] ; then
1381 $ECHO "Warning: Unsupported macros were found in $CONFIGURE"
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:"
1389 $ECHO "$configure_ac_macros"
1391 $ECHO $ECHO_N "Ignorantly continuing build preparation ... $ECHO_C"
1398 $VERBOSE_ECHO "$AUTOCONF"
1399 autoconf_output="`$AUTOCONF 2>&1`"
1401 $VERBOSE_ECHO "$autoconf_output"
1403 if [ ! $ret = 0 ] ; then
1404 # test if libtool is busted
1405 libtool_failure "$autoconf_output"
1407 # let the user know what went wrong
1411 $ECHO "ERROR: $AUTOCONF failed"
1414 # autoconf sans -f and possibly sans unsupported options succeed so warn verbosely
1416 $ECHO "Warning: autoconf seems to have succeeded by removing the following options:"
1417 $ECHO " AUTOCONF_OPTIONS=\"$AUTOCONF_OPTIONS\""
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"
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."
1430 $ECHO $ECHO_N "Continuing build preparation ... $ECHO_C"
1431 fi # autoconf ret = 0
1432 fi # autoconf ret = 0
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
1446 if [ "x$need_autoheader" = "xyes" ] ; then
1447 $VERBOSE_ECHO "$AUTOHEADER $AUTOHEADER_OPTIONS"
1448 autoheader_output="`$AUTOHEADER $AUTOHEADER_OPTIONS 2>&1`"
1450 $VERBOSE_ECHO "$autoheader_output"
1451 if [ ! $ret = 0 ] ; then $ECHO "ERROR: $AUTOHEADER failed" && exit 2 ; fi
1452 fi # need_autoheader
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
1467 if [ "x$need_automake" = "xyes" ] ; then
1468 $VERBOSE_ECHO "$AUTOMAKE $AUTOMAKE_OPTIONS"
1469 automake_output="`$AUTOMAKE $AUTOMAKE_OPTIONS 2>&1`"
1471 $VERBOSE_ECHO "$automake_output"
1473 if [ ! $ret = 0 ] ; then
1479 $VERBOSE_ECHO "$AUTOMAKE $ALT_AUTOMAKE_OPTIONS"
1480 # retry without the -f
1481 automake_output="`$AUTOMAKE $ALT_AUTOMAKE_OPTIONS 2>&1`"
1483 $VERBOSE_ECHO "$automake_output"
1485 if [ ! $ret = 0 ] ; then
1486 # test if libtool is busted
1487 libtool_failure "$automake_output"
1489 # let the user know what went wrong
1493 $ECHO "ERROR: $AUTOMAKE failed"
1496 fi # automake ret = 0
1498 } # end of manual_autogen
1501 #####################################
1502 # RECURSIVE_MANUAL_AUTOGEN FUNCTION #
1503 #####################################
1504 recursive_manual_autogen ( ) {
1506 # run the build preparation steps manually for this directory
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"
1519 # new directory, prepare
1522 # run manual steps for the subdir and any others below
1523 recursive_manual_autogen
1529 ################################
1530 # run manual preparation steps #
1531 ################################
1532 if [ "x$reconfigure_manually" = "xyes" ] ; then
1534 $ECHO $ECHO_N "Preparing build ... $ECHO_C"
1536 recursive_manual_autogen
1540 #########################
1541 # restore and summarize #
1542 #########################
1545 # restore COPYING and INSTALL from backup if necessary
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`)"
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."
1565 $ECHO "The $PROJECT build system is now prepared. To build here, run:"
1574 # sh-basic-offset: 4
1576 # indent-tabs-mode: t
1578 # ex: shiftwidth=4 tabstop=8