summaryrefslogtreecommitdiffstats
path: root/bin/buildhdf5
diff options
context:
space:
mode:
Diffstat (limited to 'bin/buildhdf5')
-rwxr-xr-xbin/buildhdf5315
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