7cc01b502e
AC_PROG_FC macro. Unfortunately, this means that you probably have to build autoconf yourself, as no one really ships with AC 2.58 This commit was SVN r124.
319 строки
7.7 KiB
Bash
Исполняемый файл
319 строки
7.7 KiB
Bash
Исполняемый файл
#! /bin/bash
|
|
#
|
|
# $HEADER$
|
|
#
|
|
# This script is run on developer copies of LAM/MPI -- *not*
|
|
# distribution tarballs.
|
|
|
|
|
|
##############################################################################
|
|
#
|
|
# User-definable parameters (search path and minimum supported versions)
|
|
#
|
|
##############################################################################
|
|
|
|
lam_aclocal_search="aclocal"
|
|
lam_autoheader_search="autoheader"
|
|
lam_autoconf_search="autoconf"
|
|
lam_libtoolize_search="libtoolize glibtoolize"
|
|
lam_automake_search="automake"
|
|
|
|
lam_automake_version="1.6"
|
|
lam_autoconf_version="2.58"
|
|
lam_libtool_version="1.5"
|
|
|
|
|
|
##############################################################################
|
|
#
|
|
# Global variables - should not need to modify defaults
|
|
#
|
|
##############################################################################
|
|
|
|
lam_aclocal_version="$lam_automake_version"
|
|
lam_autoheader_version="$lam_autoconf_version"
|
|
lam_libtoolize_version="$lam_libtool_version"
|
|
|
|
# program names to execute
|
|
lam_aclocal=""
|
|
lam_autoheader=""
|
|
lam_autoconf=""
|
|
lam_libtoolize=""
|
|
lam_automake=""
|
|
|
|
|
|
############################################################################
|
|
#
|
|
# Version check - does major,minor,release check (hopefully ignoring
|
|
# beta et al)
|
|
#
|
|
# INPUT:
|
|
# - minimum version allowable
|
|
# - version we found
|
|
#
|
|
# OUTPUT:
|
|
# - 0 version is ok
|
|
# - 1 version is not ok
|
|
#
|
|
# SIDE EFFECTS:
|
|
# none
|
|
#
|
|
##############################################################################
|
|
check_version() {
|
|
local min_version="$1"
|
|
local version="$2"
|
|
|
|
local min_major_version="`echo $min_version | cut -f1 -d.`"
|
|
local min_minor_version="`echo $min_version | cut -f2 -d.`"
|
|
local min_release_version="`echo $min_version | cut -f3 -d.`"
|
|
if test "$min_release_version" = "" ; then
|
|
min_release_version=0
|
|
fi
|
|
|
|
local major_version="`echo $version | cut -f1 -d.`"
|
|
local minor_version="`echo $version | cut -f2 -d.`"
|
|
local release_version="`echo $version | cut -f3 -d.`"
|
|
if test "$release_version" = "" ; then
|
|
release_version=0
|
|
fi
|
|
|
|
if test $min_major_version -lt $major_version ; then
|
|
return 0
|
|
elif test $min_major_version -gt $major_version ; then
|
|
return 1
|
|
fi
|
|
|
|
if test $min_minor_version -lt $minor_version ; then
|
|
return 0
|
|
elif test $min_minor_version -gt $minor_version ; then
|
|
return 1
|
|
fi
|
|
|
|
if test $min_release_version -gt $release_version ; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
|
|
##############################################################################
|
|
#
|
|
# find app - find a version of the given application that is new
|
|
# enough for use
|
|
#
|
|
# INPUT:
|
|
# - name of application (eg aclocal)
|
|
#
|
|
# OUTPUT:
|
|
# none
|
|
#
|
|
# SIDE EFFECTS:
|
|
# - sets application_name variable to working executable name
|
|
# - aborts on error finding application
|
|
#
|
|
##############################################################################
|
|
find_app() {
|
|
local app_name="$1"
|
|
|
|
local version="0.0.0"
|
|
local min_version="99.99.99"
|
|
local found=0
|
|
|
|
eval "min_version=\"\$lam_${app_name}_version\""
|
|
|
|
eval "search_path=\"\$lam_${app_name}_search\""
|
|
for i in $search_path ; do
|
|
version="`${i} --version 2>&1`"
|
|
if test "$?" != 0 ; then
|
|
continue
|
|
fi
|
|
|
|
version="`echo $version | cut -f2 -d')'`"
|
|
version="`echo $version | cut -f1 -d' '`"
|
|
|
|
if check_version $min_version $version ; then
|
|
eval "lam_${app_name}=\"${i}\""
|
|
found=1
|
|
fi
|
|
done
|
|
|
|
if test "$found" = "0" ; then
|
|
cat <<EOF
|
|
I could not find a recent enough copy of ${app_name}.
|
|
I am gonna abort. :-(
|
|
|
|
Please make sure you are using at least the following versions of the
|
|
GNU tools:
|
|
|
|
GNU Autoconf $lam_autoconf_version
|
|
GNU Automake $lam_automake_version
|
|
GNU Libtool $lam_libtool_version
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
##############################################################################
|
|
#
|
|
# run_and_check - run the right GNU tool, printing warning on failure
|
|
#
|
|
# INPUT:
|
|
# - name of application (eg aclocal)
|
|
# - program arguments
|
|
#
|
|
# OUTPUT:
|
|
# none
|
|
#
|
|
# SIDE EFFECTS:
|
|
# - aborts on error running application
|
|
#
|
|
##############################################################################
|
|
run_and_check() {
|
|
local rac_progs="$*"
|
|
echo "[Running] $rac_progs"
|
|
eval $rac_progs
|
|
if test "$?" != 0; then
|
|
cat <<EOF
|
|
|
|
It seems that the execution of "$rac_progs" has failed.
|
|
I am gonna abort. :-(
|
|
|
|
This may be caused by an older version of one of the required
|
|
packages. Please make sure you are using at least the following
|
|
versions:
|
|
|
|
GNU Autoconf $lam_autoconf_version
|
|
GNU Automake $lam_automake_version
|
|
GNU Libtool $lam_libtool_version
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
##############################################################################
|
|
#
|
|
# find_and_delete - look for standard files in a number of common places
|
|
# (e.g., ./config.guess, config/config.guess, dist/config.guess), and
|
|
# delete it. If it's not found there, look for AC_CONFIG_AUX_DIR in
|
|
# the configure.in script and try there. If it's not there, oh well.
|
|
#
|
|
# INPUT:
|
|
# - file to delete
|
|
#
|
|
# OUTPUT:
|
|
# none
|
|
#
|
|
# SIDE EFFECTS:
|
|
# - files may disappear
|
|
#
|
|
##############################################################################
|
|
find_and_delete() {
|
|
local fad_file="$1"
|
|
|
|
local fad_cfile
|
|
local auxdir
|
|
|
|
# Look for the file in "standard" places
|
|
|
|
if test -f $fad_file; then
|
|
rm -f $fad_file
|
|
elif test -d config/$fad_file; then
|
|
rm -f config/$fad_file
|
|
elif test -d dist/$fad_file; then
|
|
rm -f dist/$fad_file
|
|
else
|
|
|
|
# Didn't find it -- look for an AC_CONFIG_AUX_DIR line in
|
|
# configure.[in|ac]
|
|
|
|
if test -f configure.in; then
|
|
fad_cfile=configure.in
|
|
elif test -f configure.ac; then
|
|
fad_cfile=configure.ac
|
|
else
|
|
echo "--> Errr... there's no configure.in or configure.ac file!"
|
|
fi
|
|
if test -n "$fad_cfile"; then
|
|
auxdir="`grep AC_CONFIG_AUX_DIR $fad_cfile | cut -d\( -f 2 | cut -d\) -f 1`"
|
|
fi
|
|
if test -f "$auxdir/$fad_file"; then
|
|
rm -f "$auxdir/$fad_file"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
##############################################################################
|
|
#
|
|
# main - do the real work...
|
|
#
|
|
##############################################################################
|
|
|
|
# announce
|
|
echo "[Checking] prerequisites"
|
|
|
|
# sanity check to make sure user isn't being stupid
|
|
if test ! -d CVS ; then
|
|
cat <<EOF
|
|
|
|
This doesn't look like a developer copy of LAM/MPI. You probably do not
|
|
want to run autogen.sh - it is normally not needed for a release source
|
|
tree. Giving you 2 seconds to reconsider and kill me.
|
|
|
|
EOF
|
|
sleep 2
|
|
fi
|
|
|
|
|
|
# make sure we are at the top of the tree
|
|
if test -f VERSION -a -f configure.ac -a -f src/mpi/c/datatype_get_name.c ; then
|
|
bad=0
|
|
else
|
|
cat <<EOF
|
|
|
|
You must run this script from the top-level LAM directory.
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
# find all the apps we are going to run
|
|
find_app "aclocal"
|
|
find_app "autoheader"
|
|
find_app "autoconf"
|
|
find_app "libtoolize"
|
|
find_app "automake"
|
|
|
|
# Find and delete the GNU helper script files
|
|
find_and_delete config.guess
|
|
find_and_delete config.sub
|
|
find_and_delete depcomp
|
|
find_and_delete install-sh
|
|
find_and_delete ltconfig
|
|
find_and_delete ltmain.sh
|
|
find_and_delete missing
|
|
find_and_delete mkinstalldirs
|
|
find_and_delete libtool
|
|
|
|
# Run the GNU tools
|
|
run_and_check $lam_aclocal
|
|
if test "`grep AC_CONFIG_HEADER configure.ac`" != "" -o \
|
|
"`grep AM_CONFIG_HEADER configure.ac`" != ""; then
|
|
run_and_check $lam_autoheader
|
|
fi
|
|
run_and_check $lam_autoconf
|
|
echo "[Patching] configure for broken libtool -c/-o compiler test"
|
|
sed -e 's/chmod -w \./#LAM\/MPI FIX: chmod -w ./' \
|
|
configure > configure.new
|
|
mv configure.new configure
|
|
chmod a+x configure
|
|
|
|
run_and_check $lam_libtoolize --automake --copy
|
|
run_and_check $lam_automake --foreign -a --copy --include-deps
|
|
|
|
# All done
|
|
exit 0
|