#!/bin/sh # # $XORP: xorp/bootstrap,v 1.26 2005/05/26 11:51:31 pavlin Exp $ # # # A script of autoconf/automake/libtool commands to bring the system # up to date if some of the configuration files are modified # # # Allow the autotools commands used to be overridden using environment # variables, to help off-site package maintainers. # ACLOCAL=${ACLOCAL:-"aclocal"} AUTOCONF=${AUTOCONF:-"autoconf"} AUTOHEADER=${AUTOHEADER:-"autoheader"} AUTOMAKE=${AUTOMAKE:-"automake"} LIBTOOLIZE=${LIBTOOLIZE:-"libtoolize"} # Figure out if we were invoked with an autoconf name other than the # default (as this chnages the name of the autom4te.cache directories). AUTOM4TE="autom4te" if [ ${AUTOCONF} != "autoconf" ]; then AUTOM4TE=$( basename ${AUTOCONF} | sed 's/conf/m4te/' ) fi # Prototype: check_necessary check_necessary() { if [ $# -ne 1 ] ; then echo "check_necessary: incorrect argument count" exit 1 fi checkfile=./Makefile.in if [ ! -e ${checkfile} ] ; then checkfile=$1 fi if [ ! -f ${checkfile} ] ; then echo "${checkfile} does not exist or is not an ordinary file" exit 1 fi echo -n "Checking configuration files..." NEWER_AM_FILES=`find . -name 'Makefile.am' -a -newer ${checkfile}` # Look files included or used by Makefile.am files SPECIAL_AM_FILES="docs/mk/Makefile.doc.am" for s in ${SPECIAL_AM_FILES} ; do if [ ${s} -nt ${checkfile} ] ; then NEWER_AM_FILES="${NEWER_AM_FILES} ${s}" fi done NEWER_CONFIG_MACROS=`find config -name 'ac*.m4' -a -newer ${checkfile}` NEWER_CONFIG_IN=`find . -name 'configure.in' -a -newer ${checkfile}` echo "done." NEWER_FILES="${NEWER_AM_FILES}${NEWER_CONFIG_MACROS}${NEWER_CONFIG_IN}" if [ "${NEWER_FILES}"X = "X" ] ; then cat < # # On output prints the program flags program_flags() { if [ $# -ne 4 ] ; then echo "program_flags: incorrect argument count" exit 1 fi prog_name=$1 threshold_version=$2 flags_if_newer=$3 flags_if_older=$4 prog_maj_version=`${prog_name} --version | head -n 1 | awk '{print $NF}' | cut -f 1 -d.` prog_min_version=`${prog_name} --version | head -n 1 | awk '{print $NF}' | cut -f 2 -d.` threshold_maj_version=`echo ${threshold_version} | cut -f 1 -d.` threshold_min_version=`echo ${threshold_version} | cut -f 2 -d.` if [ ${prog_maj_version} -ge ${threshold_maj_version} \ -a ${prog_min_version} -ge ${threshold_min_version} ] ; then echo ${flags_if_newer} else echo ${flags_if_older} fi } # # Change to directory of script. This script lives at the top of the source # tree and it's often useful to be able to run it from another location. # cd `dirname $0` if [ ! -d config ] ; then echo "The \"config\" does not appear to exist" exit 1 fi check_necessary $0 # # Cleanup # run rm -f config.cache run rm -f aclocal.m4 run rm -f config/aclocal.m4 # XXX: does mibs need its own cleanup run? run cd mibs run rm -f config.cache run rm -f aclocal.m4 #run rm -f ../config/aclocal.m4 run cd .. # # If necessary, use "-I DIR" again to add more directories to search list # for .m4 files. # # XXX: note that the output file (aclocal.m4) should be generated # in the local directory (the default behavior), otherwise newer # versions of automake (e.g., automake-1.5) won't work anymore. # run ${ACLOCAL} -I config # XXX: does mibs need its own aclocal? run cd mibs run ${ACLOCAL} -I ../config run cd .. # # XXX: we don't use flag --force because with it libtoolize always # overwrites our config.guess and config.sub files, even though our # version is probably newer. # run ${LIBTOOLIZE} --automake --copy # XXX: does mibs need its own libtool? run cd mibs run ${LIBTOOLIZE} --automake --copy run cd .. # # If we are using newer version of autoconf/autoheader (e.g., autoconf-2.5*), # we need to add the new flag "--include=config". # autoheader_options=`program_flags ${AUTOHEADER} 2.50 "--include=config" ""` run ${AUTOHEADER} ${autoheader_options} # XXX: mibs does not need its own autoheader run. #run cd mibs #run ${AUTOHEADER} ${autoheader_options} #run cd .. # # XXX: in case of non-GNU 'make', we must use flag "-i". # XXX: we may have to use "-i" before distributing the source code (?) # run ${AUTOMAKE} -i --add-missing --copy # run ${AUTOMAKE} --add-missing --copy --foreign run cd mibs run ${AUTOMAKE} --add-missing --copy --foreign run cd .. # # If we are using newer version of autoconf (e.g., autoconf-2.5*), # use the new flag "--include=config" instead of "-l config". # If necessary, use it again to add more directories to search list # for .m4 files. # autoconf_options=`program_flags ${AUTOCONF} 2.50 "--include=config" "-l config"` run ${AUTOCONF} ${autoconf_options} # Run autoconf in each subdirectory that has configure.in run cd cli/libtecla autoconf_options=`program_flags ${AUTOCONF} 2.50 "--include=../../config" "-l ../../config"` run ${AUTOCONF} ${autoconf_options} run cd ../.. run cd mibs autoconf_options=`program_flags ${AUTOCONF} 2.50 "--include=../config" "-l ../config"` run ${AUTOCONF} ${autoconf_options} run cd .. # Clean-up autom4te.cache directories echo "Removing ${AUTOM4TE}.cache directories..." remove_dirs="./${AUTOM4TE}.cache cli/libtecla/${AUTOM4TE}.cache mibs/${AUTOM4TE}.cache" for dir in ${remove_dirs} ; do if [ -d ${dir} ] ; then run rm -rf ${dir} fi done exit 0