#!/bin/bash
set -ueo pipefail
set -x

flavor="${1:-}"
if [ -z "$flavor" ]; then
  exit
fi

destdir="${2:-}"
if [ -z "$destdir" ]; then
  destdir="$(readlink -f "debian/build-$flavor/tmpinst/")"
fi
if ! [ -d "$destdir" ]; then
  echo "destdir '$destdir' does not exist!" >&2
  exit 1
fi

eval $(dpkg-architecture --print-set)
includedir="$destdir/usr/include/hdf5/$flavor"
libdir="$destdir/usr/lib/$DEB_HOST_MULTIARCH"
flavordir="$libdir/hdf5/$flavor"

mkdir -p "$flavordir"

move_and_link () {
  local file="$1"
  local do_link="$2"
  local suffix="${file#libhdf5}"
  echo $suffix
  if [[ "$suffix" =~ ^_(java|tools)\. ]]; then
    return
  fi
  if [ -h "$libdir/$file" ]; then
    local target="$(readlink "$libdir/$file")"
    local target_file="${target##*/}"
    local target_suffix="${target_file#libhdf5}"
    move_and_link "$target_file" false
    ln -fs "libhdf5_$flavor$target_suffix" "$libdir/$file"
  fi
  mv "$libdir/libhdf5$suffix" "$libdir/libhdf5_$flavor$suffix"
  if [ "$do_link" = true ]; then
    ln -s "$(realpath --no-symlinks --relative-to="$flavordir" "$libdir/libhdf5_$flavor$suffix")" "$flavordir/libhdf5$suffix"
  fi
}

ln -s "$(realpath --relative-to="$flavordir" "$includedir")" "$flavordir/include"
ln -s "." "$flavordir/lib"

for file in $(ls "$libdir"/libhdf5*.{a,so,settings}); do
  filename="${file##*/}"
  [[ "$filename" =~ ^libhdf5_$flavor(.*)$ ]] || continue
  ln -s "../../$filename" "$flavordir/libhdf5${BASH_REMATCH[1]}"
done

mv "$libdir"/pkgconfig "$flavordir/"
