Cloned SEACAS for EXODUS library with extra build files for internal package management.
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.

1080 lines
34 KiB

2 years ago
#! /usr/bin/env bash
# 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
# Which compiler to use?
export ACCESS=$(pwd)
. ${ACCESS}/TPL/compiler.sh
function check_exec()
{
local var=$1
command -v ${var} >/dev/null 2>&1 || { echo >&2 "${txtred}---${var} is required, but is not currently in path. Aborting TPL Install.${txtrst}"; exit 1; }
}
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 "${txtred}Invalid value for $1 (${!1}) -- Must be ON, YES, NO, or OFF${txtrst}"
exit 1
}
#By default, download and then install.
DOWNLOAD=${DOWNLOAD:-YES}
DOWNLOAD=$(check_valid DOWNLOAD)
BUILD=${BUILD:-YES}
BUILD=$(check_valid BUILD)
# Force downloading and installation even if the TPL already exists in lib/include
FORCE=${FORCE:-NO}
FORCE=$(check_valid FORCE)
DEBUG=${DEBUG:-NO}
DEBUG=$(check_valid DEBUG)
# Shared libraries or static libraries?
# For CRAY, must explicitly specify SHARED=YES, or it will default to NO
# All other platforms default to SHARED=YES
if [ "$CRAY" == "YES" ]
then
SHARED="${SHARED:-NO}"
else
SHARED="${SHARED:-YES}"
fi
SHARED=$(check_valid SHARED)
# Enable Burst-Buffer support in PnetCDF?
BB=${BB:-NO}
BB=$(check_valid BB)
CRAY=${CRAY:-NO}
CRAY=$(check_valid CRAY)
# Which TPLS? (NetCDF always, PnetCDF if MPI=ON)
HDF5=${HDF5:-YES}
HDF5=$(check_valid HDF5)
CGNS=${CGNS:-${HDF5}}
CGNS=$(check_valid CGNS)
MATIO=${MATIO:-YES}
MATIO=$(check_valid MATIO)
PARMETIS=${PARMETIS:-NO}
PARMETIS=$(check_valid PARMETIS)
METIS=${METIS:-NO}
METIS=$(check_valid METIS)
if [ "$PARMETIS" == "YES" ]
then
METIS="YES"
fi
FMT=${FMT:-YES}
FMT=$(check_valid FMT)
GNU_PARALLEL=${GNU_PARALLEL:-YES}
GNU_PARALLEL=$(check_valid GNU_PARALLEL)
USE_ZLIB_NG=${USE_ZLIB_NG:-NO}
USE_ZLIB_NG=$(check_valid USE_ZLIB_NG)
if [ "${USE_ZLIB_NG}" == "YES" ]
then
export NEEDS_ZLIB="YES"
fi
NEEDS_ZLIB=${NEEDS_ZLIB:-NO}
NEEDS_ZLIB=$(check_valid NEEDS_ZLIB)
NEEDS_SZIP=${NEEDS_SZIP:-NO}
NEEDS_SZIP=$(check_valid NEEDS_SZIP)
USE_AEC=${USE_AEC:-NO}
USE_AEC=$(check_valid USE_AEC)
KOKKOS=${KOKKOS:-NO}
KOKKOS=$(check_valid KOKKOS)
H5VERSION=${H5VERSION:-V112}
FAODEL=${FAODEL:-NO}
FAODEL=$(check_valid FAODEL)
ADIOS2=${ADIOS2:-NO}
ADIOS2=$(check_valid ADIOS2)
CATALYST2=${CATALYST2:-NO}
CATALYST2=$(check_valid CATALYST2)
GTEST=${GTEST:-NO}
GTEST=$(check_valid GTEST)
MPI=${MPI:-NO}
MPI=$(check_valid MPI)
SUDO=${SUDO:-}
JOBS=${JOBS:-2}
VERBOSE=${VERBOSE:-1}
USE_PROXY=${USE_PROXY:-NO}
USE_PROXY=$(check_valid USE_PROXY)
if [ "${USE_PROXY}" == "YES" ]
then
export http_proxy="http://proxy.sandia.gov:80"
export https_proxy="https://proxy.sandia.gov:80"
fi
pwd
INSTALL_PATH=${INSTALL_PATH:-${ACCESS}}
if [ "$MPI" == "YES" ] && [ "$CRAY" == "YES" ]
then
CC=cc; export CC
CFLAGS=-static; export CFLAGS
CXX=CC; export CXX
CXXFLAGS=-static; export CXXFLAGS
elif [ "$MPI" == "YES" ]
then
CC=mpicc; export CC
fi
OS=$(uname -s)
if [ "$SHARED" == "YES" ]
then
if [ "$OS" == "Darwin" ] ; then
LD_EXT="dylib"
else
LD_EXT="so"
fi
else
LD_EXT="a"
fi
if [ $# -gt 0 ]; then
if [ "$1" == "--help" ]; then
echo "${txtcyn}Environment Variables used in the script and their default values:"
echo ""
echo " ACCESS = ${txtgrn}${ACCESS}${txtcyn} (Automatically set to current directory)"
echo " INSTALL_PATH = ${txtgrn}${INSTALL_PATH}${txtcyn}"
echo " OS = ${txtgrn}${OS}${txtcyn} (Automatically set)"
echo " COMPILER = ${COMPILER} (gnu clang intel ibm)"
echo " MPI = ${MPI} (Parallel Build?)"
echo ""
echo " FORCE = ${FORCE}"
echo " DOWNLOAD = ${DOWNLOAD}"
echo " BUILD = ${BUILD}"
echo " SHARED = ${SHARED}"
echo " DEBUG = ${DEBUG}"
echo " USE_PROXY = ${USE_PROXY}"
echo ""
echo " HDF5 = ${HDF5}"
echo " H5VERSION = ${H5VERSION}"
echo " CGNS = ${CGNS}"
echo " MATIO = ${MATIO}"
echo " METIS = ${METIS}"
echo " PARMETIS = ${PARMETIS}"
echo " GNU_PARALLEL = ${GNU_PARALLEL}"
echo " FMT = ${FMT}"
echo " NEEDS_ZLIB = ${NEEDS_ZLIB}"
echo " USE_ZLIB_NG = ${USE_ZLIB_NG}"
echo " NEEDS_SZIP = ${NEEDS_SZIP}"
echo " USE_AEC = ${USE_AEC}"
echo " KOKKOS = ${KOKKOS}"
echo " BB = ${BB}"
echo " FAODEL = ${FAODEL}"
echo " ADIOS2 = ${ADIOS2}"
echo " CATALYST2 = ${CATALYST2}"
echo " GTEST = ${GTEST}"
echo ""
echo " SUDO = ${SUDO} (empty unless need superuser permission via 'sudo')"
echo " JOBS = ${JOBS}"
echo " VERBOSE = ${VERBOSE}"
echo "${txtrst}"
exit 0
fi
fi
# Check that cmake, git, wget exist at the beginning instead of erroring out later on...
check_exec cmake
check_exec git
check_exec wget
if [ "$NEEDS_SZIP" == "YES" ]
then
if [ "$USE_AEC" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libsz.${LD_EXT} ]
then
echo "${txtgrn}+++ SZIP (via libaec library)${txtrst}"
szip_version="1.0.4"
cd $ACCESS || exit
cd TPL/szip || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf libaec-${szip_version}
rm -rf v-${szip_version}.tar.gz
wget --no-check-certificate https://github.com/MathisRosenhauer/libaec/archive/v${szip_version}.tar.gz
tar -xzf v${szip_version}.tar.gz
rm -rf v${szip_version}.tar.gz
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd libaec-${szip_version} || exit
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} MPI=${MPI} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 "${txtred}couldn\'t configure libaec(szip). exiting.${txtrst}"
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 "${txtred}couldn\'t build libaec(szip). exiting.${txtrst}"
exit 1
fi
fi
else
echo "${txtylw}+++ SZIP already installed. Skipping download and installation.${txtrst}"
fi
else
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libsz.${LD_EXT} ]
then
echo "${txtgrn}+++ SZIP${txtrst}"
szip_version="2.1.1"
cd $ACCESS || exit
cd TPL/szip || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf szip-${szip_version}
rm -rf szip-${szip_version}.tar.gz
wget --no-check-certificate https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-${szip_version}.tar.gz
tar -xzf szip-${szip_version}.tar.gz
rm -rf szip-${szip_version}.tar.gz
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd szip-${szip_version} || exit
# mkdir build
# cd build || exit
./configure --prefix=${INSTALL_PATH}
# CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} MPI=${MPI} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure szip. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build szip. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ SZIP already installed. Skipping download and installation.${txtrst}"
fi
fi
fi
if [ "$NEEDS_ZLIB" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libz.${LD_EXT} ]
then
if [ "$USE_ZLIB_NG" == "YES" ]
then
echo "${txtgrn}+++ ZLIB-NG${txtrst}"
zlib_ng_version="develop"
cd $ACCESS || exit
cd TPL || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf zlib-ng
git clone https://github.com/zlib-ng/zlib-ng
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd zlib-ng || exit
git checkout ${zlib_ng_version}
rm -rf build
mkdir build
cmake -Bbuild -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} -DZLIB_COMPAT=YES .
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure zlib-ng. exiting.${txtrst}
exit 1
fi
cmake --build build --config Release
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build zlib-ng. exiting.${txtrst}
exit 1
fi
cmake --install build --config Release
fi
else
echo "${txtgrn}+++ ZLIB${txtrst}"
zlib_version="1.2.13"
cd $ACCESS || exit
cd TPL || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf zlib-${zlib_version}
rm -rf zlib-${zlib_version}.tar.gz
wget --no-check-certificate https://zlib.net/fossils/zlib-${zlib_version}.tar.gz
tar -xzf zlib-${zlib_version}.tar.gz
rm -rf zlib-${zlib_version}.tar.gz
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd zlib-${zlib_version} || exit
if [ "$SHARED" == "NO" ]
then
USE_STATIC="--static"
fi
./configure --prefix=${INSTALL_PATH} ${USE_STATIC}
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure zlib. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build zlib. exiting.${txtrst}
exit 1
fi
fi
fi
else
echo "${txtylw}+++ ZLIB already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== BUILD HDF5 ===============
if [ "$HDF5" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libhdf5.${LD_EXT} ]
then
echo "${txtgrn}+++ HDF5${txtrst}"
hdf_suffix=""
if [ "${H5VERSION}" == "V18" ]; then
hdf_version="1.8.23"
hdf_base="1.8"
elif [ "${H5VERSION}" == "V110" ]; then
hdf_version="1.10.10"
hdf_base="1.10"
elif [ "${H5VERSION}" == "V112" ]; then
hdf_version="1.12.2"
hdf_base="1.12"
elif [ "${H5VERSION}" == "V113" ]; then
hdf_version="1.13.1"
hdf_base="1.13"
elif [ "${H5VERSION}" == "V114" ]; then
hdf_version="1.14.1"
hdf_base="1.14"
hdf_suffix="-2"
elif [ "${H5VERSION}" == "develop" ]; then
hdf_version="develop"
else
echo 1>&2 ${txtred}Invalid HDF5 version specified: ${H5VERSION}. Must be one of V18, V110, V112. exiting.${txtrst}
exit 1
fi
cd $ACCESS || exit
cd TPL/hdf5 || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf hdf5-${hdf_version}${hdf_suffix}
rm -f hdf5-${hdf_version}${hdf_suffix}.tar.bz2
if [ "${H5VERSION}" == "develop" ]; then
git clone https://github.com/HDFGroup/hdf5.git hdf5-develop
else
wget --no-check-certificate https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${hdf_base}/hdf5-${hdf_version}/src/hdf5-${hdf_version}${hdf_suffix}.tar.bz2
fi
if [ "${H5VERSION}" != "develop" ]
then
tar -jxf hdf5-${hdf_version}${hdf_suffix}.tar.bz2
rm -f hdf5-${hdf_version}${hdf_suffix}.tar.bz2
fi
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd hdf5-${hdf_version}${hdf_suffix} || exit
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} H5VERSION=${H5VERSION} DEBUG=${DEBUG} SHARED=${SHARED} NEEDS_ZLIB=${NEEDS_ZLIB} NEEDS_SZIP=${NEEDS_SZIP} MPI=${MPI} bash -x ../../runcmake.sh
#CRAY=${CRAY} H5VERSION=${H5VERSION} DEBUG=${DEBUG} SHARED=${SHARED} NEEDS_ZLIB=${NEEDS_ZLIB} NEEDS_SZIP=${NEEDS_SZIP} MPI=${MPI} bash ../runconfigure.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure hdf5. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "V=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build hdf5. exiting.${txtrst}
exit 1
fi
fi
# Create default plugin directory...
mkdir ${INSTALL_PATH}/lib/hdf5
mkdir ${INSTALL_PATH}/lib/hdf5/lib
mkdir ${INSTALL_PATH}/lib/hdf5/lib/plugin
else
echo "${txtylw}+++ HDF5 already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL PnetCDF if parallel build ===============
if [ "$MPI" == "YES" ]
then
# PnetCDF currently only builds static library...
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libpnetcdf.a ]
then
echo "${txtgrn}+++ PnetCDF${txtrst}"
pnet_version="1.12.3"
pnet_base="pnetcdf"
cd $ACCESS || exit
cd TPL/pnetcdf || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf ${pnet_base}-${pnet_version}
rm -f ${pnet_base}-${pnet_version}.tar.gz
wget --no-check-certificate https://parallel-netcdf.github.io/Release/${pnet_base}-${pnet_version}.tar.gz
tar -xzf ${pnet_base}-${pnet_version}.tar.gz
rm -f ${pnet_base}-${pnet_version}.tar.gz
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd ${pnet_base}-${pnet_version} || exit
CRAY=${CRAY} BB=${BB} DEBUG=${DEBUG} SHARED=${SHARED} bash ../runconfigure.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure PnetCDF. exiting.${txtrst}
exit 1
fi
if [ "$CRAY" == "YES" ]
then
make -j${JOBS} LDFLAGS=-all-static && ${SUDO} make install
else
make -j${JOBS} && ${SUDO} make install
fi
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build PnetCDF. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ PnetCDF already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL NETCDF ===============
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libnetcdf.${LD_EXT} ]
then
echo "${txtgrn}+++ NetCDF${txtrst}"
cd $ACCESS || exit
cd TPL/netcdf || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf netcdf-c
git clone https://github.com/Unidata/netcdf-c netcdf-c
fi
# net_version="v4.9.1"
net_version="v4.9.2"
# net_version="v4.8.1"
# net_version="master"
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd netcdf-c || exit
if [ "$net_version" != "master" ]
then
git checkout $net_version
fi
rm -rf build
mkdir build
cd build || exit
if [ "$HDF5" == "YES" ]
then
export HDF5_PLUGIN_PATH=${INSTALL_PATH}/lib/hdf5/lib/plugin
fi
CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} HDF5=${HDF5} NEEDS_ZLIB=${NEEDS_ZLIB} MPI=${MPI} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure cmake for NetCDF. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "VERBOSE=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build NetCDF. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ NetCDF already installed. Skipping download and installation.${txtrst}"
fi
# =================== INSTALL CGNS ===============
if [ "$CGNS" == "YES" ] && [ "$HDF5" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libcgns.${LD_EXT} ]
then
echo "${txtgrn}+++ CGNS${txtrst}"
cd $ACCESS || exit
cd TPL/cgns || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf CGNS
git clone https://github.com/cgns/CGNS
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd CGNS || exit
git checkout v4.3.0
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} NEEDS_ZLIB=${NEEDS_ZLIB} MPI=${MPI} bash ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure CGNS. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build CGNS. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ CGNS already installed. Skipping download and installation.${txtrst}"
fi
fi
if [ "$CGNS" == "YES" ] && [ "$HDF5" == "NO" ]
then
echo "${txtred}+++ CGNS requested, but HDF5 is not enabled. Cannot build CGNS without HDF5.${txtrst}"
fi
# =================== INSTALL METIS ===============
if [ "$METIS" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libmetis.a ]
then
echo "${txtgrn}+++ Metis${txtrst}"
cd $ACCESS || exit
cd TPL/metis || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf metis-5.1.0
rm -f metis-5.1.0.tar.gz
wget --no-check-certificate https://github.com/scivision/METIS/archive/v5.1.0.1.tar.gz
tar zxvf v5.1.0.1.tar.gz
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd METIS-5.1.0.1 || exit
sed 's/TYPEWIDTH 32/TYPEWIDTH 64/' src/include/metis.h > tmp
mv tmp src/include/metis.h
INSTALL_PATH=${INSTALL_PATH} CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} bash ../runconfigure.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure Metis. exiting.${txtrst}
exit 1
fi
cd build || exit; make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build Metis. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ Metis already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL PARMETIS ===============
if [ "$PARMETIS" == "YES" ] && [ "$MPI" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libparmetis.a ]
then
echo "${txtgrn}+++ ParMETIS${txtrst}"
cd $ACCESS || exit
cd TPL/parmetis || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf parmetis
git clone https://github.com/gsjaardema/parmetis
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd parmetis || exit
INSTALL_PATH=${INSTALL_PATH} CRAY=${CRAY} MPI=${MPI} SHARED=${SHARED} DEBUG=${DEBUG} bash ../runconfigure.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure ParMETIS. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build ParMETIS. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ ParMETIS already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL MATIO ===============
if [ "$MATIO" == "YES" ]
then
# Check that aclocal, automake, autoconf exist...
check_exec aclocal
check_exec automake
check_exec autoconf
matio_version="1.5.23"
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libmatio.${LD_EXT} ]
then
echo "${txtgrn}+++ MatIO${txtrst}"
cd $ACCESS || exit
cd TPL/matio || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf matio
git clone https://github.com/tbeu/matio.git
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd matio || exit
git checkout ${matio_version}
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} NEEDS_ZLIB=${NEEDS_ZLIB} HDF5=${HDF5} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure MatIO. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build MatIO. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ MatIO already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL FMT ===============
if [ "$FMT" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/include/fmt/core.h ]
then
echo "${txtgrn}+++ FMT${txtrst}"
cd $ACCESS || exit
cd TPL/fmt || exit
fmt_version="10.0.0"
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf fmt
git clone https://github.com/fmtlib/fmt
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd fmt || exit
git checkout ${fmt_version}
rm -rf build
mkdir build
cd build || exit
cmake -DCMAKE_CXX_COMPILER:FILEPATH=${CXX} -DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PATH} -DCMAKE_INSTALL_LIBDIR:PATH=lib -DFMT_TEST:BOOL=OFF -DBUILD_SHARED_LIBS=${SHARED} ..
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure FMT. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build FMT. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ FMT already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL KOKKOS ===============
if [ "$KOKKOS" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libkokkoscore.${LD_EXT} ]
then
kokkos_version="3.6.00"
echo "${txtgrn}+++ KOKKOS${txtrst}"
cd $ACCESS || exit
cd TPL/kokkos || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf kokkos
wget --no-check-certificate https://github.com/kokkos/kokkos/archive/${kokkos_version}.tar.gz
tar -zxf ${kokkos_version}.tar.gz
rm -f ${kokkos_version}.tar.gz
ln -s kokkos-${kokkos_version} kokkos
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd kokkos-${kokkos_version} || exit
rm -rf build
mkdir build
cd build || exit
CUDA=${CUDA} SHARED=${SHARED} DEBUG=${DEBUG} MPI=${MPI} bash ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure cmake for KOKKOS. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "VERBOSE=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build KOKKOS. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ KOKKOS already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL ADIOS2 ===============
if [ "$ADIOS2" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libadios2.${LD_EXT} ]
then
echo "${txtgrn}+++ ADIOS2${txtrst}"
cd $ACCESS || exit
cd TPL/adios2 || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf ADIOS2
git clone https://github.com/ornladios/ADIOS2.git
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd ADIOS2 || exit
git checkout v2.5.0
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} MPI=${MPI} DEBUG=${DEBUG} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure cmake for ADIOS2. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "VERBOSE=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build ADIOS2. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ ADIOS2 already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL CATALYST2 ===============
if [ "$CATALYST2" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libcatalyst.${LD_EXT} ]
then
echo "${txtgrn}+++ Catalyst2${txtrst}"
cd $ACCESS || exit
cd TPL/catalyst2 || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf catalyst
git clone https://gitlab.kitware.com/paraview/catalyst.git
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd catalyst || exit
git checkout master #todo: a specific version
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} MPI=${MPI} DEBUG=${DEBUG} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure cmake for Catalyst2. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "VERBOSE=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build Catalyst2. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ Catalyst2 already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL gtest ===============
if [ "$GTEST" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libgtest.${LD_EXT} ]
then
echo "${txtgrn}+++ gtest${txtrst}"
cd $ACCESS || exit
cd TPL/gtest || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf googletest
git clone https://github.com/google/googletest.git
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd googletest || exit
git checkout release-1.11.0
rm -rf build
mkdir build
cd build || exit
CRAY=${CRAY} SHARED=${SHARED} DEBUG=${DEBUG} bash -x ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure cmake for gtest. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make "VERBOSE=${VERBOSE}" install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build gtest. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ gtest already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL PARALLEL ===============
if [ "$GNU_PARALLEL" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/bin/env_parallel ]
then
echo "${txtgrn}+++ GNU Parallel${txtrst}"
cd $ACCESS || exit
cd TPL/parallel || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf parallel-*
wget --no-check-certificate https://ftp.gnu.org/gnu/parallel/parallel-latest.tar.bz2
tar -jxf parallel-latest.tar.bz2
rm -rf parallel-latest.tar.bz2
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
cd parallel-* || exit
bash ../runconfigure.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure parallel. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build parallel. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ Parallel already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL FAODEL ===============
if [ "$FAODEL" == "YES" ]
then
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/lib/libkelpie.a ]
then
faodel_base="faodel"
echo "${txtgrn}+++ Faodel${txtrst}"
cd $ACCESS || exit
cd TPL/faodel || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf faodel*
git clone git@github.com:faodel/faodel.git
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
mkdir ${faodel_base}/build
cd ${faodel_base}/build || exit
echo "------------- ${faodel_base}"
echo "------------- $(pwd)"
MPI=${MPI} bash ../../runcmake.sh
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t configure faodel. exiting.${txtrst}
exit 1
fi
make -j${JOBS} && ${SUDO} make install
if [[ $? != 0 ]]
then
echo 1>&2 ${txtred}couldn\'t build faodel. exiting.${txtrst}
exit 1
fi
fi
else
echo "${txtylw}+++ Faodel already installed. Skipping download and installation.${txtrst}"
fi
fi
# =================== INSTALL CEREAL ===============
if [ "$FAODEL" == "YES" ]
then
# Currently, the FAODEL backend requires cereal, so if Faodel is enabled, we'll install cereal, too.
if [ "$FORCE" == "YES" ] || ! [ -e $INSTALL_PATH/include/cereal/archives/portable_binary.hpp ]
then
echo "${txtgrn}+++ Cereal${txtrst}"
cd $ACCESS || exit
CEREAL_DIR="TPL/cereal"
if [ ! -d "${CEREAL_DIR}" ]; then
mkdir ${CEREAL_DIR}
fi
cd ${CEREAL} || exit
if [ "$DOWNLOAD" == "YES" ]
then
echo "${txtgrn}+++ Downloading...${txtrst}"
rm -rf cereal*
wget --no-check-certificate https://github.com/USCiLab/cereal/archive/v1.3.0.tar.gz
tar xzf v1.3.0.tar.gz
rm -f v1.3.0.tar.gz
cp -R cereal-1.3.0/include/cereal $INSTALL_PATH/include/
fi
if [ "$BUILD" == "YES" ]
then
echo "${txtgrn}+++ Configuring, Building, and Installing...${txtrst}"
fi
else
echo "${txtylw}+++ Cereal already installed. Skipping download and installation.${txtrst}"
fi
fi
# ==================================
cd $ACCESS || exit
#ls -l include
#ls -l bin
#ls -l lib