#!/bin/bash

trilinos_src_dir=${TRILINOS_DIR:-${PWD}/../Trilinos}
build_dir=${BUILD_DIR:-${PWD}}
build_type=${CMAKE_BUILD_TYPE:-release}
trilinos_install_dir=${TRILINOS_INSTALL_DIR:-${PWD}/../trilinos_install_dir}
fortran_macro=${FORTRAN_MACRO:-FORTRAN_ONE_UNDERSCORE}
cmake_cxx_flags=${CMAKE_CXX_FLAGS}
cmake_exe_linker_flags=${CMAKE_EXE_LINKER_FLAGS}
cuda_on_or_off=${CUDA:-OFF}
clear_cache=${CLEAR_CACHE:-ON}

printf "\nTRILINOS_DIR=${trilinos_src_dir}\n";
printf "BUILD_DIR=${build_dir}\n";
printf "CMAKE_BUILD_TYPE=${build_type}\n";
printf "CMAKE_EXE_LINKER_FLAGS=${cmake_exe_linker_flags}\n";
printf "CMAKE_CXX_FLAGS=${cmake_cxx_flags}\n";
printf "CUDA=${cuda_on_or_off}\n";
printf "TRILINOS_INSTALL_DIR=${trilinos_install_dir}\n";
printf "FORTRAN_MACRO=${fortran_macro}\n";
printf "\nTo change these vars, set as env vars or pass to this script like 'VAR=value run_cmake_stk_user_facing'\n\n";

mkdir -p $trilinos_install_dir
mkdir -p $build_dir

cd ${build_dir}

if [ "${clear_cache}" == "ON" ] ; then
# Cleanup old cache before we configure
  rm -rf CMakeFiles CMakeCache.txt
fi

cmake \
-DCMAKE_INSTALL_PREFIX=$trilinos_install_dir \
-DCMAKE_BUILD_TYPE=${build_type^^} \
-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
-DTrilinos_ENABLE_TESTS:BOOL=OFF \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTrilinos_ALLOW_NO_PACKAGES:BOOL=OFF \
-DTrilinos_ASSERT_MISSING_PACKAGES=OFF \
-DTPL_ENABLE_MPI=ON \
-DTrilinos_ENABLE_Tpetra:BOOL=ON \
-DTpetraCore_ENABLE_TESTS:BOOL=OFF \
-DTpetra_ENABLE_DEPRECATED_CODE:BOOL=ON \
-DTrilinos_ENABLE_Zoltan2:BOOL=ON \
-DZoltan2_ENABLE_ParMETIS:BOOL=ON \
-DTPL_ENABLE_CUDA:BOOL=${cuda_on_or_off} \
-DKokkos_ENABLE_CUDA:BOOL=${cuda_on_or_off} \
-DKokkos_ENABLE_CUDA_UVM:BOOL=${cuda_on_or_off} \
-DKokkos_ENABLE_RELOCATABLE_DEVICE_CODE:BOOL=OFF \
-DKokkos_ARCH_VOLTA70=${cuda_on_or_off} \
-DTpetra_ENABLE_CUDA:BOOL=${cuda_on_or_off} \
-DTrilinos_ENABLE_Zoltan:BOOL=ON \
-DTrilinos_ENABLE_Fortran:BOOL=OFF \
-DCMAKE_CXX_STANDARD:STRING=17 \
-DCMAKE_CXX_FLAGS:STRING="-DNOT_HAVE_STK_SEACASAPREPRO_LIB -D${fortran_macro} ${cmake_cxx_flags}" \
-DSTK_ENABLE_TESTS:BOOL=OFF \
-DTrilinos_ENABLE_STK:BOOL=ON \
-DTrilinos_ENABLE_STKNGP_TEST:BOOL=ON \
-DTrilinos_ENABLE_STKUnit_test_utils:BOOL=ON \
-DTrilinos_ENABLE_Gtest:BOOL=ON \
-DCDT_ROOT="/fgs/william/CDT/install" \
-DTrilinos_ENABLE_SEACASExodus:BOOL=ON \
-DTrilinos_ENABLE_SEACASIoss:BOOL=ON \
-DTPL_ENABLE_Netcdf:BOOL=ON \
-DTPL_Netcdf_Enables_Netcdf4:BOOL=ON \
-DTPL_Netcdf_Enables_Pnetcdf:BOOL=ON \
-DTPL_ENABLE_Zlib:BOOL=ON \
-DHAVE_PARMETIS_VERSION_4_0_3=ON \
-DTPL_ENABLE_ParMETIS:BOOL=ON \
-DTPL_ENABLE_Pnetcdf:BOOL=ON \
-DNetCDF_LIBRARIES="-lnetcdf -lpnetcdf -lhdf5_hl -lhdf5 -ldl" \
-DTPL_ENABLE_HDF5:BOOL=ON \
-DHDF5_LIBRARIES="-lhdf5" \
-DTPL_HDF5_LIBRARIES="-lhdf5" \
-DCMAKE_EXE_LINKER_FLAGS="${cmake_exe_linker_flags}" \
${trilinos_src_dir}/

