#!/bin/bash

findlibdir() {
  local libname=$1
  local fullpath=`eval "find ${output_dir}/trilinos_tpls -name ${libname}"`
  local libdir=$2
  local dir=`eval "dirname ${fullpath}"`
  eval $libdir="'$dir'"
}

findincdir() {
  local header=$1
  local incdir=$2
  local fullpath=`eval "find ${output_dir}/trilinos_tpls/TPLs_src -name ${header}"`
  local dir=`eval "dirname ${fullpath}"`
  eval $incdir="'$dir'"
}

sierra_dir=$1
output_dir=$2
tpl_paths_file=$3

printf "sierra_proj = ${sierra_dir}\n";
printf "output_dir = ${output_dir}\n";
printf "output tpl_paths_file= ${tpl_paths_file}\n";

rm -f ${tpl_paths_file}

cd ${sierra_dir}
echo "using bake to generate TPLs..."
bake -j8 --no-trilinos --no-seacas --builddir=${output_dir}/BAKE --installdir=${output_dir}/trilinos_tpls /tpl/trilinos//install-trilinos-tpls >& ${output_dir}/bake-tpls.out

if [ $? -ne 0 ] ; then
  echo "!! error using bake to generate tpls. check output in ${output_dir}/bake-tpls.out";
  exit 1;
fi

echo "------------------------"

boost_inc_dir=$sierra_dir/TPLs_src/boost

blas_lib=/usr/lib64/libblas.so
lapack_lib=/usr/lib64/liblapack.so

netcdf_root_dir=$sierra_dir/TPLs_src/netcdf/netcdf-c-4.7.4
findincdir netcdf.h netcdf_inc_dir
findlibdir libnetcdf.a netcdf_lib_dir
echo "netcdf_lib_dir: $netcdf_lib_dir"

findincdir hdf5.h hdf_inc_dir
findlibdir libhdf5.a hdf_lib_dir
echo "hdf_lib_dir: $hdf_lib_dir"

findincdir pnetcdf.h pnetcdf_inc_dir
findlibdir libpnetcdf.a pnetcdf_lib_dir
echo "pnetcdf_lib_dir: $pnetcdf_lib_dir"

parmetis_inc_dir=$sierra_dir/TPLs_src/parmetis/include
metis_inc_dir=$sierra_dir/TPLs_src/parmetis/metis/include

findlibdir libparmetis.a parmetis_lib_dir
echo "parmetis_lib_dir: ${parmetis_lib_dir}"

findlibdir libmetis.a metis_lib_dir
echo "metis_lib_dir: ${metis_lib_dir}"

echo "------------------------"

cat << EOF > ${tpl_paths_file}
BLAS_LIBRARIES=${blas_lib}
LAPACK_LIBRARIES=${lapack_lib}
BOOST_INC_DIR=${boost_inc_dir}
NETCDF_INC_DIR=${netcdf_inc_dir}
NETCDF_LIB_DIR=${netcdf_lib_dir}
PNETCDF_INC_DIR=${pnetcdf_inc_dir}
PNETCDF_LIB_DIR=${pnetcdf_lib_dir}
HDF_INC_DIR=${hdf_inc_dir}
HDF_LIB_DIR=${hdf_lib_dir}
METIS_INC_DIR=${metis_inc_dir}
METIS_LIB_DIR=${metis_lib_dir}
PARMETIS_INC_DIR=${parmetis_inc_dir}
PARMETIS_LIB_DIR=${parmetis_lib_dir}
EOF

