#!/bin/bash
set -e

# MPI_IMPL may be openmpi or mpich
if [ "x${MPI_IMPL}" = "x" ]; then
  MPI_IMPL=openmpi
fi
MPI_EXECUTABLE_SUFFIX=.${MPI_IMPL}

# LIBNAME_SUFFIX=64 identifies the 64-bit builds
if [ "x${LIBNAME_SUFFIX}" = "x64" ]; then
    WITH_LIBNAME_SUFFIX=-DLIBNAME_SUFFIX=${LIBNAME_SUFFIX}
    export FFLAGS="${FFLAGS} -fdefault-integer-8 -DTEST_INT64=1"
    export CFLAGS="${CFLAGS} -DInt=long"
fi

export PRTE_MCA_plm_ssh_agent=/bin/false
export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe
export OMPI_MCA_btl_base_warn_component_unused=0
export OMPI_MCA_btl_tcp_if_include=lo   # avoid complaints about unreachable pairing between local and remote

DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH)

SCALAPACK_VERSION=`dpkg-query -f '${source:Upstream-Version}' -W libscalapack${LIBNAME_SUFFIX}-${MPI_IMPL}-dev`

SKIP_TEST_ARG=x[cz]heevr
if [ "xTEST_SKIP_LIST" != "x" ]; then
  for t in ${TEST_SKIP_LIST}; do
    SKIP_TEST_ARG="${SKIP_TEST_ARG}|$t"
  done
fi

SOURCEDIR=$PWD
TESTDIR=${AUTOPKGTEST_TMP}/build-${MPI_IMPL}-tests
mkdir -p $TESTDIR
cd $TESTDIR

cmake --project-file debian/tests/CMakeLists.txt \
      -DMPI_EXECUTABLE_SUFFIX=${MPI_EXECUTABLE_SUFFIX} \
      -Dscalapack${LIBNAME_SUFFIX}_ROOT=/usr/lib/${DEB_HOST_MULTIARCH}/cmake/scalapack${LIBNAME_SUFFIX}-${SCALAPACK_VERSION}.${MPI_IMPL} \
      ${WITH_LIBNAME_SUFFIX} \
      $SOURCEDIR
make VERBOSE=1
ctest -E "${SKIP_TEST_ARG}" --output-on-failure ${EXTRA_CTEST_OPTIONS}
