[svn-r6982] Purpose:
Utility Addition
Description:
Added h5c++ script file to compile HDF5 C++ applications.
Platforms tested:
Verbena (Fortran & C++)
Arabica (Fortran & C++)
Modi4 (Fortran & Parallel)
Misc. update:
This commit is contained in:
230
c++/src/h5c++.in
Executable file
230
c++/src/h5c++.in
Executable file
@@ -0,0 +1,230 @@
|
||||
#! /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.
|
||||
##
|
||||
|
||||
############################################################################
|
||||
## ##
|
||||
## Things You May Have to Modify: ##
|
||||
## ##
|
||||
## If the following paths don't point to the place were HDF5 is installed ##
|
||||
## on your system (i.e., you received a binary distribution or moved the ##
|
||||
## files from the originally installed directory to another directory) ##
|
||||
## then modify them accordingly to represent the new paths. ##
|
||||
## ##
|
||||
############################################################################
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
libdir="@libdir@"
|
||||
includedir="@includedir@"
|
||||
|
||||
############################################################################
|
||||
## ##
|
||||
## You shouldn't have to modify anything below this line. ##
|
||||
## ##
|
||||
############################################################################
|
||||
|
||||
host_os="@host_os@"
|
||||
|
||||
prog_name="`basename $0`"
|
||||
|
||||
allargs=""
|
||||
compile_args=""
|
||||
libraries=""
|
||||
link_args=""
|
||||
link_objs=""
|
||||
clibpath=""
|
||||
|
||||
do_link="yes"
|
||||
do_compile="no"
|
||||
dash_o="no"
|
||||
dash_c="no"
|
||||
get_output_file="no"
|
||||
|
||||
SHOW="eval"
|
||||
CXXBASE="@CXX@"
|
||||
CXXLINKERBASE="@CXX@"
|
||||
CFLAGS="@CFLAGS@"
|
||||
CXXFLAGS="@CXXFLAGS@"
|
||||
CPPFLAGS="@CPPFLAGS@"
|
||||
LDFLAGS="@LDFLAGS@"
|
||||
LIBS="@LIBS@"
|
||||
|
||||
CXX="${HDF5_CXX:-$CXXBASE}"
|
||||
CXXLINKER="${HDF5_CLINKER:-$CXXLINKERBASE}"
|
||||
|
||||
USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
|
||||
|
||||
usage() {
|
||||
# A wonderfully informative "usage" message.
|
||||
echo "usage: $prog_name [OPTIONS] <compile line>"
|
||||
echo " OPTIONS:"
|
||||
echo " -help This help message."
|
||||
echo " -echo Show all the shell commands executed"
|
||||
echo " -prefix=DIR Prefix directory to find HDF5 lib/ and include/"
|
||||
echo " subdirectories [default: $prefix]"
|
||||
echo " -show Show the commands without executing them"
|
||||
echo " "
|
||||
echo " <compile line> - the normal compile line options for your compiler."
|
||||
echo " $prog_name uses the same compiler you used to compile"
|
||||
echo " HDF5. Check with your compiler's man pages for more"
|
||||
echo " information on which options are needed."
|
||||
echo " "
|
||||
echo " You can override the compiler, linker, and whether or not to use static"
|
||||
echo " or shared libraries to compile your program by setting the following"
|
||||
echo " environment variables accordingly:"
|
||||
echo " "
|
||||
echo " HDF5_CXX - use a different C compiler"
|
||||
echo " HDF5_CXXLINKER - use a different linker"
|
||||
echo " "
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test "$#" = "0"; then
|
||||
# No parameters specified, issue usage statement and exit.
|
||||
usage
|
||||
fi
|
||||
|
||||
case "$CXX" in
|
||||
gcc)
|
||||
kind="gcc"
|
||||
;;
|
||||
mpicc|mpcc|mpicc_r)
|
||||
# Is this gcc masquarading as an MPI compiler?
|
||||
if test "`${CXX} -v 2>&1 | sed -n 2p | cut -c1-3`" = "gcc"; then
|
||||
kind="gcc"
|
||||
else
|
||||
# Nope
|
||||
kind="$host_os"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
kind="$host_os"
|
||||
;;
|
||||
esac
|
||||
|
||||
for arg in $@ ; do
|
||||
if test "x$get_output_file" = "xyes"; then
|
||||
link_args="$link_args $arg"
|
||||
output_file="$arg"
|
||||
get_output_file="no"
|
||||
continue
|
||||
fi
|
||||
|
||||
case "$arg" in
|
||||
-c)
|
||||
allargs="$allargs $arg"
|
||||
compile_args="$compile_args $arg"
|
||||
|
||||
if test "x$do_link" = "xyes" -a -n "$output_file"; then
|
||||
compile_args="$compile_args -o $outputfile"
|
||||
fi
|
||||
|
||||
do_link="no"
|
||||
dash_c="yes"
|
||||
;;
|
||||
-o)
|
||||
allargs="$allargs $arg"
|
||||
dash_o="yes"
|
||||
|
||||
if test "x$dash_c" = "xyes"; then
|
||||
compile_args="$compile_args $arg"
|
||||
else
|
||||
link_args="$link_args $arg"
|
||||
do_link="yes"
|
||||
get_output_file="yes"
|
||||
fi
|
||||
;;
|
||||
-E|-M)
|
||||
allargs="$allargs $arg"
|
||||
compile_args="$compile_args $arg"
|
||||
dash_c="yes"
|
||||
do_link="no"
|
||||
;;
|
||||
-l*)
|
||||
libraries=" $libraries $arg "
|
||||
allargs="$allargs $arg"
|
||||
;;
|
||||
-prefix=*)
|
||||
prefix="`expr "$arg" : '-prefix=\(.*\)'`"
|
||||
;;
|
||||
-echo)
|
||||
set -x
|
||||
;;
|
||||
-show)
|
||||
SHOW="echo"
|
||||
;;
|
||||
-help)
|
||||
usage
|
||||
;;
|
||||
*\"*)
|
||||
qarg="'"$arg"'"
|
||||
allargs="$allargs $qarg"
|
||||
;;
|
||||
*\'*)
|
||||
qarg='\"'"$arg"'\"'
|
||||
allargs="$allargs $qarg"
|
||||
;;
|
||||
*)
|
||||
allargs="$allargs $qarg"
|
||||
|
||||
if test -s "$arg"; then
|
||||
ext=`expr "$arg" : '.*\(\..*\)'`
|
||||
|
||||
if test "x$ext" = "x.c"; then
|
||||
do_compile="yes"
|
||||
compile_args="$compile_args $arg"
|
||||
fname=`basename $arg .c`
|
||||
link_objs="$link_objs $fname.o"
|
||||
elif test "x$ext" = "x.o"; then
|
||||
if test "x$dash_c" = "xyes"; then
|
||||
compile_args="$compile_args $arg"
|
||||
else
|
||||
do_link="yes"
|
||||
link_objs="$link_objs $arg"
|
||||
fi
|
||||
elif test "x$ext" = "x.a"; then
|
||||
# This is an archive that we're linking in
|
||||
libraries=" $libraries $arg "
|
||||
else
|
||||
compile_args="$compile_args $arg"
|
||||
link_args="$link_args $arg"
|
||||
fi
|
||||
else
|
||||
compile_args="$compile_args $arg"
|
||||
link_args="$link_args $arg"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test "x$do_compile" = "xyes"; then
|
||||
if test "x$dash_c" != "xyes"; then
|
||||
compile_args="-c $compile_args"
|
||||
fi
|
||||
|
||||
$SHOW $CXX -I$includedir $CPPFLAGS $CXXFLAGS $CFLAGS $compile_args
|
||||
status=$?
|
||||
|
||||
if test "$status" != "0"; then
|
||||
exit $status
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$do_link" = "xyes"; then
|
||||
link_args="$link_args ${libdir}/libhdf5_cpp.a ${libdir}/libhdf5.a $LIBS"
|
||||
$SHOW $CXXLINKER -I$includedir $CPPFLAGS $CXXFLAGS $CFLAGS $LDFLAGS $clibpath $link_objs $link_args
|
||||
status=$?
|
||||
fi
|
||||
|
||||
exit $status
|
||||
Reference in New Issue
Block a user