#!/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}
cmake_cxx_flags=${CMAKE_CXX_FLAGS}
cmake_exe_linker_flags=${CMAKE_EXE_LINKER_FLAGS}
cuda_on_or_off=${CUDA:-OFF}

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 "\nTo change these vars, set as env vars or pass to this script like 'VAR=value run_cmake_stk_no_stk_io'\n\n";

cd ${build_dir}

mkdir -p $trilinos_install_dir

# Cleanup old cache before we configure
rm -rf CMakeFiles CMakeCache.txt

cmake \
-DCMAKE_INSTALL_PREFIX=$trilinos_install_dir \
-DCMAKE_BUILD_TYPE=${build_type^^} \
-DCMAKE_CXX_STANDARD:STRING=17 \
-DCMAKE_CXX_FLAGS:STRING="${cmake_cxx_flags}" \
-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 \
-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_CUDA_RELOCATABLE_DEVICE_CODE:BOOL=OFF \
-DKokkos_ARCH_VOLTA70=${cuda_on_or_off} \
-DTpetra_ENABLE_CUDA:BOOL=${cuda_on_or_off} \
-DSTK_ENABLE_TESTS:BOOL=ON \
-DTrilinos_ENABLE_Intrepid2:BOOL=ON \
-DTrilinos_ENABLE_STK:BOOL=ON \
-DTrilinos_ENABLE_STKMesh:BOOL=ON \
-DTrilinos_ENABLE_STKIO:BOOL=OFF \
-DTrilinos_ENABLE_STKTransfer:BOOL=ON \
-DTrilinos_ENABLE_STKUnit_tests:BOOL=ON \
-DTrilinos_ENABLE_STKDoc_tests:BOOL=ON \
-DTrilinos_ENABLE_Gtest:BOOL=ON \
-DCMAKE_EXE_LINKER_FLAGS="${cmake_exe_linker_flags}" \
${trilinos_src_dir}/

