#! /bin/sh
#
# Copyright by The HDF Group.
# 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 COPYING file, which can be found at the root of the source code
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
# 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
