diff options
Diffstat (limited to 'bin/buildhdf5')
-rwxr-xr-x | bin/buildhdf5 | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/bin/buildhdf5 b/bin/buildhdf5 new file mode 100755 index 0000000..4ceec6d --- /dev/null +++ b/bin/buildhdf5 @@ -0,0 +1,315 @@ +#!/bin/sh +# Build HDF5 library by doing configure, make, and tests. +# Usage: See USAGE() +# Programmer: Albert Cheng +# Creation date: Jul 9, 2003 + +# Some handy definitions +USAGE() +{ +cat <<EOF +Buildhdf5 builds the HDF5 library by running configure, make and make check. +It skips the configure part if one has been done already. In effect, one +can continue from a previous build. + +Command Syntax +============== +buildhdf5 [-config] [-gass] [-srcdir dir] config-arguments ... + -config: run configure only. [default to do build too] + -gass: configure for the GASS driver + -help: show this help page + -n: no execution, just show commands + -srcdir: use dir as the source directory + [Note: this is different from --srcdir + which will be passed to configure] + all other arguments are passed to configure + + +Configure in place or by srcdir +=============================== +By default, the command looks for the configure command in +'.' and then '../hdf5'. When it finds it, it uses it to do +the configure part. In effect, if ./configure is found, it +does the build in place. If it finds ../hdf5/configure, it +does the --srcdir (that is separated source) build. Therefore, +if you have the following structure setup, you can run multiple +hosts building simultantously using a common source code. + hdf5_1.4/hdf5 # holds the source + .../arabica # for SunOS 2.7 + .../arabicapp # for SunOS 2.7 parallel + .../burrwhite # for Linux 2.4 + +Installing binary +================= +This command always install the binary in \$PWD/installdir. +This allows multiple install testing in the same host if the srcdir +configure is used. +EOF +} + + +TIMESTAMP() +{ + echo "=====" "`date`" "=====" +} + + +QUIT() +{ + TIMESTAMP +} + + +# Do one step bracketed with time stamps +# The '< /dev/null' is needed to prevent some applications like MPI +# jobs blocked for reading when they read stdin unnecessary. +STEP() +{ + banner="$1" + command="$2" + resultfile="$3" + + echo "$banner" + (TIMESTAMP; nerror=0 ; + echo "eval $command" + eval $command || nerror=1 ; + TIMESTAMP; exit $nerror) < /dev/null >> "$resultfile" 2>&1 + if [ $? -ne 0 ]; then + echo "error in '$banner'. buildhdf5 aborted." + exit 1 + fi +} + + +# Try locate the HDF4 library +# This is a hack because there is no consistent place to find +# the valid HDF library. +LOCATE_HDF4() +{ + OS=`uname -s` + echo OS=$OS + case "$OS" in + HP-UX) + h4paths="/afs/ncsa/packages/hdf/HPUX_10.20" + ;; + IRIX) + h4paths="/afs/ncsa/packages/hdf/4.1r3_irix" + ;; + IRIX64) + case "$CC" in + *-n32) + h4paths="/afs/ncsa/packages/hdf/IRIX64-n32_6.5" + ;; + *) + h4paths="/afs/ncsa/packages/hdf/IRIX64_6.5" + ;; + esac + ;; + Linux) + h4paths="/afs/ncsa/packages/hdf/linux" + ;; + OSF1) + h4paths="/afs/ncsa/packages/hdf/OSF1_V4.0" + ;; + *) + h4paths="/usr/ncsa /usr/sdt" + ;; + esac + echo $h4paths + for h4 in $h4paths; do + if [ -f $h4/lib/libdf.a -a -f $h4/include/hdf.h ]; then + WITH_H4="--with-hdf4=$h4/include,$h4/lib" + break + fi + done + echo WITH_H4="$WITH_H4" +} + + +# Try locate the Fortran compiler +# This is a hack because there is no consistent fortran compiler name +LOCATE_FORTRAN() +{ + OS=`uname -s` + echo OS=$OS + case "$OS" in + IRIX64) + case "$CC" in + *-n32) + gasspaths=/usr/local/globus-install-1.1.1/development/mips-sgi-irix6.5-n32_nothreads_standard_debug + sslpaths=/usr/local/ssl-n32 + ;; + *) + gasspaths=/usr/local/globus-install-1.1.1/development/mips-sgi-irix6.5-64_nothreads_standard_debug + sslpaths=/usr/local/ssl + ;; + esac + ;; + *) + ;; + esac + echo gasspaths=$gasspaths + echo $sslpaths=$sslpaths + for x in $gasspaths dummy; do + if [ $x != dummy -a -f $x/lib/libglobus_gass_cache.a ]; then + WITH_GASS="--with-gass=$x/include,$x/lib" + break + fi + done + for x in $sslpaths dummy; do + if [ $x != dummy -a -f $x/lib/libssl.a ]; then + WITH_SSL="--with-ssl=$x/lib" + break + fi + done + + echo WITH_GASS="$WITH_GASS" + echo WITH_SSL="$WITH_SSL" + +} + + +# Try locate the GASS software library +# This is a hack because there is no consistent place to find +# the valid HDF library. +LOCATE_GASS() +{ + OS=`uname -s` + echo OS=$OS + case "$OS" in + IRIX64) + case "$CC" in + *-n32) + gasspaths=/usr/local/globus-install-1.1.1/development/mips-sgi-irix6.5-n32_nothreads_standard_debug + sslpaths=/usr/local/ssl-n32 + ;; + *) + gasspaths=/usr/local/globus-install-1.1.1/development/mips-sgi-irix6.5-64_nothreads_standard_debug + sslpaths=/usr/local/ssl + ;; + esac + ;; + *) + ;; + esac + echo gasspaths=$gasspaths + echo $sslpaths=$sslpaths + for x in $gasspaths dummy; do + if [ $x != dummy -a -f $x/lib/libglobus_gass_cache.a ]; then + WITH_GASS="--with-gass=$x/include,$x/lib" + break + fi + done + for x in $sslpaths dummy; do + if [ $x != dummy -a -f $x/lib/libssl.a ]; then + WITH_SSL="--with-ssl=$x/lib" + break + fi + done + + echo WITH_GASS="$WITH_GASS" + echo WITH_SSL="$WITH_SSL" + +} + + +# Configure. Default to do --srcdir. +CONFIG() +{ + INSTALLDIR=`pwd`/installdir + + test -d $INSTALLDIR || ( echo mkdir $INSTALLDIR; \ + test "$NOEXEC" != 'noexec' && mkdir $INSTALLDIR ) + CMD="$SRCDIR/configure --prefix=$INSTALLDIR $*" + echo $CMD + if [ "$NOEXEC" != 'noexec' ]; then + $CMD + else + true # set exit code as 0 + fi +} + +# Main body +TIMESTAMP +trap QUIT 0 + +# +# setup +# +MAKE=${MAKE:-'gmake'} +export MAKE +CONFIGURE="CONFIG" +CONFIG_ONLY=no # default is configure and build +NOEXEC= # default to execute commands +SRCDIRLIST=". ../hdf5" # places to look for configure +nerror=0 + +# parse some options +while [ $# -gt 0 ]; do + case "$1" in + -config) + # do configure only + CONFIG_ONLY=yes + ;; + -gass) + LOCATE_GASS + ;; + -help) + USAGE + exit 0 + ;; + -n) + NOEXEC='noexec' + ;; + -srcdir) + shift + SRCDIRLIST="$1" + ;; + *) # Quit parsing + break + ;; + esac + shift +done + +# Figure out if srcdir is wished. +# Make sure we are at the library root level +# by checking couple typical files. Not bullet-proof. +for SRCDIR in $SRCDIRLIST dummy; do + if [ x-$SRCDIR = x-dummy ]; then + break + fi + if [ -d $SRCDIR/src -a -d $SRCDIR/config -a -f $SRCDIR/configure ] + then + break + fi +done + +if [ x-$SRCDIR = x-dummy ]; then + echo "Could not find the source dir or configure script. Abort." + exit 1 +fi + +# Configure +# no configure if already done. +if [ ! -f config.status ]; then + CONFIGURE="$CONFIGURE $WITH_SSL $WITH_GASS" + STEP "Configure HDF5..." "$CONFIGURE $*" "#config" +else + STEP "Confiugre Skipped" "echo Confiugre Skipped" "#config" +fi + +if [ x-$CONFIG_ONLY = x-yes ]; then + exit 0 +fi + + +# Compile +STEP "Make HDF5..." "$MAKE" "#make" + +# Tests +STEP "Testing HDF5..." "$MAKE check" "#test" + +# all done +echo "No Errors encountered" +TIMESTAMP |