set -e

if [ "x$MPI_FLAVOR" = "x" ]; then
  echo "===== TESTING ARMCI-MPI WITH DEFAULT MPI INSTALLATION ====="
  export MPIEXEC=mpiexec
  MPICC=mpicc
else
  echo "===== TESTING ARMCI-MPI BUILD FOR $MPI_FLAVOR ====="
  export MPIEXEC=mpiexec.${MPI_FLAVOR}
  export MPICC=mpicc.${MPI_FLAVOR}
fi

# mpich needs -pthread to link
if $MPICC -show | grep mpich -q; then
  export LDFLAGS="$LDFLAGS -pthread"
fi

export OMPI_MCA_rmaps_base_oversubscribe=1

export CFLAGS="-I/usr/include"
export LT_SYS_LIBRARY_PATH=/usr/lib/`dpkg-architecture -q DEB_HOST_MULTIARCH`

echo "=== CONFIGURING ARM-CI FOR ${MPI_FLAVOR} TESTS ==="
dh_autoreconf
dh_auto_configure -- MPI_FLAVOR=${MPI_FLAVOR}

# make dependencies for test programs
echo "=== MAKE ARM-CI: FIRST BUILD ==="
make clean
make CFLAGS=${CFLAGS} V=1 "MPIEXEC=$MPIEXEC"

# test against installed libraries, not freshly rebuilt libraries
# use local objdir=.lib as defined in ./libtool
echo "=== LINK TO SYSTEM ARM-CI LIBRARIES ==="
objdir=.libs
for l in ${LT_SYS_LIBRARY_PATH}/libarmci*; do
  lib=`basename $l`;
  rm -f ${objdir}/$lib
  ln -s $l ${objdir}/$lib
done

# remove test programs built against freshly rebuilt libraries
echo "=== CLEAN LOCALLY BUILT ARM-CI TEST PROGRAMS ==="
make clean-checkPROGRAMS

# rebuild and run test programs against system libraries and headers
echo "=== BUILD AND RUN ARM-CI TEST PROGRAMS AGAINST $MPI_FLAVOR SYSTEM LIBRARIES ==="
if make check CFLAGS=${CFLAGS} V=1 MPIEXEC="$MPIEXEC -np 2"; then
  echo "Tests passed"
else
  test_return=$?
  echo "Tests failed with return value ${test_return}"
  cat ./test-suite.log >/dev/stderr
  exit ${test_return}
fi
