#! /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 COPYING file, which can be found at the root of the source code # distribution tree, or in https://www.hdfgroup.org/licenses. # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # ## Remove paths to libraries used to build HDF5 when packaging HDF5 ## binaries. ## For help page, use "h5rmflags -help" # Constants definitions EXIT_SUCCESS=0 EXIT_FAILURE=1 # Function definitions # show help page usage() { # A wonderfully informative "usage" message. echo "usage: $prog_name [OPTIONS]" echo " OPTIONS:" echo " -help|help This help message" echo " -echo Show all the shell commands executed" echo " -force No prompt, just do it" echo " -prefix=DIR New directory to find HDF5 lib/ and include/" echo " subdirectories [default: current directory]" echo " -tool=TOOL Tool to update. TOOL must be in the current" echo " directory and writable. [default: $h5tools]" echo " -show Show the commands without executing them" echo " " exit $EXIT_FAILURE } # display variable values dump_vars(){ echo "====Showing all variable values=====" echo prefix=$prefix echo h5tools=$h5tools echo "====End Showing=====" } # show actions to be taken show_action() { echo "Update the following tools because they are now installed at a new directory" for t in $foundtools; do echo "${t}:" echo " current setting=`sed -e '/^prefix=/s/prefix=//p' -e d $t`" echo " new setting="\""$prefix"\" done } # Report Error message ERROR() { echo "***ERROR***" echo "$1" } # Main # # Initialization h5tools="h5cc h5pcc h5fc h5pfc h5c++" # possible hdf5 tools foundtools= # tools found and will be modified fmode= # force mode, default is off prefix=`(cd ..;pwd)` # Parse options for arg in $@ ; do case "$arg" in -prefix=*) prefix="`expr "$arg" : '-prefix=\(.*\)'`" ;; -echo) set -x ;; -show) SHOW="echo" ;; -tool=*) h5tools="`expr "$arg" : '-tool=\(.*\)'`" ;; -help|help) usage ;; -force) fmode=yes ;; *) ERROR "Unknown Option($arg)" usage exit $EXIT_FAILURE ;; esac done # Sanity checks #if [ ! -d $prefix ]; then # ERROR "prefix($prefix) is not an existing directory" # exit $EXIT_FAILURE #fi for x in $h5tools; do if [ -f $x ]; then foundtools="$foundtools $x" if [ ! -w $x ]; then ERROR "h5tool($x) is not writable" exit $EXIT_FAILURE fi fi done if [ -z "$foundtools" ]; then ERROR "found no tools to modify" exit $EXIT_FAILURE fi # Show actions to be taken and get consent show_action # Update them if [ "$SHOW" = "echo" ]; then echo "===Update commands are:====" # cat $CMDFILE echo "===End Update commands=====" fi for t in $foundtools; do echo Update $t ... # COMMAND="ed - $t" # if [ "$SHOW" = "echo" ]; then # echo $COMMAND # else # $COMMAND < $CMDFILE ed - $t << end g/^H5BLD_CPPFLAGS/s/-I\/.*include //g g/^H5BLD_LDFLAGS/s/-L\/.*lib //g g/^H5BLD_LDFLAGS/s/-L\/.*lib64 //g . w end # fi done # Cleanup #rm -f $CMDFILE exit $EXIT_SUCCESS # Some possible future features to add # CCBASE - Name of the alternative C compiler # CLINKERBASE - Name of the alternative linker # LDFLAGS - Path to different libraries your application will link with # (this path should include the path to the zlib library) # LIBS - Libraries your application will link with