You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
6.3 KiB
221 lines
6.3 KiB
#! /usr/bin/env bash
|
|
EXTRA_ARGS=$@
|
|
|
|
# Text color variables
|
|
if [[ $TERM != *"xterm"* ]]; then
|
|
export TERM=dumb
|
|
fi
|
|
txtred=$(tput setaf 1) # Red
|
|
txtgrn=$(tput setaf 2) # Green
|
|
txtylw=$(tput setaf 3) # Yellow
|
|
#txtblu=$(tput setaf 4) # Blue
|
|
#txtpur=$(tput setaf 5) # Purple
|
|
txtcyn=$(tput setaf 6) # Cyan
|
|
#txtwht=$(tput setaf 7) # White
|
|
txtrst=$(tput sgr0) # Text reset
|
|
|
|
function check_valid()
|
|
{
|
|
if [ "${!1}" == "YES" ] || [ "${!1}" == "ON" ]; then
|
|
echo "YES"
|
|
return 1
|
|
fi
|
|
if [ "${!1}" == "NO" ] || [ "${!1}" == "OFF" ]; then
|
|
echo "NO"
|
|
return 1
|
|
fi
|
|
echo "Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF"
|
|
exit 1
|
|
}
|
|
|
|
### Set to YES for parallel compile; otherwise NO for serial (default)
|
|
MPI="${MPI:-NO}"
|
|
MPI=$(check_valid MPI)
|
|
echo "${txtgrn}MPI set to ${MPI}${txtrst}"
|
|
|
|
### Switch for Debug or Release build:
|
|
BUILD_TYPE="${BUILD_TYPE:-Release}"
|
|
#BUILD_TYPE=Debug
|
|
|
|
SHARED="${SHARED:-YES}"
|
|
SHARED=$(check_valid SHARED)
|
|
|
|
### Define to YES to *disable* all exodus deprecated functions
|
|
OMIT_DEPRECATED_CODE="NO"
|
|
|
|
### The following assumes you are building in a subdirectory of ACCESS Root
|
|
### If not, then define "ACCESS" to point to the root of the SEACAS source code.
|
|
ACCESS=$(cd ..; pwd)
|
|
|
|
### If you do not have the X11 developer package on your system
|
|
### which provides X11/Xlib.h and the libX11, then change the "YES"
|
|
### below to "NO". It will disable blot and fastq
|
|
HAVE_X11="${HAVE_X11:-YES}"
|
|
HAVE_X11=$(check_valid HAVE_X11)
|
|
|
|
### Python Version...
|
|
PYTHON_VER=${PYTHON_VER:-"3.0"}
|
|
|
|
### Set to YES to enable the building of a thread-safe version of the Exodus and IOSS libraries.
|
|
THREADSAFE=${THREADSAFE:-NO}
|
|
THREADSAFE=$(check_valid THREADSAFE)
|
|
|
|
### The SEACAS code will install in ${INSTALL_PATH}/bin, ${INSTALL_PATH}/lib, and ${INSTALL_PATH}/include.
|
|
INSTALL_PATH=${ACCESS}
|
|
|
|
### TPLs --
|
|
### Using SEMS (Software Engineering Maintenance & Support) provided libraries...
|
|
### https://sems.sandia.gov/
|
|
module purge
|
|
source /projects/sems/modulefiles/utils/sems-modules-init.sh
|
|
module load sems-gcc/10.1.0
|
|
module load sems-fmt/9.1.0
|
|
module load sems-cmake/3.24.3
|
|
module load sems-doxygen
|
|
module load sems-zlib
|
|
|
|
if [ "$MPI" == "YES" ]
|
|
then
|
|
module load sems-openmpi
|
|
module load sems-hdf5/1.12.2_parallel
|
|
module load sems-netcdf-c/4.8.1_parallel
|
|
module load sems-parallel-netcdf/1.12.1
|
|
module load sems-parmetis-int64/4.0.3
|
|
module load sems-cgns/4.3.0_parallel
|
|
else
|
|
module load sems-hdf5/1.12.2_serial
|
|
module load sems-netcdf-c/4.8.1_serial
|
|
module load sems-cgns/4.3.0_serial
|
|
module load sems-metis-int64/5.1.0
|
|
fi
|
|
|
|
HAVE_NETCDF=YES
|
|
HAVE_CGNS=YES
|
|
|
|
# NOTE: CGNS, MATIO, PNETCDF, and are currently not supported by SEMS.
|
|
# To use them you will need to install them following the directions in
|
|
# README.md, enable them below, and add the appropriate defines below:
|
|
#
|
|
# -D Matio_LIBRARY_DIRS:PATH=${MATIO_PATH}/lib \
|
|
# -D TPL_Matio_INCLUDE_DIRS:PATH=${MATIO_PATH}/include \
|
|
|
|
HAVE_MATIO=NO
|
|
HAVE_CGNS=NO
|
|
|
|
NETCDF_PATH=${SEMS_NETCDF_ROOT}
|
|
HDF5_PATH=${SEMS_HDF5_ROOT}
|
|
CGNS_PATH=${SEMS_CGNS_ROOT}
|
|
|
|
### Define to NO to *enable* exodus deprecated functions
|
|
OMIT_DEPRECATED_CODE="NO"
|
|
|
|
### Set to YES to use Kokkos in the Ioss library; otherwise NO (default)
|
|
KOKKOS=NO
|
|
|
|
### Set to YES for CUDA compile; otherwise NO (default) (only used if KOKKOS=YES
|
|
CUDA=NO
|
|
|
|
### Change this to point to the compilers you want to use
|
|
COMPILER="gnu"
|
|
#COMPILER="clang"
|
|
if [ "$MPI" == "YES" ]
|
|
then
|
|
MPI_EXEC=`which mpiexec`
|
|
MPI_BIN=`dirname $MPI_EXEC`
|
|
|
|
CXX=mpicxx
|
|
CC=mpicc
|
|
FC=mpif77
|
|
|
|
else
|
|
CXX=g++
|
|
CC=gcc
|
|
FC=gfortran
|
|
fi
|
|
|
|
if [ "$KOKKOS" == "YES" ]
|
|
then
|
|
if [ "$CUDA" == "YES" ]
|
|
then
|
|
export "OMPI_CXX=${SEACAS_SRC_DIR}/packages/kokkos/config/nvcc_wrapper"
|
|
export CUDA_MANAGED_FORCE_DEVICE_ALLOC=1
|
|
KOKKOS_SYMBOLS="-D Seacas_ENABLE_Kokkos:BOOL=ON \
|
|
-D TPL_ENABLE_CUDA:Bool=ON \
|
|
-D CUDA_TOOLKIT_ROOT_DIR:PATH=${CUDA_PATH} \
|
|
-D Kokkos_ENABLE_Pthread:BOOL=OFF"
|
|
else
|
|
export OMPI_CXX=`which gcc`
|
|
unset CUDA_MANAGED_FORCE_DEVICE_ALLOC
|
|
KOKKOS_SYMBOLS="-D Seacas_ENABLE_Kokkos:BOOL=ON \
|
|
-D Seacas_ENABLE_OpenMP:Bool=ON \
|
|
-D Kokkos_ENABLE_Pthread:BOOL=OFF"
|
|
fi
|
|
else
|
|
KOKKOS_SYMBOLS="-D Seacas_ENABLE_Kokkos:BOOL=OFF"
|
|
fi
|
|
|
|
rm -f CMakeCache.txt
|
|
|
|
###------------------------------------------------------------------------
|
|
cmake \
|
|
-D CMAKE_CXX_FLAGS="-Wall -Wunused -pedantic" \
|
|
-D CMAKE_C_FLAGS="-Wall -Wunused -pedantic" \
|
|
-D CMAKE_MACOSX_RPATH:BOOL=ON \
|
|
-D CMAKE_INSTALL_RPATH:PATH=${INSTALL_PATH}/lib:${LD_LIBRARY_PATH} \
|
|
-D BUILD_SHARED_LIBS:BOOL=${SHARED} \
|
|
-D CMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
|
-D Seacas_ENABLE_ALL_PACKAGES:BOOL=ON \
|
|
-D Seacas_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
|
|
-D Seacas_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON \
|
|
-D Seacas_ENABLE_TESTS=ON \
|
|
-D CMAKE_INSTALL_PREFIX:PATH=${INSTALL_PATH} \
|
|
-D CMAKE_CXX_COMPILER:FILEPATH=${CXX} \
|
|
-D CMAKE_C_COMPILER:FILEPATH=${CC} \
|
|
-D CMAKE_Fortran_COMPILER:FILEPATH=${FC} \
|
|
-D Seacas_SKIP_FORTRANCINTERFACE_VERIFY_TEST:BOOL=ON \
|
|
-D Seacas_HIDE_DEPRECATED_CODE:BOOL=${OMIT_DEPRECATED_CODE} \
|
|
\
|
|
-D TPL_ENABLE_Netcdf:BOOL=${HAVE_NETCDF} \
|
|
-D TPL_ENABLE_Matio:BOOL=${HAVE_MATIO} \
|
|
-D TPL_ENABLE_CGNS:BOOL=${HAVE_CGNS} \
|
|
-D TPL_ENABLE_MPI:BOOL=${MPI} \
|
|
-D TPL_ENABLE_Pamgen:BOOL=OFF \
|
|
-D TPL_ENABLE_Pthread:BOOL=${THREADSAFE} \
|
|
-D SEACASExodus_ENABLE_THREADSAFE:BOOL=${THREADSAFE} \
|
|
-D SEACASIoss_ENABLE_THREADSAFE:BOOL=${THREADSAFE} \
|
|
-D TPL_ENABLE_fmt:BOOL=ON \
|
|
-D TPL_ENABLE_X11:BOOL=${HAVE_X11} \
|
|
-D PythonInterp_FIND_VERSION:STRING=${PYTHON_VER} \
|
|
\
|
|
${KOKKOS_SYMBOLS} \
|
|
\
|
|
-D MPI_BIN_DIR:PATH=${MPI_BIN} \
|
|
-D NetCDF_ROOT:PATH=${NETCDF_PATH} \
|
|
-D HDF5_ROOT:PATH=${HDF5_PATH} \
|
|
-D HDF5_NO_SYSTEM_PATHS=ON \
|
|
-D CGNS_ROOT:PATH=${CGNS_PATH} \
|
|
-D PNetCDF_LIBRARIES=${SEMS_NETCDF_ROOT}/lib/libpnetcdf.a \
|
|
-D PNetCDF_INCLUDE_DIRS=${SEMS_NETCDF_ROOT}/include/ \
|
|
\
|
|
$EXTRA_ARGS \
|
|
..
|
|
|
|
OS=$(uname -s)
|
|
CC_VER=$(${CC} --version)
|
|
echo ""
|
|
echo " OS: ${OS}"
|
|
echo " ACCESS: ${ACCESS}"
|
|
echo "INSTALL_PATH: ${INSTALL_PATH}"
|
|
echo " "
|
|
echo " CC: ${CC}, ${CC_VER}"
|
|
echo " CXX: ${CXX}"
|
|
echo " FC: ${FC}"
|
|
echo " MPI: ${MPI}"
|
|
echo " SHARED: ${SHARED}"
|
|
echo " BUILD_TYPE: ${BUILD_TYPE}"
|
|
echo " THREADSAFE: ${THREADSAFE}"
|
|
echo " PYTHON_VER: ${PYTHON_VER}"
|
|
echo " "
|
|
echo " NETCDF: ${HAVE_NETCDF}"
|
|
echo " MATIO: ${HAVE_MATIO}"
|
|
echo " CGNS: ${HAVE_CGNS}"
|
|
|