#! /bin/sh # # Copyright by the Board of Trustees of the University of Illinois. # All rights reserved. # # This file is part of HDF5. The full HDF5 copyright notice, including # terms governing use, modification, and redistribution, is contained in # the files COPYING and Copyright.html. COPYING can be found at the root # of the source code distribution tree; Copyright.html can be found at the # root level of an installed copy of the electronic HDF5 document set and # is linked from the top-level documents page. It can also be found at # http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have # access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. # # A script to reconfigure autotools for HDF5, and to recreate other # generated files specifc to HDF5. # If the paths of the autotools are not specified by the user, they # are hardcoded to point to their locations in AFS on HDF5 Linux machines. # Users can specify the locations of the autotools with the following # variables: # AUTOCONF, AUTOMAKE, ACLOCAL, AUTOHEADER should be the path to the # corresponding tools. # LIBTOOL_DIR should be the path to the base libtool directory; # $LIBTOOL_DIR/bin/libtool should invoke libtool, while # $LIBTOOL_DIR/share/aclocal needs to be included by aclocal. # Be very careful when specifying these tools manually! There are a lot # of versions that can get confused (not even counting the m4 utility)! # HDF5 currently uses the following versions of the autotools: AUTOCONF_VERSION="autoconf (GNU Autoconf) 2.60" AUTOMAKE_VERSION="automake (GNU automake) 1.9.6" AUTOHEADER_VERSION="autoheader (GNU Autoconf) 2.60" ACLOCAL_VERSION="aclocal (GNU automake) 1.9.6" LIBTOOL_VERSION="(GNU libtool) 1.5.14" # # When upgrading automake's version, don't forget to also update its # helper utilities, especially depcomp. # If we're running on kagiso, set up paths to point to the correct autotools here kagiso=`hostname | grep "^kagiso"` if test "x${kagiso}" != "x"; then AUTOCONF=/home1/packages/autoconf/autoconf-2.60/bin/autoconf AUTOMAKE=/home1/packages/automake/automake-1.9.6/bin/automake-1.9 AUTOHEADER=/home1/packages/autoconf/autoconf-2.60/bin/autoheader ACLOCAL=/home1/packages/automake/automake-1.9.6/bin/aclocal-1.9 # When using the default settings, add the correct version of autoconf # binaries to path (otherwise aclocal may find an outdated version of # autom4ate and complain about an # "unknown language": Autoconf-without-aclocal-m4. PATH=/home1/packages/autoconf-2.60/bin:$PATH # Use the latest version of M4 PATH=/home1/packages/m4/m4-1.4.7/bin:/home1/packages/m4/m4-1.4.7/share:$PATH # Libtool is used to supply macros that aclocal uses LIBTOOL=/home1/packages/libtool/libtool-1.5.14/bin/libtool fi # If we're on some other machine and automake et. al. aren't specified, guess # that it's a Linux system connected to NCSA AFS. # Someday this check could be smarter (e.g. check to make sure that # 'autoconf' isn't the correct version before replacing it with this # default. if test -z ${AUTOCONF}; then AUTOCONF=/afs/ncsa/projects/hdf/packages/autoconf-2.60/bin/autoconf fi if test -z ${AUTOMAKE}; then AUTOMAKE=/afs/ncsa/projects/hdf/packages/automake-1.9.6/bin/automake-1.9 fi if test -z ${AUTOHEADER}; then AUTOHEADER=/afs/ncsa/projects/hdf/packages/autoconf-2.60/bin/autoheader fi if test -z ${ACLOCAL}; then ACLOCAL=/afs/ncsa/projects/hdf/packages/automake-1.9.6/bin/aclocal-1.9 fi if test -z ${LIBTOOL}; then LIBTOOL=/afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/bin/libtool fi # Check version numbers of all autotools against the "correct" versions AC_VERS=`${AUTOCONF} --version 2>&1 | grep "^${AUTOCONF_VERSION}"` if test -z "${AC_VERS}"; then echo "${AUTOCONF} version is not ${AUTOCONF_VERSION}" exit 1 fi AM_VERS=`${AUTOMAKE} --version 2>&1 | grep "^${AUTOMAKE_VERSION}"` if test -z "${AM_VERS}"; then echo "${AUTOMAKE} version is not ${AUTOMAKE_VERSION}" exit 1 fi AH_VERS=`${AUTOHEADER} --version 2>&1 | grep "^${AUTOHEADER_VERSION}"` if test -z "${AH_VERS}"; then echo "${AUTOHEADER} version is not ${AUTOHEADER_VERSION}" exit 1 fi AL_VERS=`${ACLOCAL} --version 2>&1 | grep "^${ACLOCAL_VERSION}"` if test -z "${AL_VERS}"; then echo "${ACLOCAL} version is not ${ACLOCAL_VERSION}" exit 1 fi LT_VERS=`${LIBTOOL} --version 2>&1 | grep "${LIBTOOL_VERSION}"` if test -z "${LT_VERS}"; then echo "${LIBTOOL} version is not ${LIBTOOL_VERSION}" exit 1 fi # Make sure that the tools are in the path. AUTOCONF_DIR=`dirname ${AUTOCONF}` PATH=${AUTOCONF_DIR}:$PATH LIBTOOL_DIR=`dirname ${LIBTOOL}` # Run autoconf/automake commands in order echo ${ACLOCAL} -I ${LIBTOOL_DIR}/../share/aclocal ${ACLOCAL} -I ${LIBTOOL_DIR}/../share/aclocal || exit 1 echo ${AUTOHEADER} ${AUTOHEADER} || exit 1 echo ${AUTOMAKE} --add-missing ${AUTOMAKE} --add-missing || exit 1 echo ${AUTOCONF} ${AUTOCONF} || exit 1 # Clean up top-level Makefile.in # pmake wants an argument to be the first non-comment line it encounters # in the Makefile. Automake wants to reorganize the Makefile. # To work around this, we post-process the top-level Makefile.in. sed "s/^#xxx//" Makefile.in > Makefile.in.new mv Makefile.in.new Makefile.in # Run trace script # The trace script adds H5TRACE macros to library source files. It should # have no effect on files that don't have HDF5 API macros in them. echo echo " Running trace script:" bin/trace src/H5*.c || exit 1 # Run make_error # make_error automatically generates the H5E headers that create error message # types for HDF5. echo echo " Running error generation script:" bin/make_err src/H5err.txt || exit 1 exit 0