diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2015-01-31 13:32:42 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2015-01-31 13:32:42 (GMT) |
commit | 46ea85c6cb6c6b33c59cba792c89c34e97d5521c (patch) | |
tree | 9df1db7dc22829c535234d39d0913d48f22c2318 /autogen.sh | |
parent | ba002bcc8f8fad5de54d0239e1e967784e228453 (diff) | |
download | hdf5-46ea85c6cb6c6b33c59cba792c89c34e97d5521c.zip hdf5-46ea85c6cb6c6b33c59cba792c89c34e97d5521c.tar.gz hdf5-46ea85c6cb6c6b33c59cba792c89c34e97d5521c.tar.bz2 |
[svn-r26090] Added an autogen.sh script.
Note that bin/reconfigure still exists. It will be removed at a later
date.
Part of HDFFV-9114
Tested on: jam
Diffstat (limited to 'autogen.sh')
-rwxr-xr-x | autogen.sh | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..0c39bb4 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,255 @@ +#! /bin/sh +# +# Copyright by The HDF Group. +# 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 document set and is +# linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have access +# to either file, you may request a copy from help@hdfgroup.org. +# + +# A script to reconfigure autotools for HDF5, and to recreate other +# generated files specifc to HDF5. +# +# If you want to use a particular version of the autotools, the paths +# to each tool can be overridden using the following environment +# variables: +# +# HDF5_ACLOCAL +# HDF5_AUTOHEADER +# HDF5_AUTOMAKE +# HDF5_AUTOCONF +# HDF5_LIBTOOL +# HDF5_M4 +# +# Note that aclocal will attempt to include libtool's share/aclocal +# directory. +# +# This script takes two options: +# +# -p/--production +# +# When this is selected, the autotools versions are set to the paths +# and versions used by The HDF Group to produce the released versions +# of the library. # -s/--process_source +# +# When this is selected, several scripts are run that process the HDF5 +# source code to add things like trace and error macros. It is not +# necessary to run these if you have just updated configure.ac or +# Makefile.am files. + +# Defaults are not production, don't run source processing. +production=false +process_source=false + +optspec=":hps-" +while getopts "$optspec" optchar; do + case "${optchar}" in + -) + case "${OPTARG}" in + production) + echo "Setting production mode..." + production=true + ;; + process_source) + process_source=true + ;; + *) + if [ "$OPTERR" = 1 ] && [ "${optspec:0:1}" != ":" ]; then + echo "Unknown option --${OPTARG}" >&2 + fi + ;; + esac;; + h) + echo "usage: $0 [-s|--process_source] [-p|--production]" + echo + echo " -p Used by THG to ensure that particular versions" + echo " of the autotools are used and hard-codes" + echo " autotools paths to THG machines. Not for" + echo " non-HDF-Group users!" + echo + echo " -s Run source/API processsing scripts." + echo + echo " NOTE: Each autotool can be set via an environment variable." + echo " These are documented inside this autogen.sh script." + echo + exit 0 + ;; + p) + echo "Setting production mode..." + production=true + ;; + s) + process_source=true + ;; + *) + if [ "$OPTERR" != 1 ] || [ "${optspec:0:1}" = ":" ]; then + echo "Non-option argument: '-${OPTARG}'" >&2 + fi + ;; + esac +done + +if [ "$production" = true ] ; then + + # Production mode + # + # Hard-code canonical HDF Group autotools locations and ensure + # version numbers are correct. + + # Production versions of the autotools + AUTOCONF_VERSION="autoconf (GNU Autoconf) 2.69" + AUTOMAKE_VERSION="automake (GNU automake) 1.14.1" + AUTOHEADER_VERSION="autoheader (GNU Autoconf) 2.69" + ACLOCAL_VERSION="aclocal (GNU automake) 1.14.1" + LIBTOOL_VERSION="(GNU libtool) 2.4.2" + M4_VERSION="m4 (GNU M4) 1.4.17" + + # If paths to autotools are not specified, assume tools are + # located in /mnt/hdf/packages and set paths accordingly. + if test -z ${HDF5_AUTOCONF}; then + HDF5_AUTOCONF=/mnt/hdf/packages/autoconf/autoconf-2.69/bin/autoconf + fi + if test -z ${HDF5_AUTOMAKE}; then + HDF5_AUTOMAKE=/mnt/hdf/packages/automake/automake-1.14.1/bin/automake-1.14 + fi + if test -z ${HDF5_AUTOHEADER}; then + HDF5_AUTOHEADER=/mnt/hdf/packages/autoconf/autoconf-2.69/bin/autoheader + fi + if test -z ${HDF5_ACLOCAL}; then + HDF5_ACLOCAL=/mnt/hdf/packages/automake/automake-1.14.1/bin/aclocal-1.14 + fi + if test -z ${HDF5_LIBTOOL}; then + HDF5_LIBTOOL=/mnt/hdf/packages/libtool/libtool-2.4.2/bin/libtool + fi + if test -z ${HDF5_M4}; then + HDF5_M4=/mnt/hdf/packages/m4/m4-1.4.17/bin/m4 + fi + + # Check version numbers of all autotools against the "correct" versions + AC_VERS=`${HDF5_AUTOCONF} --version 2>&1 | grep "^${AUTOCONF_VERSION}"` + if test -z "${AC_VERS}"; then + echo "${HDF5_AUTOCONF} version is not ${AUTOCONF_VERSION}" + ${HDF5_AUTOCONF} --version + exit 1 + fi + AM_VERS=`${HDF5_AUTOMAKE} --version 2>&1 | grep "^${AUTOMAKE_VERSION}"` + if test -z "${AM_VERS}"; then + echo "${HDF5_AUTOMAKE} version is not ${AUTOMAKE_VERSION}" + ${HDF5_AUTOMAKE} --version + exit 1 + fi + AH_VERS=`${HDF5_AUTOHEADER} --version 2>&1 | grep "^${AUTOHEADER_VERSION}"` + if test -z "${AH_VERS}"; then + echo "${HDF5_AUTOHEADER} version is not ${AUTOHEADER_VERSION}" + ${HDF5_AUTOHEADER} --version + exit 1 + fi + AL_VERS=`${HDF5_ACLOCAL} --version 2>&1 | grep "^${ACLOCAL_VERSION}"` + if test -z "${AL_VERS}"; then + echo "${HDF5_ACLOCAL} version is not ${ACLOCAL_VERSION}" + ${HDF5_ACLOCAL} --version + exit 1 + fi + LT_VERS=`${HDF5_LIBTOOL} --version 2>&1 | grep "${LIBTOOL_VERSION}"` + if test -z "${LT_VERS}"; then + echo "${HDF5_LIBTOOL} version is not ${LIBTOOL_VERSION}" + ${HDF5_LIBTOOL} --version + exit 1 + fi + M4_VERS=`${HDF5_M4} --version 2>&1 | grep "${M4_VERSION}"` + if test -z "${M4_VERS}"; then + echo "${HDF5_M4} version is not ${M4_VERSION}" + ${HDF5_M4} --version + exit 1 + fi + +else + + # Not in production mode + # + # If paths to autotools are not specified, use whatever the system + # has installed as the default. + if test -z ${HDF5_AUTOCONF}; then + HDF5_AUTOCONF=autoconf + fi + if test -z ${HDF5_AUTOMAKE}; then + HDF5_AUTOMAKE=automake + fi + if test -z ${HDF5_AUTOHEADER}; then + HDF5_AUTOHEADER=autoheader + fi + if test -z ${HDF5_ACLOCAL}; then + HDF5_ACLOCAL=aclocal + fi + if test -z ${HDF5_LIBTOOL}; then + HDF5_LIBTOOL=libtool + fi + if test -z ${HDF5_M4}; then + HDF5_M4=m4 + fi + +fi # production + +# Make sure that these versions of the autotools are in the path +AUTOCONF_DIR=`dirname ${HDF5_AUTOCONF}` +LIBTOOL_DIR=`dirname ${HDF5_LIBTOOL}` +M4_DIR=`dirname ${HDF5_M4}` +PATH=${AUTOCONF_DIR}:${M4_DIR}:$PATH + +# Run autotools in order +if test -e "${LIBTOOL_DIR}/../share/aclocal" ; then + aclocal_include="-I ${LIBTOOL_DIR}/../share/aclocal" +fi +echo ${HDF5_ACLOCAL} ${aclocal_include} +${HDF5_ACLOCAL} ${aclocal_include} || exit 1 + +echo ${HDF5_AUTOHEADER} +${HDF5_AUTOHEADER} || exit 1 + +echo ${HDF5_AUTOMAKE} --add-missing +${HDF5_AUTOMAKE} --add-missing || exit 1 + +echo ${HDF5_AUTOCONF} +${HDF5_AUTOCONF} || exit 1 + +# If source processing was eanbled using -s/--process_source, run the +# source processing scripts. +if [ "$process_source" = true ] ; then + + # 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_err + # make_err 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 + + # Run make_vers + # make_vers automatically generates the public headers that define the API version + # macros for HDF5. + echo + echo " Running API version generation script:" + bin/make_vers src/H5vers.txt || exit 1 + + # Run flex + # automatically generates the lexical file for hl/src/H5LTanalyze.c + echo + echo " Running flex generation script:" + bin/genltanalyze || exit 1 + +fi # process_source + +exit 0 + |