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}"
 | |
| 
 |