run: |
echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
./candi.sh -j 2 --packages="once:p4est dealii"
- cd ~/deal.ii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
ubuntu20-blas:
name: ubuntu 20.04
run: |
# use our cmake version, as the runner has 3.19 installed, which is too new for deal.II
./candi.sh -j 2 --packages="once:cmake once:openblas once:p4est dealii"
- cd ~/deal.ii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
osx-minimal:
name: OSX clang
- name: setup
run: |
# force cmake version:
- pip install cmake==3.18.4
+ pip install cmake==3.20.5
echo "/Library/Frameworks/Python.framework/Versions/2.7/bin" >> $GITHUB_PATH
brew install openmpi
+ brew reinstall gcc@9
- name: info
run: |
mpicxx -v
run: |
echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
./candi.sh -j 2 --packages="dealii"
- cd ~/deal.ii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
- osx-gcc:
- name: OSX gcc
+ macos-gcc:
+ name: macos-gcc
runs-on: [macos-latest]
steps:
- uses: actions/checkout@v2
- name: setup
run: |
- # force cmake version:
- pip install cmake==3.18.4
+ # Force cmake version 3.20.5
+ pip install cmake==3.20.5
echo "/Library/Frameworks/Python.framework/Versions/2.7/bin" >> $GITHUB_PATH
+
+ # Update packages
+ brew update
+ brew upgrade
+
+ # Install openmpi
brew install openmpi
+
+ # Reinstall gcc
+ brew reinstall gcc@9
+
- name: info
run: |
- export OMPI_CXX=g++-9
- mpicxx -v
+ # Export the compilers
+ export OMPI_CXX=g++-9; export OMPI_CC=gcc-9; export OMPI_FC=gfortran-9
+
+ # Show compilers and cmake versions
+ mpicc --version
+ mpicxx --version
+ mpif90 --version
+ mpif77 --version
cmake --version
+
- name: build
run: |
- export OMPI_CXX=g++-9
- export OMPI_CC=gcc-9
- export OMPI_FC=gfortran-9
+ # Export the compilers
+ export OMPI_CXX=g++-9; export OMPI_CC=gcc-9; export OMPI_FC=gfortran-9
+
+ # Compile dealii in DEBUG mode only
echo 'DEAL_II_CONFOPTS="-D CMAKE_BUILD_TYPE=Debug"' >> candi.cfg
+
./candi.sh -j 2 --packages="once:p4est once:petsc dealii"
- cd ~/deal.ii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+ cd ~/dealii-candi/tmp/build/deal.II-* && cat detailed.log && make test
+# eclipse
+/.cproject
+/.project
+qtcreator/
+
+# visual studio code
+/.vscode
+
+# temporary and backup files
*~
-/src/
-/deal.II-toolchain-build/
-/deal.II-toolchain-unpack/
-*.DS_Store
+*#
+*.swp
+
+# MacOS self-generated files
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+===================================================================
candi (compile&install) for deal.II
- Uwe Koecher <uwe.koecher@hsu-hamburg.de>
- Bruno Turcksin <bruno.turcksin@gmail.com>
- Timo Heister <timo.heister@gmail.com>
+The most recent contributors to candi are:
+
+ Uwe Köcher <koecher@hsu-hamburg.de>
+ Timo Heister <timo.heister@gmail.com>
+ Fabian Castelli <fabian.castelli@kit.edu>
+
+
+The list of all contributors (in the order of their last commit):
+
+Uwe Köcher
+Fabian Castelli
+Timo Heister
+ohcfe
+Reza Rastak
+fvanmaele
+Wolfgang Bangerth
+Daniel Arndt
+Max Rudolph
+Curt Corum
+Lukas van de Wiel
+Rene Gassmoeller
+Bruno Turcksin
+tcclevenger
+Xiaoyu WEI
===================================================================
### Examples
-#### Install deal.II on RHEL 7, CentOS 7 or Fedora 26,27,28:
+#### Install deal.II on RHEL 7, CentOS 7 or Fedora:
```bash
module load mpi/openmpi-`uname -i`
./candi.sh
```
-#### Install deal.II on ubuntu 12.04, 14.xx, 15.xx, 16.xx, 17.xx:
+#### Install deal.II on Ubuntu (16.04), 18.04, 20.xx:
```bash
./candi.sh
```
-#### Install deal.II on macOS (10.11), 10.12, 10.13:
+#### Install deal.II on macOS (experimental):
```bash
./candi.sh
```
Since the Creators Update in fall 2017 (Windows 10 (1709)) the
Windows Subsystem for Linux (WSL) is an official part.
-For an detailed instruction how to install WSL and a recent Ubuntu distribution
-on Windows 10 you can follow the Microsoft Documentation.
+For a detailed instruction how to install WSL, the new WSL 2 and a recent
+Ubuntu distribution on Windows 10 you can follow the
+[Microsoft Documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
-Within the ubuntu terminal application clone this repository and run candi
+Within the Ubuntu terminal application, upgrade Ubuntu first, then
+clone this repository and run candi
```bash
sudo apt-get update
You can get a list of all command line options by running
```bash
./candi.sh -h
+ ./candi.sh --help
```
You can combine the command line options given below.
-#### Prefix path: ``[-p=<PATH>]``, ``[--prefix=<PATH>]``
+#### Prefix path: ``[-p <path>]``, ``[-p=<path>]``, ``[--prefix=<path>]``
```bash
- ./candi.sh --prefix=Your/Prefix/Path
+ ./candi.sh -p "/path/to/install/dir"
+ ./candi.sh -p="/path/to/install/dir"
+ ./candi.sh --prefix="/path/to/install/dir"
```
#### Multiple build processes: ``[-j<N>]``, ``[-j <N>]``, ``[--jobs=<N>]``
#### Specific platform: ``[-pf=<platform>]``, ``[--platform=<platform>]``
```bash
./candi.sh -pf=./deal.II-toolchain/platforms/...
+ ./candi.sh --platform=./deal.II-toolchain/platforms/...
```
If your platform is not detected automatically you can specify it with this
#### User interaction: ``[-y]``, ``[--yes]``, ``[--assume-yes]``
```bash
./candi.sh -y
+ ./candi.sh --yes
+ ./candi.sh --assume-yes
```
With this option you skip the user interaction. This might be useful if you
NATIVE_OPTIMIZATIONS={ON|OFF}
```
-* Enable the build of the deal.II examples and documentation
+* Enable the build of the deal.II examples
```bash
- BUILD_DOCUMENTATION={ON|OFF}
BUILD_EXAMPLES={ON|OFF}
```
#PACKAGES="${PACKAGES} once:boost"
#PACKAGES="${PACKAGES} once:numdiff"
#PACKAGES="${PACKAGES} once:openblas"
+#PACKAGES="${PACKAGES} once:scalapack"
# These packages are not dependencies but are tools used for deal.II development:
#PACKAGES="${PACKAGES} once:astyle"
#PACKAGES="${PACKAGES} once:arpack-ng"
#PACKAGES="${PACKAGES} once:assimp"
#PACKAGES="${PACKAGES} once:ginkgo"
+#PACKAGES="${PACKAGES} once:gmsh"
#PACKAGES="${PACKAGES} once:gsl"
+#PACKAGES="${PACKAGES} once:mumps"
PACKAGES="${PACKAGES} once:opencascade"
PACKAGES="${PACKAGES} once:parmetis"
#PACKAGES="${PACKAGES} once:sundials"
#########################################################################
-# Install the following deal.II version:
+# Install the following deal.II version (choose master v9.3.0 ...)
DEAL_II_VERSION=v9.3.1
#########################################################################
#TRILINOS_MAJOR_VERSION=12
#TRILINOS_MAJOR_VERSION=11
+# If enabled, Trilinos is configured with complex number support in
+# Teuchos and Tpetra. This takes a long time to compile and requires a
+# lot of RAM. It is also likely not something you will need.
+TRILINOS_WITH_COMPLEX=OFF
+
#########################################################################
# Option {ON|OFF}: Do you want to use MKL?
################################################################################
# Parse command line input parameters
-PREFIX=~/deal.ii-candi
+PREFIX=~/dealii-candi
JOBS=1
CMD_PACKAGES=""
-SKIP_READ=false
+USER_INTERACTION=ON
while [ -n "$1" ]; do
param="$1"
;;
-p=*|--prefix=*)
PREFIX="${param#*=}"
- # replace '~' by $HOME
- PREFIX=${PREFIX/#~\//$HOME\/}
;;
#####################################
#####################################
# Assume yes to prompts
-y|--yes|--assume-yes)
- SKIP_READ=true
+ USER_INTERACTION=OFF
;;
*)
- echo "invalid command line option. See -h for more information."
+ echo "invalid command line option <$param>. See -h for more information."
exit 1
esac
shift
done
-# replace '~' by $HOME:
+# Check the input argument of the install path and (if used) replace the tilde
+# character '~' by the users home directory ${HOME}. Afterwards clear the
+# PREFIX input variable.
PREFIX_PATH=${PREFIX/#~\//$HOME\/}
+unset PREFIX
RE='^[0-9]+$'
if [[ ! "${JOBS}" =~ ${RE} || ${JOBS}<1 ]] ; then
}
cls() {
- if [ ${SKIP_READ} = false ]; then
+ if [ ${USER_INTERACTION} = ON ]; then
# clear screen
COL=$1; shift
echo -e "${COL}$@\033c"
echo cygwin
elif [ -x /usr/bin/sw_vers ]; then
- local MACOSVER=$(sw_vers -productVersion)
- case ${MACOSVER} in
- 10.11*) echo elcapitan;;
- 10.12*) echo sierra;;
- 10.13*) echo highsierra;;
- 10.14*) echo mojave;;
- 10.15*) echo catalina;;
- esac
-
- elif [ ! -z "$CRAYOS_VERSION" ]; then
+ local MACOS_PRODUCT_NAME=$(sw_vers -productName)
+ local MACOS_VERSION=$(sw_vers -productVersion)
+
+ if [ "${MACOS_PRODUCT_NAME}" == "macOS" ]; then
+ echo macos
+
+ else
+ case ${MACOS_VERSION} in
+ 10.11*) echo macos_elcapitan;;
+ 10.12*) echo macos_sierra;;
+ 10.13*) echo macos_highsierra;;
+ 10.14*) echo macos_mojave;;
+ 10.15*) echo macos_catalina;;
+ 11.4*) echo macos_bigsur;;
+ 11.5*) echo macos_bigsur;;
+ esac
+ fi
+
+ elif [ ! -z "${CRAYOS_VERSION}" ]; then
echo cray
elif [ -f /etc/os-release ]; then
local OS_ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
- local OS_VERSIONID=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
- local OS_MAJOR_VER=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"' | grep -oE '[0-9]+' | head -n 1)
+ local OS_VERSION_ID=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"')
+ local OS_MAJOR_VERSION=$(grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"' | grep -oE '[0-9]+' | head -n 1)
local OS_NAME=$(grep -oP '(?<=^NAME=).+' /etc/os-release | tr -d '"')
local OS_PRETTY_NAME=$(grep -oP '(?<=^PRETTY_NAME=).+' /etc/os-release | tr -d '"')
- if [ "$OS_ID" == "fedora" ]; then
- echo fedora${OS_VERSIONID}
+ if [ "${OS_ID}" == "fedora" ]; then
+ echo fedora
- elif [ "$OS_ID" == "centos" ]; then
- echo centos${OS_VERSIONID}
+ elif [ "${OS_ID}" == "centos" ]; then
+ echo centos${OS_VERSION_ID}
- elif [ "$OS_ID" == "rhel" ]; then
- echo rhel${OS_MAJOR_VER}
+ elif [ "${OS_ID}" == "rhel" ]; then
+ echo rhel${OS_MAJOR_VERSION}
elif [ "$OS_ID" == "debian" ]; then
- echo debian${OS_MAJOR_VER}
+ echo debian
elif [ "$OS_ID" == "ubuntu" ]; then
- echo ubuntu${OS_MAJOR_VER}
+ echo ubuntu
- elif [ "$OS_ID" == "opensuse" ]; then
- if [ "${OS_NAME}" == "openSUSE Leap" ]; then
- echo opensuse15
- fi
+ elif [ "${OS_NAME}" == "openSUSE Leap" ]; then
+ echo opensuse15
elif [ "${PRETTY_NAME}" == "Arch Linux" ]; then
echo arch
exit 1
fi
-# Source default PACKAGES variables, if none were given so far
-if [ -z "${PACKAGES}" ]; then
- DEFAULT_PACKAGES=${PROJECT}/packages/default.packages
- if [ -e ${DEFAULT_PACKAGES} ]; then
- source ${DEFAULT_PACKAGES}
- fi
-fi
-
# Source PLATFORM variables if set up correctly
if [ -z ${PLATFORM} ]; then
cecho ${BAD} "Please contact the authors, if you have not changed candi!"
awk '/^##/ {exit} {$1=""; print}' <${PLATFORM}
echo
-# Let the user confirm now, that the PLATFORM is set up correctly
-echo "-------------------------------------------------------------------------------"
-if [ ${SKIP_READ} = false ]; then
+# If interaction is enabled, let the user confirm, that the platform is set up
+# correctly
+if [ ${USER_INTERACTION} = ON ]; then
+ echo "--------------------------------------------------------------------------------"
cecho ${GOOD} "Please make sure you've read the instructions above and your system"
cecho ${GOOD} "is ready for installing ${PROJECT}."
cecho ${BAD} "If not, please abort the installer by pressing <CTRL> + <C> !"
############################################################################
# Compiler variables check
-echo "Compiler Variables:"
-# Firstly test, if compiler variables are set,
-# and if not try to set the default mpi-compiler suite
-# finally test, if compiler variables are useful.
+# Firstly test, if compiler variables are set, and if not try to set the
+# default mpi-compiler suite finally test, if compiler variables are useful.
-echo "-------------------------------------------------------------------------------"
+echo "--------------------------------------------------------------------------------"
+cecho ${INFO} "Compiler Variables:"
+echo
# CC test
-if [ ! -n "$CC" ]; then
+if [ ! -n "${CC}" ]; then
if builtin command -v mpicc > /dev/null; then
- cecho ${WARN} "CC variable not set, but default mpicc found."
+ cecho ${WARN} "CC variable not set, but default mpicc found."
export CC=mpicc
fi
fi
-if [ -n "$CC" ]; then
- cecho ${INFO} "CC = $(which $CC)"
+if [ -n "${CC}" ]; then
+ cecho ${INFO} "CC = $(which ${CC})"
else
- cecho ${BAD} "CC variable not set. Please set it with $ export CC = <(MPI) C compiler>"
+ cecho ${BAD} "CC variable not set. Please set it with \$export CC = <(MPI) C compiler>"
fi
# CXX test
-if [ ! -n "$CXX" ]; then
+if [ ! -n "${CXX}" ]; then
if builtin command -v mpicxx > /dev/null; then
cecho ${WARN} "CXX variable not set, but default mpicxx found."
export CXX=mpicxx
fi
fi
-if [ -n "$CXX" ]; then
- cecho ${INFO} "CXX = $(which $CXX)"
+if [ -n "${CXX}" ]; then
+ cecho ${INFO} "CXX = $(which ${CXX})"
else
- cecho ${BAD} "CXX variable not set. Please set it with $ export CXX = <(MPI) C++ compiler>"
+ cecho ${BAD} "CXX variable not set. Please set it with \$export CXX = <(MPI) C++ compiler>"
fi
# FC test
-if [ ! -n "$FC" ]; then
+if [ ! -n "${FC}" ]; then
if builtin command -v mpif90 > /dev/null; then
- cecho ${WARN} "FC variable not set, but default mpif90 found."
+ cecho ${WARN} "FC variable not set, but default mpif90 found."
export FC=mpif90
fi
fi
-if [ -n "$FC" ]; then
- cecho ${INFO} "FC = $(which $FC)"
+if [ -n "${FC}" ]; then
+ cecho ${INFO} "FC = $(which ${FC})"
else
- cecho ${BAD} "FC variable not set. Please set it with $ export FC = <(MPI) Fortran 90 compiler>"
+ cecho ${BAD} "FC variable not set. Please set it with \$export FC = <(MPI) F90 compiler>"
fi
# FF test
-if [ ! -n "$FF" ]; then
+if [ ! -n "${FF}" ]; then
if builtin command -v mpif77 > /dev/null; then
- cecho ${WARN} "FF variable not set, but default mpif77 found."
+ cecho ${WARN} "FF variable not set, but default mpif77 found."
export FF=mpif77
fi
fi
-if [ -n "$FF" ]; then
- cecho ${INFO} "FF = $(which $FF)"
+if [ -n "${FF}" ]; then
+ cecho ${INFO} "FF = $(which ${FF})"
else
- cecho ${BAD} "FF variable not set. Please set it with $ export FF = <(MPI) Fortran 77 compiler>"
+ cecho ${BAD} "FF variable not set. Please set it with \$export FF = <(MPI) F77 compiler>"
fi
+
echo
# Final test for compiler variables
-if [ -z "$CC" ] || [ -z "$CXX" ] || [ -z "$FC" ] || [ -z "$FF" ]; then
+if [ -z "${CC}" ] || [ -z "${CXX}" ] || [ -z "${FC}" ] || [ -z "${FF}" ]; then
cecho ${WARN} "One or multiple compiler variables (CC,CXX,FC,FF) are not set."
- cecho ${INFO} "Please read your platform information above carefully,"
- cecho ${INFO} " how you get those compilers installed and set up!"
- cecho ${INFO} "Usually the values should be: mpicc, mpicxx, mpif90 and mpif77."
- cecho ${WARN} "It is strongly recommended to set them to guarantee the same compilers for all dependencies."
+ cecho ${INFO} "Please read your platform information above carefully, how you get those"
+ cecho ${INFO} "compilers installed and set up! Usually the values should be:"
+ cecho ${INFO} "CC=mpicc, CXX=mpicxx, FC=mpif90, FF=mpif77"
+ cecho ${WARN} "It is strongly recommended to set them to guarantee the same compilers for all"
+ cecho ${WARN} "dependencies."
echo
fi
################################################################################
-# Force the user to accept the current output
-echo "-------------------------------------------------------------------------------"
-if [ ${SKIP_READ} = false ]; then
+# If interaction is enabled, force the user to accept the current output
+if [ ${USER_INTERACTION} = ON ]; then
+ echo "--------------------------------------------------------------------------------"
cecho ${GOOD} "Once ready, hit enter to continue!"
read
fi
# find path of script:
pushd . >/dev/null
-P="${BASH_SOURCE[0]}";cd `dirname $P`;P=`pwd`;
+P="${BASH_SOURCE[0]:-${(%):-%x}}";
+P=`dirname ${P}`;
+P=`cd ${P};pwd`;
popd >/dev/null
for f in $P/*
-# use development version?
-CANDI_ADOLC_FROM_GIT=1
-
-if [ -n "$CANDI_ADOLC_FROM_GIT" ]; then
- # download git repository
- VERSION=master
- EXTRACTSTO=ADOL-C-master
-
- NAME=ADOL-C.git
- PACKING=git
- SOURCE=https://github.com/coin-or/
+################################################################################
+## ADOLC ##
+################################################################################
+
+# By default load the tarball.
+# To load the git repository define a variable CANDI_ADOLC_LOAD_TARBALL=OFF.
+if [ -z ${CANDI_ADOLC_LOAD_TARBALL} ]; then
+ CANDI_ADOLC_LOAD_TARBALL=ON
+fi
-else
+if [ ${CANDI_ADOLC_LOAD_TARBALL} = ON ]; then
# download release tarball
-
VERSION=2.7.2
+ CHECKSUM=701e0856baae91b98397960d5e0a87a549988de9d4002d0e9a56fa08f5455f6e
+ CHECKSUM="${CHECKSUM} 372c86eaa8b11f83825b2d9e0719b5ce3cb7066d"
+ CHECKSUM="${CHECKSUM} ea05bd8e0d6c92d474204876fdcad04d"
+
NAME=${VERSION}
- EXTRACTSTO=ADOL-C-releases-${VERSION}
SOURCE=https://github.com/coin-or/ADOL-C/archive/releases/
- CHECKSUM=ea05bd8e0d6c92d474204876fdcad04d
+ EXTRACTSTO=ADOL-C-releases-${VERSION}
PACKING=.tar.gz
+else
+ # download git repository
+ VERSION=master
+ NAME=ADOL-C.git
+ SOURCE=https://github.com/coin-or/
+ EXTRACTSTO=ADOL-C-master
+ PACKING=git
fi
-unset CANDI_ADOLC_FROM_GIT
-
+unset CANDI_ADOLC_LOAD_TARBALL
BUILDCHAIN=autotools
package_specific_conf () {
# Generate configuration file
CONFIG_FILE=${CONFIGURATION_PATH}/adolc-${VERSION}
- rm -f $CONFIG_FILE
+ rm -f ${CONFIG_FILE}
echo "
export ADOLC_DIR=${INSTALL_PATH}
" >> $CONFIG_FILE
+################################################################################
+## ARPACK-NG ##
+################################################################################
+
VERSION=3.8.0
NAME=arpack-ng.git
EXTRACTSTO=arpack-ng-${VERSION}
INSTALL_PATH=${INSTALL_PATH}/arpack-ng-${VERSION}
CONFOPTS="\
- -D CMAKE_INSTALL_LIBDIR=$INSTALL_PATH/lib \
- -D EXAMPLES=OFF \
- -D MPI=ON \
- -D BUILD_SHARED_LIBS=ON"
+ -D CMAKE_INSTALL_LIBDIR=${INSTALL_PATH}/lib \
+ -D EXAMPLES:BOOL=OFF \
+ -D MPI:BOOL=ON \
+ -D BUILD_SHARED_LIBS:BOOL=ON"
-package_specific_register () {
- export ARPACK_DIR=${INSTALL_PATH}
+package_specific_register() {
+ export ARPACK_DIR=${INSTALL_PATH}
}
-package_specific_conf () {
- # Generate configuration file
- CONFIG_FILE=${CONFIGURATION_PATH}/${NAME}
- rm -f $CONFIG_FILE
- echo "
+package_specific_conf() {
+ # Generate configuration file
+ CONFIG_FILE=${CONFIGURATION_PATH}/${NAME}
+ rm -f $CONFIG_FILE
+ echo "
export ARPACK_DIR=${INSTALL_PATH}
-" >> $CONFIG_FILE
+" >>$CONFIG_FILE
}
-
-MAJOR=3.16
-MINOR=3
+MAJOR=3.20
+MINOR=5
VERSION=${MAJOR}.${MINOR}
-# We try to determine if we have a linux platform to use tarball install
-# instead of configure/make due to possible missing autotools on some
-# HPC clusters. We need to do this, because tarball install on MacOS or
-# other platforms is not maintainable by the candi authors.
+if [ -z ${CANDI_CMAKE_LOAD_TARBALL} ]; then
+ CANDI_CMAKE_LOAD_TARBALL=ON
+fi
if [ -z "${PLATFORM_OSTYPE}" ]; then
cecho ${WARN} "WARNING: could not determine your Operating System Type (assuming linux)"
PLATFORM_OSTYPE=linux
fi
-if [ ${PLATFORM_OSTYPE} == "linux" ]; then
+if [ ${CANDI_CMAKE_LOAD_TARBALL} = ON ] && [ ${PLATFORM_OSTYPE} == "linux" ]; then
# tarball install
- NAME=cmake-${VERSION}-Linux-x86_64
+ NAME=cmake-${VERSION}-linux-x86_64
PACKING=.tar.gz
- # CHECKSUM=55e30dd01698e9409b576008fd22394c # 3.11.2
- CHECKSUM=8f3dd8952ae9d532ae340c7d0f4cd1d7 # 3.16.3
+ CHECKSUM=3adc4d6ab87b8d3b46fb5fe98612dd84 # 3.20.5 tarball linux
BUILDCHAIN=ignore
else
# configure/make/install
NAME=cmake-${VERSION}
PACKING=.tar.gz
- # CHECKSUM=d2d554c05fc07cfae7846d2aa205f12a # 3.11.2
- CHECKSUM=9e6fa59704d3a52812e279996b5b01c7 # 3.16.3
+ CHECKSUM=137311bbe83d9a32469f99ac2792a2bc # 3.20.5 src
if builtin command -v cmake > /dev/null; then
# configure/make with cmake (older or newer version already installed)
fi
fi
+unset CANDI_CMAKE_LOAD_TARBALL
+
SOURCE=https://cmake.org/files/v${MAJOR}/
INSTALL_PATH=${INSTALL_PATH}/${NAME}
cecho ${WARN} "deal.II: forcing package skip for: ${PACKAGES_OFF}"
cecho ${INFO} "This is coming from your personal DEAL_II_CONFOPTS settings!"
echo
- cecho ${GOOD} "Please confirm this behaviour by pressing enter..."
- read
+
+ if [ ${USER_INTERACTION} = ON ]; then
+ cecho ${GOOD} "Please confirm this behaviour by pressing enter..."
+ read
+ fi
fi
# Check if we hit cmake-3.10+ and deal.II v8.5.1 configure error (MPI / FindMPI)
################################################################################
# Add additional packages, if present
-# arpack
+########################################
+# ARPACK
+if [[ ${PACKAGES_OFF} =~ 'arpack-ng' ]]; then
+ if [ ! -z "${ARPACK_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset ARPACK_DIR due to forced DEAL_II_WITH_ARPACK:BOOL=OFF option"
+ unset ARPACK_DIR
+ fi
+fi
+
if [ ! -z "${ARPACK_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with ARPACK"
# We use a recent enough version of arpack, so PARPACK can be enabled
# even though it is disabled by default, see
# https://github.com/dealii/dealii/blob/master/cmake/modules/FindARPACK.cmake
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_ARPACK:BOOL=ON \
- -D DEAL_II_ARPACK_WITH_PARPACK=ON \
- -D ARPACK_DIR=${ARPACK_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_ARPACK:BOOL=ON \
+ -D DEAL_II_ARPACK_WITH_PARPACK:BOOL=ON \
+ -D ARPACK_DIR=${ARPACK_DIR}"
fi
# metis
-D MUMPS_DIR=${MUMPS_DIR}"
fi
-# p4est
+########################################
+# P4EST
if [[ ${PACKAGES_OFF} =~ 'p4est' ]]; then
- # Disable p4est for deal.II, if a special DEAL_II_CONFOPTS together with
- # the dealii-prepare loop forces p4est to be off
if [ ! -z "${P4EST_DIR}" ]; then
cecho ${INFO} "deal.II: unset P4EST_DIR due to forced DEAL_II_WITH_P4EST:BOOL=OFF option"
unset P4EST_DIR
if [ ! -z "${P4EST_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with P4EST"
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_P4EST:BOOL=ON \
- -D P4EST_DIR=${P4EST_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_P4EST:BOOL=ON \
+ -D P4EST_DIR=${P4EST_DIR}"
fi
# hdf5
-D SLEPC_DIR=${SLEPC_DIR}"
fi
-# opencascade
+########################################
+# OPENCASCADE
if [[ ${PACKAGES_OFF} =~ 'opencascade' ]]; then
- # Disable OPENCASCADE for deal.II, if a special DEAL_II_CONFOPTS together with
- # the dealii-prepare loop forces opencascade to be off
if [ ! -z "${OPENCASCADE_DIR}" ]; then
cecho ${INFO} "deal.II: unset OPENCASCADE_DIR due to forced DEAL_II_WITH_OPENCASCADE:BOOL=OFF option"
unset OPENCASCADE_DIR
if [ ! -z "${OPENCASCADE_DIR}" ]; then
cecho ${INFO} "deal.II: configuration with OPENCASCADE"
- CONFOPTS="\
- ${CONFOPTS} \
- -D DEAL_II_WITH_OPENCASCADE:BOOL=ON"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_OPENCASCADE:BOOL=ON \
+ -D OPENCASCADE_DIR=${OPENCASCADE_DIR}"
fi
########################################
-D DEAL_II_WITH_SYMENGINE:BOOL=ON"
fi
-################################################################################
+########################################
+# GINKGO
+if [[ ${PACKAGES_OFF} =~ 'ginkgo' ]]; then
+ if [ ! -z "${GINKGO_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset GINKGO_DIR due to forced DEAL_II_WITH_GINKGO:BOOL=OFF option"
+ unset GINKGO_DIR
+ fi
+fi
+if [ ! -z "${GINKGO_DIR}" ]; then
+ cecho ${INFO} "deal.II: configuration with GINKGO"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_GINKGO:BOOL=ON \
+ -D GINKGO_DIR=${GINKGO_DIR}"
+fi
+
+########################################
+# SYMENGINE
+if [[ ${PACKAGES_OFF} =~ 'symengine' ]]; then
+ if [ ! -z "${SYMENGINE_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset SYMENGINE_DIR due to forced DEAL_II_WITH_SYMENGINE:BOOL=OFF option"
+ unset SYMENGINE_DIR
+ fi
+fi
+
+if [ ! -z "${SYMENGINE_DIR}" ]; then
+ cecho ${INFO} "deal.II: configuration with SYMENGINE"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_SYMENGINE:BOOL=ON \
+ -D SYMENGINE_DIR=${SYMENGINE_DIR}"
+fi
+
+########################################
+# GMSH
+if [[ ${PACKAGES_OFF} =~ 'gmsh' ]]; then
+ if [ ! -z "${GMSH_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset GMSH_DIR due to forced DEAL_II_WITH_GMSH:BOOL=OFF option"
+ unset GMSH_DIR
+ fi
+fi
+
+if [ ! -z "${GMSH_DIR}" ]; then
+ cecho ${INFO} "deal.II: configuration with GMSH"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_GMSH:BOOL=ON \
+ -D GMSH_DIR=${GMSH_DIR}"
+fi
+
+########################################
+# ADOLC
+if [[ ${PACKAGES_OFF} =~ 'adolc' ]]; then
+ if [ ! -z "${ADOLC_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset ADOLC_DIR due to forced DEAL_II_WITH_ADOLC:BOOL=OFF option"
+ unset ADOLC_DIR
+ fi
+fi
+
+if [ ! -z "${ADOLC_DIR}" ]; then
+ cecho ${INFO} "deal.II: configuration with ADOLC"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_ADOLC:BOOL=ON \
+ -D ADOLC_DIR=${ADOLC_DIR}"
+fi
+
+########################################
+# SUNDIALS
+if [[ ${PACKAGES_OFF} =~ 'sundials' ]]; then
+ if [ ! -z "${SUNDIALS_DIR}" ]; then
+ cecho ${INFO} "deal.II: unset SUNDIALS_DIR due to forced DEAL_II_WITH_SUNDIALS:BOOL=OFF option"
+ unset SUNDIALS_DIR
+ fi
+fi
+
+if [ ! -z "${SUNDIALS_DIR}" ]; then
+ cecho ${INFO} "deal.II: configuration with SUNDIALS"
+ CONFOPTS="${CONFOPTS} \
+ -D DEAL_II_WITH_SUNDIALS:BOOL=ON \
+ -D SUNDIALS_DIR=${SUNDIALS_DIR}"
+fi
+
+################################################################################
package_specific_install() {
if [ ${RUN_DEAL_II_TESTS} = ON ]; then
make test 2>&1 | tee candi_test.log
fi
}
-
-
package_specific_conf() {
############################################################################
# Generate modulefile
+++ /dev/null
-PACKAGES=(
-load:dealii-prepare
-once:opencascade
-once:parmetis
-once:superlu_dist
-once:hdf5
-once:p4est
-once:trilinos
-once:petsc
-once:slepc
-dealii
-)
-# see http://gmsh.info/src/
-VERSION=3.0.6
-CHECKSUM=78bbfdd695b29cfef18a99f93226afc5
+################################################################################
+## GMSH ##
+################################################################################
-#VERSION=2.16.0
-#CHECKSUM=762c10f159dab4b042e3140b1c348427
+# By default load the tarball.
+# To load the git repository define a variable CANDI_GMSH_LOAD_TARBALL=OFF.
+if [ -z ${CANDI_GMSH_LOAD_TARBALL} ]; then
+ CANDI_GMSH_LOAD_TARBALL=ON
+fi
-NAME=gmsh-${VERSION}-source
-PACKING=.tgz
-SOURCE=http://gmsh.info/src/
-EXTRACTSTO=gmsh-${VERSION}-source
+if [ ${CANDI_GMSH_LOAD_TARBALL} = ON ]; then
+ # see http://gmsh.info/src/
+
+ # 2021/04/28
+ VERSION=4.8.4
+ CHECKSUM=760dbdc072eaa3c82d066c5ba3b06eacdd3304eb2a97373fe4ada9509f0b6ace
+ CHECKSUM="${CHECKSUM} 465d965d40049c00dab65a196115fe56e1d9d147"
+ CHECKSUM="${CHECKSUM} 1e7212dfb1319d745ffb477a7a3ff124"
+
+ # VERSION=3.0.6
+ # CHECKSUM=78bbfdd695b29cfef18a99f93226afc5
+
+ # VERSION=2.16.0
+ # CHECKSUM=762c10f159dab4b042e3140b1c348427
+
+ NAME=gmsh-${VERSION}-source
+ PACKING=.tgz
+ EXTRACTSTO=gmsh-${VERSION}-source
+ SOURCE=http://gmsh.info/src/
+else
+ VERSION=gmsh_4_8_4
+ NAME=gmsh.git
+ PACKING=git
+ EXTRACTSTO=${VERSION}
+ SOURCE=https://gitlab.onelab.info/gmsh/
+fi
+unset CANDI_GMSH_LOAD_TARBALL
BUILDCHAIN=cmake
BUILDDIR=${BUILD_PATH}/${EXTRACTSTO}
INSTALL_PATH=${INSTALL_PATH}/gmsh-${VERSION}
-# Disable slepc because gmsh is not setting the relative path for the
-# .so correctly.
-
-CONFOPTS=" -D ENABLE_MPI=OFF \
- -D CMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE \
- -D ENABLE_PETSC=OFF \
- -D ENABLE_SLEPC=OFF \
- -D CMAKE_BUILD_TYPE=Release"
+CONFOPTS="\
+ -D ENABLE_MPI:BOOL=OFF \
+ -D CMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
+ -D ENABLE_PETSC:BOOL=OFF \
+ -D CMAKE_BUILD_TYPE=Release"
-# options we might consider setting:
+# Manually-specified variables were not used by the project (v4.8.3+):
+# -D ENABLE_SLEPC:BOOL=OFF
+# Options we might consider setting:
# -D ENABLE_METIS=OFF
# -D ENABLE_FLTK=OFF
# -D ENABLE_OCC=OFF
# -D ENABLE_COMPRESSED_IO=O
-# the following two sadly don't install the .so correctly:
+# The following two sadly don't install the .so correctly:
# -D ENABLE_BUILD_SHARED=ON
# -D ENABLE_BUILD_DYNAMIC=ON
-
package_specific_register () {
export GMSH_DIR=${INSTALL_PATH}
export PATH=${INSTALL_PATH}/bin:$PATH
--- /dev/null
+################################################################################
+## MUMPS ##
+################################################################################
+
+VERSION=5.4.0.5
+EXTRACTSTO=mumps-${VERSION}
+
+NAME=v${VERSION}
+PACKING=.tar.gz
+
+SOURCE=https://github.com/scivision/mumps/archive/
+CHECKSUM=0cd3bd9ad9860f7c0092cd561931a36e
+
+BUILDCHAIN=cmake
+
+BUILDDIR=${BUILD_PATH}/mumps-${VERSION}
+INSTALL_PATH=${INSTALL_PATH}/mumps-${VERSION}
+
+# Set compilers & compiler options
+if [ ! -z "${CC}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_C_COMPILER=${CC}"
+fi
+
+if [ ! -z "${CXX}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_CXX_COMPILER=${CXX}"
+fi
+
+if [ ! -z "${FC}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_Fortran_COMPILER=${FC}"
+fi
+
+CONFOPTS="${CONFOPTS} \
+ -D CMAKE_C_FLAGS:STRING='-fPIC -g -O3' \
+ -D CMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON"
+
+if [ ${MKL} = ON ]; then
+ # When MKL is provided, MUMPS will search for the required packages by itself.
+ # Therefore we only need to set MKLROOT.
+ CONFOPTS="${CONFOPTS} \
+ -D MKLROOT=${MKL_DIR}"
+else
+ if [ ! -z "${BLAS_DIR}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D pc_blas_LIBRARY_DIRS=${BLAS_DIR}/lib "
+ fi
+
+ if [ ! -z "${LAPACK_DIR}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D pc_lapack_LIBRARY_DIRS=${LAPACK_DIR}/lib"
+ fi
+
+ if [ ! -z "${SCALAPACK_DIR}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D pc_scalapack_LIBRARY_DIRS=${SCALAPACK_DIR}/lib"
+ else
+ # auto build missing packages
+ CONFOPTS="${CONFOPTS} -D autobuild=true"
+ fi
+fi
+
+# Set metis directories
+if [ ! -z "${METIS_DIR}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D metis=true \
+ -D METIS_LIBRARY=${METIS_DIR}/lib/libmetis.so \
+ -D METIS_INCLUDE_DIR=${METIS_DIR}/include \
+ -D PARMETIS_LIBRARY=${PARMETIS_DIR}/lib/libparmetis.so "
+fi
+
+
+package_specific_register () {
+ export MUMPS_DIR=${INSTALL_PATH}
+}
+
+package_specific_conf () {
+ # Generate configuration file
+ CONFIG_FILE=${CONFIGURATION_PATH}/${EXTRACTSTO}
+ rm -f $CONFIG_FILE
+ echo "
+export MUMPS_DIR=${INSTALL_PATH}
+" >> $CONFIG_FILE
+}
-# NOTE: uncomment the following line to use the git repository
-# and not a release tarball:
-#CANDI_OPENCASCADE_FROM_GIT=1
+################################################################################
+## OPENCASCADE ##
+################################################################################
-if [ -n "$CANDI_OPENCASCADE_FROM_GIT" ]; then
+# By default load the tarball.
+# To load the git repository define a variable CANDI_OPENCASCADE_LOAD_TARBALL=OFF.
+if [ -z ${CANDI_OPENCASCADE_LOAD_TARBALL} ]; then
+ CANDI_OPENCASCADE_LOAD_TARBALL=ON
+fi
+
+if [ ${CANDI_OPENCASCADE_LOAD_TARBALL} = ON ]; then
+ # download release tarball
+ VERSION=0.18.3
+ CHECKSUM=c553d6a7bf52f790abc3b6bb7a1e91a65947e92a426bb1a88a11960c31f0966c
+ CHECKSUM="${CHECKSUM} 452c8e26a469e8b0ba6cdd800848a0b406648b1b"
+ CHECKSUM="${CHECKSUM} 1686393c8493bbbb2f3f242330b33cba"
+
+ # VERSION=0.18.2
+ # CHECKSUM=6dfd68e459e2c62387579888a867281f
+
+ # VERSION=0.18.1
+ # CHECKSUM=2a7597f4243ee1f03245aeeb02d00956
+
+ # VERSION=0.17
+ # CHECKSUM=f1a89395c4b0d199bea3db62b85f818d
+
+ NAME=OCE-${VERSION}
+ SOURCE=https://github.com/tpaviot/oce/archive/
+ EXTRACTSTO=oce-OCE-${VERSION}
+ PACKING=.tar.gz
+else
# download git repository (huge download)
- # if possible, try to download a release tarball (see below)
-
+
# checkout specific release version
- # VERSION=OCE-0.18.2
- # checkout current development version (master)
VERSION=master
-
- if [ "${VERSION}" = "master" ]; then
- EXTRACTSTO=OCE-master
- fi
-
+ #VERSION=OCE-0.18.3
+ #VERSION=OCE-0.18.2
+
# set up git repository
NAME=oce.git
PACKING=git
+ EXTRACTSTO=OCE-${VERSION}
SOURCE=https://github.com/tpaviot/
-
-else
- # download release tarball
-
- #VERSION=0.17
- #CHECKSUM=f1a89395c4b0d199bea3db62b85f818d
- #VERSION=0.18.1
- #CHECKSUM=2a7597f4243ee1f03245aeeb02d00956
- VERSION=0.18.2
- CHECKSUM=6dfd68e459e2c62387579888a867281f
-
- NAME=OCE-${VERSION}
- PACKING=.tar.gz
- SOURCE=https://github.com/tpaviot/oce/archive/
- EXTRACTSTO=oce-OCE-${VERSION}
fi
-unset CANDI_OPENCASCADE_FROM_GIT
+unset CANDI_OPENCASCADE_LOAD_TARBALL
BUILDCHAIN=cmake
BUILDDIR=${BUILD_PATH}/${EXTRACTSTO}
INSTALL_PATH=${INSTALL_PATH}/${EXTRACTSTO}
-CONFOPTS="-D OCE_INSTALL_PREFIX=${INSTALL_PATH} \
- -D OCE_VISUALISATION=OFF \
- -D OCE_DISABLE_TKSERVICE_FONT=ON \
- -D OCE_DATAEXCHANGE=ON \
- -D OCE_OCAF=OFF \
- -D OCE_DISABLE_X11=ON \
-"
+CONFOPTS="\
+ -D OCE_INSTALL_PREFIX=${INSTALL_PATH} \
+ -D OCE_VISUALISATION:BOOL=OFF \
+ -D OCE_DISABLE_TKSERVICE_FONT:BOOL=ON \
+ -D OCE_DATAEXCHANGE:BOOL=ON \
+ -D OCE_OCAF:BOOL=OFF \
+ -D OCE_DISABLE_X11:BOOL=ON"
package_specific_patch () {
cd ${UNPACK_PATH}/${EXTRACTSTO}
+################################################################################
+## P4EST ##
+################################################################################
+
#VERSION=1.1;CHECKSUM=37ba7f4410958cfb38a2140339dbf64f
#VERSION=2.0;CHECKSUM=1b7440a78a28ebf713361acfea70ee78
CHECKSUM="${CHECKSUM} 28cbaf51a335c8cc8e78bb38bbb99251ba7ebf80"
CHECKSUM="${CHECKSUM} 6943949a6678589ebf1686ee7bad7ea1"
-NAME=p4est-$VERSION
+NAME=p4est-${VERSION}
+PACKING=.tar.gz
EXTRACTSTO=p4est-${VERSION}
SOURCE=https://p4est.github.io/release/
-PACKING=.tar.gz
+
BUILDCHAIN=custom
INSTALL_PATH=${INSTALL_PATH}/${NAME}
-package_specific_setup () {
- function bdie () {
+package_specific_setup() {
+ function bdie() {
echo "Error: $@"
exit 1
}
if [ -z "${ZLIB_INCLUDE}" ]; then
ZLIB_INCLUDE=${ZLIB_DIR}/include
fi
- CFLAGS="$CFLAGS -I${ZLIB_INCLUDE}"
+ CFLAGS="${CFLAGS} -I${ZLIB_INCLUDE}"
fi
- if test -z "$CFLAGS" -a -z "$P4EST_CFLAGS_FAST" ; then
+ if test -z "${CFLAGS}" -a -z "${P4EST_CFLAGS_FAST}"; then
export CFLAGS_FAST="-O2"
else
- export CFLAGS_FAST="$CFLAGS $P4EST_CFLAGS_FAST"
+ export CFLAGS_FAST="${CFLAGS} ${P4EST_CFLAGS_FAST}"
fi
- echo "CFLAGS_FAST: $CFLAGS_FAST"
-
- if test -z "$CFLAGS" -a -z "$P4EST_CFLAGS_DEBUG" ; then
+ echo "CFLAGS_FAST: ${CFLAGS_FAST}"
+
+ if test -z "${CFLAGS}" -a -z "${P4EST_CFLAGS_DEBUG}"; then
export CFLAGS_DEBUG="-O0 -g"
else
- export CFLAGS_DEBUG="$CFLAGS $P4EST_CFLAGS_DEBUG"
+ export CFLAGS_DEBUG="${CFLAGS} ${P4EST_CFLAGS_DEBUG}"
fi
- echo "CFLAGS_DEBUG: $CFLAGS_DEBUG"
+ echo "CFLAGS_DEBUG: ${CFLAGS_DEBUG}"
- # choose names for fast and debug build directories
+ # Choose names for fast and debug build directories
BUILD_FAST="${BUILD_PATH}/${NAME}/FAST"
BUILD_DEBUG="${BUILD_PATH}/${NAME}/DEBUG"
-
- # choose names for fast and debug installation directories
+
+ # Choose names for fast and debug installation directories
INSTALL_FAST="${INSTALL_PATH}/FAST"
INSTALL_DEBUG="${INSTALL_PATH}/DEBUG"
-
+
echo
echo "This script tries configure and build the p4est library."
- echo "Build FAST: $BUILD_FAST"
- echo "Build DEBUG: $BUILD_DEBUG"
- echo "Install FAST: $INSTALL_FAST"
- echo "Install DEBUG: $INSTALL_DEBUG"
+ echo "Build FAST: ${BUILD_FAST}"
+ echo "Build DEBUG: ${BUILD_DEBUG}"
+ echo "Install FAST: ${INSTALL_FAST}"
+ echo "Install DEBUG: ${INSTALL_DEBUG}"
echo "Checking environment: CFLAGS P4EST_CFLAGS_FAST P4EST_CFLAGS_DEBUG"
-
+
test -f "${UNPACK_PATH}/${EXTRACTSTO}/src/p4est.h" || bdie "Main header file missing"
test -f "${UNPACK_PATH}/${EXTRACTSTO}/configure" || bdie "Configure script missing"
-
+
echo "See output in files .../config.output and .../make.output"
echo
-
+
# remove old versions
if test -d "${BUILD_PATH}/${NAME}"; then
rm -rf "${BUILD_PATH}/${NAME}"
quit_if_fail "p4est: rm -rf ${BUILD_PATH}/${NAME} failed"
fi
-
- echo "Build FAST version in $BUILD_FAST"
- mkdir -p "$BUILD_FAST"
- cd "$BUILD_FAST"
+
+ echo "Build FAST version in ${BUILD_FAST}"
+ mkdir -p "${BUILD_FAST}"
+ cd "${BUILD_FAST}"
"${UNPACK_PATH}/${EXTRACTSTO}/configure" --enable-mpi --enable-shared \
--disable-vtk-binary --without-blas \
- --prefix="$INSTALL_FAST" CFLAGS="$CFLAGS_FAST" \
- CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="$FF" \
- "$@" > config.output || bdie "Error in configure"
- make -C sc -j${JOBS} > make.output || bdie "Error in make sc"
- make -j${JOBS} >> make.output || bdie "Error in make p4est"
- make install >> make.output || bdie "Error in make install"
- echo "FAST version installed in $INSTALL_FAST"
-
+ --prefix="${INSTALL_FAST}" CFLAGS="${CFLAGS_FAST}" \
+ CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="${FF}" \
+ "$@" >config.output || bdie "Error in configure"
+ make -C sc -j${JOBS} >make.output || bdie "Error in make sc"
+ make -j${JOBS} >>make.output || bdie "Error in make p4est"
+ make install >>make.output || bdie "Error in make install"
+ echo "FAST version installed in ${INSTALL_FAST}"
+
echo
- echo "Build DEBUG version in $BUILD_DEBUG"
- mkdir -p "$BUILD_DEBUG"
- cd "$BUILD_DEBUG"
+ echo "Build DEBUG version in ${BUILD_DEBUG}"
+ mkdir -p "${BUILD_DEBUG}"
+ cd "${BUILD_DEBUG}"
"${UNPACK_PATH}/${EXTRACTSTO}/configure" --enable-debug --enable-mpi --enable-shared \
--disable-vtk-binary --without-blas \
- --prefix="$INSTALL_DEBUG" CFLAGS="$CFLAGS_DEBUG" \
- CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="$FF" \
- "$@" > config.output || bdie "Error in configure"
- make -C sc -j${JOBS} > make.output || bdie "Error in make sc"
- make -j${JOBS} >> make.output || bdie "Error in make p4est"
- make install >> make.output || bdie "Error in make install"
- grep -q "#define P4EST_HAVE_ZLIB" $INSTALL_DEBUG/include/p4est_config.h || bdie "Error: p4est couldn't find zlib"
- echo "DEBUG version installed in $INSTALL_DEBUG"
+ --prefix="${INSTALL_DEBUG}" CFLAGS="${CFLAGS_DEBUG}" \
+ CPPFLAGS="-DSC_LOG_PRIORITY=SC_LP_ESSENTIAL" F77="${FF}" \
+ "$@" >config.output || bdie "Error in configure"
+ make -C sc -j${JOBS} >make.output || bdie "Error in make sc"
+ make -j${JOBS} >>make.output || bdie "Error in make p4est"
+ make install >>make.output || bdie "Error in make install"
+ grep -q "#define P4EST_HAVE_ZLIB" ${INSTALL_DEBUG}/include/p4est_config.h || bdie "Error: p4est couldn't find zlib"
+ echo "DEBUG version installed in ${INSTALL_DEBUG}"
echo
-
+
cd "${BUILD_PATH}/${NAME}"
touch candi_successful_build
}
-package_specific_register () {
+package_specific_register() {
export P4EST_DIR=${INSTALL_PATH}
}
-package_specific_conf () {
+package_specific_conf() {
# Generate configuration file
CONFIG_FILE=${CONFIGURATION_PATH}/${NAME}
- rm -f $CONFIG_FILE
+ rm -f ${CONFIG_FILE}
echo "
export P4EST_DIR=${INSTALL_PATH}
-" >> $CONFIG_FILE
+" >>${CONFIG_FILE}
}
# Secondly build parmetis
cd ..
- make config prefix=${INSTALL_PATH} shared=1 cc=$CC cxx=$CXX
+ make config prefix=${INSTALL_PATH} shared=1 cc=${CC} cxx=${CXX}
quit_if_fail "parmetis make config failed"
make -j${JOBS}
CONFOPTS="${CONFOPTS} --download-${external_pkg}=1"
done
-if [ ! -z "$CC" ]; then
- CONFOPTS="${CONFOPTS} CC=$CC"
+if [ ! -z "${CC}" ]; then
+ CONFOPTS="${CONFOPTS} CC=${CC}"
fi
-if [ ! -z "$CXX" ]; then
- CONFOPTS="${CONFOPTS} CXX=$CXX"
+if [ ! -z "${CXX}" ]; then
+ CONFOPTS="${CONFOPTS} CXX=${CXX}"
fi
-if [ ! -z "$FC" ]; then
- CONFOPTS="${CONFOPTS} FC=$FC"
+if [ ! -z "${FC}" ]; then
+ CONFOPTS="${CONFOPTS} FC=${FC}"
fi
-if [ ! -z "$F77" ]; then
- CONFOPTS="${CONFOPTS} F77=$F77"
+if [ ! -z "${F77}" ]; then
+ CONFOPTS="${CONFOPTS} F77=${F77}"
fi
-if [ ! -z "$F90" ]; then
- CONFOPTS="${CONFOPTS} F90=$F90"
+if [ ! -z "${F90}" ]; then
+ CONFOPTS="${CONFOPTS} F90=${F90}"
fi
if [ ! -z "${MKL_DIR}" ]; then
${CONFOPTS} \
--with-parmetis-dir=${PARMETIS_DIR} \
--with-metis-dir=${PARMETIS_DIR}"
+fi
+
+if [ ! -z "${SCALAPACK_DIR}" ]; then
+ cecho ${INFO} "PETSc: configuration with SCALAPACK"
+ CONFOPTS="\
+ ${CONFOPTS} \
+ --with-scalapack-dir=${SCALAPACK_DIR}"
+else
+ CONFOPTS="${CONFOPTS} --download-scalapack=1"
+fi
- for external_pkg in scalapack mumps; do
- CONFOPTS="${CONFOPTS} --download-${external_pkg}=1"
- done
+if [ ! -z "${MUMPS_DIR}" ]; then
+ cecho ${INFO} "PETSc: configuration with MUMPS"
+ CONFOPTS="${CONFOPTS} \
+ --with-mumps-dir=${MUMPS_DIR}"
+else
+ CONFOPTS="${CONFOPTS} --download-mumps=1"
fi
#########################################################################
package_specific_register () {
export PETSC_DIR=${INSTALL_PATH}
- if [ ! -z "${PARMETIS_DIR}" ]; then
+ if [ ! -z "${SCALAPACK_DIR}" ]; then
export SCALAPACK_DIR=${INSTALL_PATH}
fi
}
echo "
export PETSC_DIR=${INSTALL_PATH}
" >> $CONFIG_FILE
- if [ ! -z "${PARMETIS_DIR}" ]; then
+ if [ ! -z "${SCALAPACK_DIR}" ]; then
echo "export SCALAPACK_DIR=${INSTALL_PATH}" >> $CONFIG_FILE
fi
}
--- /dev/null
+################################################################################
+## ScaLAPACK ##
+################################################################################
+
+VERSION=2.1.0
+EXTRACTSTO=scalapack-${VERSION}
+
+NAME=v${VERSION}
+PACKING=.tar.gz
+
+SOURCE=https://github.com/Reference-ScaLAPACK/scalapack/archive/
+CHECKSUM=e9ae970238030fa1e8ee022a9d3e6fbb
+
+BUILDCHAIN=cmake
+
+BUILDDIR=${BUILD_PATH}/scalapack-${VERSION}
+INSTALL_PATH=${INSTALL_PATH}/scalapack-${VERSION}
+
+
+
+# Set compilers & compiler options
+if [ ! -z "${CC}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_C_COMPILER=${CC}"
+fi
+
+if [ ! -z "${CXX}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_CXX_COMPILER=${CXX}"
+fi
+
+if [ ! -z "${FC}" ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_Fortran_COMPILER=${FC}"
+fi
+
+# Set Fortran flags
+if [ -n ${FC} ]; then
+ FORTRAN_MAJOR_VERSION=$(echo __GNUC__ | ${FC} -E -xc - | tail -n 1)
+ if [ ${FORTRAN_MAJOR_VERSION} > 9 ]; then
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_Fortran_FLAGS='-g -O3 -fallow-argument-mismatch' "
+ else
+ CONFOPTS="${CONFOPTS} \
+ -D CMAKE_Fortran_FLAGS='-g -O3' "
+ fi
+fi
+
+
+# Set C flags
+CONFOPTS="${CONFOPTS} \
+ -D CMAKE_C_FLAGS:STRING='-fPIC -g -O3 ' \
+ -D CMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON"
+
+# Set intel MKL options
+if [ "${MKL}" = "ON" ]; then
+ cecho ${INFO} "MUMPS: configuration with MKL"
+
+ CONFOPTS="\
+ ${CONFOPTS} \
+ -D MKLROOT=${MKL_DIR}"
+else
+ # Set blas and lapack directories (if MKL is not used)
+ if [ ! -z "${BLAS_DIR}" ]; then
+ cecho ${INFO} "SCALAPACK: configuration with BLAS_DIR=${BLAS_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D BLAS_LIBRARY_DIRS:STRING=${BLAS_DIR}"
+ fi
+
+ if [ ! -z "${LAPACK_DIR}" ]; then
+ cecho ${INFO} "SCALAPACK: configuration with LAPACK_DIR=${LAPACK_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D LAPACK_LIBRARY_DIRS:STRING=${LAPACK_DIR}"
+ fi
+fi
+
+# BLACS is provided by ScaLAPACK
+package_specific_register () {
+ export SCALAPACK_DIR=${INSTALL_PATH}
+ # only export the BLACS dir when MKL is not provided, so we do not override the MKL BLACS_DIR
+ if [ ${MKL} = OFF ]; then
+ export BLACS_DIR=${INSTALL_PATH}/lib
+ fi
+}
+
+package_specific_conf () {
+ # Generate configuration file
+ CONFIG_FILE=${CONFIGURATION_PATH}/${EXTRACTSTO}
+ rm -f $CONFIG_FILE
+ echo "
+export SCALAPACK_DIR=${INSTALL_PATH}
+" >> $CONFIG_FILE
+}
-VERSION=3.1.0
-NAME=sundials-${VERSION}
-EXTRACTSTO=sundials-${VERSION}
-SOURCE=https://computation.llnl.gov/projects/sundials/download/
-CHECKSUM=1a84ca41c7f71067e03d519ddbcd9dae
-PACKING=.tar.gz
+################################################################################
+## SUNDIALS ##
+################################################################################
+
+# By default load the tarball.
+# To load the git repository define a variable CANDI_SUNDIALS_LOAD_TARBALL=OFF.
+if [ -z ${CANDI_SUNDIALS_LOAD_TARBALL} ]; then
+ CANDI_SUNDIALS_LOAD_TARBALL=ON
+fi
+
+if [ ${CANDI_SUNDIALS_LOAD_TARBALL} = ON ]; then
+ # 2021/07/01
+ VERSION=5.7.0
+ CHECKSUM=48da7baa8152ddb22aed1b02d82d1dbb4fbfea22acf67634011aa0303a100a43
+ CHECKSUM="${CHECKSUM} c04ecc9102851955b62e626a43ad5f604e890ab0"
+ CHECKSUM="${CHECKSUM} 483784dab433f178e79072bbed98c38c"
+
+ # VERSION=3.1.0
+ # CHECKSUM=1a84ca41c7f71067e03d519ddbcd9dae
+
+ NAME=sundials-${VERSION}
+ PACKING=.tar.gz
+ EXTRACTSTO=sundials-${VERSION}
+ SOURCE=https://github.com/LLNL/sundials/releases/download/v${VERSION}/
+else
+
+ VERSION=v5.7.0
+ # VERSION=v3.2.1
+
+ NAME=sundials
+ PACKING=git
+ SOURCE=https://github.com/LLNL/
+ EXTRACTSTO=${NAME}-${VERSION}
+fi
+unset CANDI_SUNDIALS_LOAD_TARBALL
+
BUILDCHAIN=cmake
BUILDDIR=${BUILD_PATH}/sundials-${VERSION}
INSTALL_PATH=${INSTALL_PATH}/sundials-${VERSION}
-CONFOPTS="-D CMAKE_INSTALL_PREFIX=${INSTALL_PATH} \
- -D MPI_ENABLE=ON \
- -D BUILD_SHARED_LIBS=ON"
+# In versions prior to v5.7.0 the deprecated options MPI_ENABLE instead of the
+# new ENABLE_MPI option was used.
+CONFOPTS="\
+ -D ENABLE_MPI:BOOL=ON \
+ -D BUILD_SHARED_LIBS:BOOL=ON"
-package_specific_register () {
+package_specific_register() {
export SUNDIALS_DIR=${INSTALL_PATH}
}
-package_specific_conf () {
+package_specific_conf() {
# Generate configuration file
CONFIG_FILE=${CONFIGURATION_PATH}/${NAME}
rm -f $CONFIG_FILE
echo "
export SUNDIALS_DIR=${INSTALL_PATH}
-" >> $CONFIG_FILE
+" >>$CONFIG_FILE
}
-
CHECKSUM=0a99bbb5f6c26a9c1d7ab17ea35d4e6f
NAME=superlu_dist_${VERSION}
+PACKING=.tar.gz
EXTRACTSTO=SuperLU_DIST_${VERSION}
SOURCE=http://crd-legacy.lbl.gov/~xiaoye/SuperLU/
-PACKING=.tar.gz
BUILDCHAIN=cmake
## SYMENGINE ##
################################################################################
-# Option {ON|OFF}: Choose whether to load the tarball or the git repository.
-CANDI_SYMENGINE_LOAD_TARBALL=OFF
+# By default load the tarball.
+# To load the git repository define a variable CANDI_SYMENGINE_LOAD_TARBALL=OFF.
+if [ -z ${CANDI_SYMENGINE_LOAD_TARBALL} ]; then
+ CANDI_SYMENGINE_LOAD_TARBALL=ON
+fi
if [ ${CANDI_SYMENGINE_LOAD_TARBALL} = ON ]; then
# download release tarball
-D LAPACK_LIBRARY_DIRS:STRING=${LAPACK_DIR}"
fi
+if [ ! -z "${SCALAPACK_DIR}" ]; then
+ cecho ${INFO} "trilinos: configuration with SCALAPACK_DIR=${SCALAPACK_DIR}"
+ CONFOPTS="\
+ ${CONFOPTS} \
+ -D TPL_ENABLE_SCALAPACK:BOOL=ON \
+ -D SCALAPACK_LIBRARY_DIRS=${SCALAPACK_DIR}/lib"
+fi
+
+if [ ! -z "${MUMPS_DIR}" ]; then
+ cecho ${INFO} "trilinos: configuration with MUMPS_DIR=${MUMPS_DIR}"
+ CONFOPTS="${CONFOPTS} \
+ -D TPL_ENABLE_MUMPS=ON \
+ -D MUMPS_INCLUDE_DIRS:STRING=${MUMPS_DIR}/include \
+ -D MUMPS_LIBRARY_DIRS:STRING=${MUMPS_DIR}/lib"
+fi
+
# Set intel MKL options
-if [ "${MKL}" = "ON" ]; then
+if [ ${MKL} = ON ]; then
cecho ${INFO} "trilinos: configuration with MKL"
if [ -z "${BLAS_DIR}" ] && [ -z "${LAPACK_DIR}" ]; then
CONFOPTS="${CONFOPTS} \
-D CMAKE_CXX_FLAGS:STRING='-fPIC -g -O3' \
-D CMAKE_C_FLAGS:STRING='-fPIC -g -O3' \
- -D CMAKE_FORTRAN_FLAGS:STRING='-g -O3' \
- -D Trilinos_EXTRA_LINK_FLAGS:STRING='-lgfortran'"
+ -D CMAKE_FORTRAN_FLAGS:STRING='-g -O3'"
# Add ParMETIS, if present
if [ ! -z "${PARMETIS_DIR}" ]; then
-D Trilinos_ENABLE_Ifpack:BOOL=ON \
-D Trilinos_ENABLE_Ifpack2:BOOL=OFF \
-D Trilinos_ENABLE_Tpetra:BOOL=ON \
- -D Tpetra_INST_DOUBLE:BOOL=ON \
-D Tpetra_INST_INT_LONG:BOOL=ON \
- -D Tpetra_INST_COMPLEX_DOUBLE:BOOL=ON \
- -D Tpetra_INST_COMPLEX_FLOAT:BOOL=ON \
- -D Tpetra_INST_FLOAT:BOOL=ON \
- -D Tpetra_INST_SERIAL:BOOL=ON \
-D Trilinos_ENABLE_AztecOO:BOOL=ON \
-D Trilinos_ENABLE_Sacado:BOOL=ON \
-D Trilinos_ENABLE_Teuchos:BOOL=ON \
- -D Teuchos_ENABLE_COMPLEX:BOOL=ON \
-D Teuchos_ENABLE_FLOAT:BOOL=ON \
-D Trilinos_ENABLE_MueLu:BOOL=ON \
-D Trilinos_ENABLE_ML:BOOL=ON \
-D CMAKE_BUILD_TYPE:STRING=RELEASE \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
-D BUILD_SHARED_LIBS:BOOL=ON \
- ${CONFOPTS} \
+ ${CONFOPTS}"
+
+if [ ${TRILINOS_WITH_COMPLEX} = ON ]; then
+ CONFOPTS="\
+ -D Trilinos_ENABLE_COMPLEX_DOUBLE=ON \
+ -D Trilinos_ENABLE_COMPLEX_FLOAT=ON \
+ -D Teuchos_ENABLE_COMPLEX:BOOL=ON \
+ ${CONFOPTS}"
+fi
+
+# finally append user options:
+CONFOPTS="${CONFOPTS} \
${TRILINOS_CONFOPTS}"
package_specific_register () {
# export CXX=CC
# export FC=ftn
# export FF=ftn
-#
+#
##
PACKAGES="load:dealii-prepare once:cmake once:p4est once:trilinos once:parmetis once:petsc dealii"
-TRILINOS_CONFOPTS=" \
--D BUILD_SHARED_LIBS=ON \
--D BLAS_LIBRARY_DIRS=$CRAY_LIBSCI_PREFIX_DIR/lib \
--D BLAS_INCLUDE_DIRS=$CRAY_LIBSCI_PREFIX_DIR/include \
--D BLAS_LIBRARY_NAMES=sci_gnu \
--D LAPACK_LIBRARY_DIRS=$CRAY_LIBSCI_PREFIX_DIR/lib \
--D LAPACK_INCLUDE_DIRS=$CRAY_LIBSCI_PREFIX_DIR/include \
--D LAPACK_LIBRARY_NAMES=sci_gnu"
-
-DEAL_II_CONFOPTS=" \
--D DEAL_II_COMPILER_HAS_FUSE_LD_GOLD=OFF \
--D DEAL_II_WITH_LAPACK=OFF \
--D DEAL_II_WITH_BLAS=OFF \
--D DEAL_II_WITH_GSL=OFF \
--D DEAL_II_WITH_BZIP2=OFF \
--D DEAL_II_FORCE_BUNDLED_BOOST=ON \
--D DEAL_II_WITH_UMFPACK=OFF \
--D MPI_INCLUDE_PATH=$MPICH_DIR/include \
--D MPI_CXX_LIBRARIES=\"$MPICH_DIR/lib/libmpichcxx.so;$MPICH_DIR/lib/libmpich.so\" "
+TRILINOS_CONFOPTS="\
+ -D BUILD_SHARED_LIBS:BOOL=ON \
+ -D BLAS_LIBRARY_DIRS=${CRAY_LIBSCI_PREFIX_DIR}/lib \
+ -D BLAS_INCLUDE_DIRS=${CRAY_LIBSCI_PREFIX_DIR}/include \
+ -D BLAS_LIBRARY_NAMES=sci_gnu \
+ -D LAPACK_LIBRARY_DIRS=${CRAY_LIBSCI_PREFIX_DIR}/lib \
+ -D LAPACK_INCLUDE_DIRS=${CRAY_LIBSCI_PREFIX_DIR}/include \
+ -D LAPACK_LIBRARY_NAMES=sci_gnu"
+DEAL_II_CONFOPTS="\
+ -D DEAL_II_COMPILER_HAS_FUSE_LD_GOLD:BOOL=OFF \
+ -D DEAL_II_WITH_LAPACK:BOOL=OFF \
+ -D DEAL_II_WITH_BLAS:BOOL=OFF \
+ -D DEAL_II_WITH_GSL:BOOL=OFF \
+ -D DEAL_II_WITH_BZIP2:BOOL=OFF \
+ -D DEAL_II_FORCE_BUNDLED_BOOST:BOOL=ON \
+ -D DEAL_II_WITH_UMFPACK:BOOL=OFF \
+ -D MPI_INCLUDE_PATH=${MPICH_DIR}/include \
+ -D MPI_CXX_LIBRARIES=\"${MPICH_DIR}/lib/libmpichcxx.so;${MPICH_DIR}/lib/libmpich.so\" "
+++ /dev/null
-# Fedora 23
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
+++ /dev/null
-# ubuntu 12
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential wget automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion \
-# git libblas-dev liblapack-dev libblas3gf liblapack3gf \
-# libsuitesparse-dev libtool libboost-all-dev \
-# tcl tcl-dev splint qt4-dev-tools
-#
-# Then run candi again.
-##
-
-# The default compiler on ubuntu12 does not support Trilinos 12.
-# Anyhow, the user can decide to use Trilinos 11 or 12, if the
-# version number is not set to AUTO.
-# The last point is due to own compilers (e.g. intel) which support
-# Trilinos 12.
-if [ ${TRILINOS_MAJOR_VERSION} == "AUTO" ]; then
- TRILINOS_MAJOR_VERSION=11
-fi
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 14
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential wget automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion \
-# git libblas-dev liblapack-dev libblas3gf liblapack3gf \
-# libsuitesparse-dev libtool libboost-all-dev \
-# splint tcl tcl-dev environment-modules qt4-dev-tools
-#
-# Then run candi again.
-##
-
-# The default compiler on ubuntu14 does not support Trilinos 12
-# together with deal.II v8.3.0.
-# Note: this issue is resolved in the current development trunc
-# of deal.II (v8.4pre).
-# Anyhow, the user can decide to use Trilinos 11 or 12, if the
-# version number is not set to AUTO.
-# The last point is due to own compilers (e.g. intel) which support
-# Trilinos 12.
-if [ ${DEAL_II_VERSION} ~= "master" ] && [ ${DEAL_II_VERSION} == "v8.3.0" ] && [ ${TRILINOS_MAJOR_VERSION} == "AUTO" ]; then
- TRILINOS_MAJOR_VERSION=11
-fi
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 15
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3gf liblapack3gf splint tcl tcl-dev \
-# environment-modules libsuitesparse-dev libtool libboost-all-dev \
-# qt4-dev-tools
-#
-# Then reboot and run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 17
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential lsb-release wget \
-# automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
-# splint tcl tcl-dev environment-modules qt4-dev-tools
-#
-# Then run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
# This build script assumes that you have several packages already
# installed via pacman using the following command:
#
-# $ sudo pacman -Syu core/gcc extra/openmpi extra/cmake \
-# core/make core/awk core/which core/sed core/gcc-fortran \
-# core/grep core/file core/binutils core/diffutils extra/git \
-# extra/lapack
+# > sudo pacman -Syu core/gcc extra/openmpi extra/cmake \
+# core/make core/awk core/which core/sed core/gcc-fortran \
+# core/grep core/file core/binutils core/diffutils extra/git \
+# extra/lapack
#
##
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
# This build script assumes that you have several packages already
# installed via CentOS's yum using the following command:
#
-# sudo yum install patch svn git wget \
-# @development-tools gcc-c++ cmake \
-# centos-release-scl devtoolset-9 \
-# openmpi openmpi-devel \
-# patch \
-# libtool libtool-ltdl libtool-ltdl-devel \
-# lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel
-#
+# > sudo yum install patch svn git wget \
+# @development-tools gcc-c++ cmake \
+# centos-release-scl devtoolset-9 \
+# openmpi openmpi-devel \
+# patch \
+# libtool libtool-ltdl libtool-ltdl-devel \
+# lua lua-devel \
+# blas blas-devel lapack lapack-devel \
+# doxygen graphviz graphviz-devel qt-devel \
+# gmp-devel
+#
# Be sure to switch to the recent compilers with
-# $ scl enable devtoolset-9 bash
+#
+# > scl enable devtoolset-9 bash
+#
# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
+#
+# > module load mpi/openmpi-x86_64
+#
# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
+# > export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
# before you continue!
##
-# on centos 7 the candi installed parmetis 4.0.3 is not recognized correctly
+# on CentOS 7 the candi installed parmetis 4.0.3 is not recognized correctly
# for trilinos 12-10-1. We force to assume parmetis version 4.0.3.
TRILINOS_PARMETIS_CONFOPTS="\
${TRILINOS_PARMETIS_CONFOPTS} \
- -D HAVE_PARMETIS_VERSION_4_0_3=ON"
+ -D HAVE_PARMETIS_VERSION_4_0_3:BOOL=ON"
#
# Define the additional packages for this platform.
PACKAGES="once:cmake ${PACKAGES}"
-
-# debian 9
+# Debian
#
# This build script assumes that you have several packages already
# installed via debian's apt-get using the following commands:
# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
# libblas-dev liblapack-dev libblas3 liblapack3 splint tcl tcl-dev \
# environment-modules libsuitesparse-dev libtool libboost-all-dev \
-# qt4-dev-tools
+# qt4-dev-tools libgmp-dev
#
# Then reboot and run candi again.
##
-# on debian 9 the candi installed parmetis 4.0.3 is not recognized correctly
+# On Debian the candi installed parmetis 4.0.3 is not recognized correctly
# for trilinos 12-10-1. We force to assume parmetis version 4.0.3.
TRILINOS_PARMETIS_CONFOPTS="\
${TRILINOS_PARMETIS_CONFOPTS} \
- -D HAVE_PARMETIS_VERSION_4_0_3=ON"
+ -D HAVE_PARMETIS_VERSION_4_0_3:BOOL=ON"
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
-# Fedora 22
+# Fedora
# This build script assumes that you have several packages already
# installed via Fedora's dnf using the following command:
#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
+# > sudo dnf install \
+# @development-tools gcc-c++ cmake patch libtool lua lua-devel \
+# doxygen graphviz graphviz-devel \
+# blas blas-devel lapack lapack-devel \
+# openmpi openmpi-devel \
+# metis metis-devel
+#
# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
+#
+# > module load mpi/openmpi-x86_64
+#
# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
+# > export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
# before you continue!
##
+++ /dev/null
-# Fedora 26
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# Fedora 27
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# Fedora 28
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# Fedora 29
-
-# This build script assumes that you have several packages already
-# installed via Fedora's dnf using the following command:
-#
-# $ sudo dnf install \
-# @development-tools gcc-c++ cmake openmpi openmpi-devel splint \
-# patch libtool lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel \
-# metis metis-devel
-#
-# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
-# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
-# before you continue!
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
# linux
-#
+#
# This build script assumes that you have at least the packages:
+#
# automake, autoconf, cmake, gcc, openmpi, blas, lapack, and
# git, cmake, zlib and bzip2
+#
# installed.
-#
+#
# The packages
+#
# git, cmake, zlib and bzip2
+#
# can be installed with candi by selecting them in the candi.cfg file.
-#
+#
# Please note that this platform description is only a hint for
# dependencies and cannot ensure a successful build. Look into other
# platform descriptions for further dependencies.
-#
+#
##
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
--- /dev/null
+# macOS
+#
+# Detailed Installation Notes:
+# - Install Xcode from AppStore, open it and accept the license.
+# - Open Terminal, and install Xcode command line tools via
+# $ xcode-select --install
+# and then run
+# $ xcodebuild -license
+# and accept the license.
+#
+# - Install Homebrew in a Terminal via
+# $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+#
+# - Install the following via Homebrew
+# $ brew install cmake gcc@11 openmpi
+#
+# - Export compiler environment
+# $ export CC=mpicc; export CXX=mpicxx; export FC=mpifort; export FF=mpifort; \
+# OMPI_CC=gcc-11; export OMPI_CXX=g++-11; export OMPI_FC=gfortran-11
+#
+# Run candi again!
+#
+# If you encounter runtime problems with missing *.dylib libraries,
+# you may change the security policy for developments. To do so,
+# enable Terminal in System Preferences / Security & Privacy / Developer Tools .
+##
--- /dev/null
+# macOS Big Sur (11.4, 11.5)
+#
+# macOS support is experimental and requires:
+# - xcode with command line tools
+# - cmake, gfortran, openmpi
+#
+# Detailed Installation Notes
+# - Install Xcode from AppStore, open it and accept the license.
+# - Open Terminal, and install Xcode command line tools via
+# xcode-select --install
+#
+# and then run
+# xcodebuild -license
+#
+# and accept the license
+#
+# Install Homebrew in a Terminal via
+# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
+#
+# Install the following via Homebrew
+# brew install cmake
+# brew install gcc@11
+# brew install openmpi
+#
+# Export compiler environment
+# export OMPI_CC=gcc-11; export OMPI_CXX=g++-11
+# export OMPI_FC=gfortran-11
+# export CC=mpicc; export CXX=mpicxx; export FC=mpifort; export FF=mpifort
+#
+# Run candi again!
+#
+##
# - a recent version of xcode with command line tools
# - openmpi installed using homebrew and
# - cmake
-#
+#
# Detailed Installation Notes:
# - install Xcode from AppStore, open it and accept the license.
# - Open Terminal, and install Xcode command line tools via
# and then run
# $ xcodebuild -license
# to accept the license.
-#
+#
# Install Homebrew in a Terminal via
# $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-#
+#
# Install the following via Homebrew
# $ brew install cmake
# $ brew install openmpi
-#
+#
# (Optional) Install the following via Homebrew
# $ brew install wget
# $ brew install gnuplot
-#
+#
# $ brew install bash
# and follow the shell activation notes.
-#
+#
# $ brew install modules
# and follow the activation notes to use the modulefile configuration.
-#
+#
##
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
# - a recent version of xcode with command line tools
# - openmpi installed using homebrew and
# - cmake
-#
+#
# Detailed Installation Notes:
# - install Xcode from AppStore, open it and accept the license.
# - Open Terminal, and install Xcode command line tools via
# and then run
# $ xcodebuild -license
# to accept the license.
-#
+#
# Install Homebrew in a Terminal via
# $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-#
+#
# Install the following via Homebrew
# $ brew install cmake
# $ brew install openmpi
-#
+#
# (Optional) Install the following via Homebrew
# $ brew install wget
# $ brew install gnuplot
-#
+#
# $ brew install bash
# and follow the shell activation notes.
-#
+#
# $ brew install modules
# and follow the activation notes to use the modulefile configuration.
-#
+#
##
-
# - a recent version of xcode with command line tools
# - openmpi installed using homebrew and
# - cmake
-#
+#
# Detailed Installation Notes:
# - install Xcode from AppStore, open it and accept the license.
# - Open Terminal, and install Xcode command line tools via
# and then run
# $ xcodebuild -license
# to accept the license.
-#
+#
# Install Homebrew in a Terminal via
# $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-#
+#
# Install the following via Homebrew
# $ brew install cmake
# $ brew install openmpi --c++11 --with-mpi-thread-multiple
-#
+#
# (Optional) Install the following via Homebrew
# $ brew install wget
# $ brew install gnuplot
-#
+#
# $ brew install bash
# and follow the shell activation notes.
-#
+#
# $ brew install modules
# and follow the activation notes to use the modulefile configuration.
-#
+#
##
-
# This build script assumes that you have several packages already
# installed via RHEL's yum using the following command:
#
-# sudo yum install svn git wget \
-# @development-tools gcc-c++ cmake \
-# patch \
-# libtool libtool-ltdl libtool-ltdl-devel \
-# lua lua-devel \
-# blas blas-devel lapack lapack-devel \
-# doxygen graphviz graphviz-devel qt-devel
-#
+# > sudo yum install svn git wget \
+# @development-tools gcc-c++ cmake \
+# patch \
+# libtool libtool-ltdl libtool-ltdl-devel \
+# lua lua-devel \
+# blas blas-devel lapack lapack-devel \
+# doxygen graphviz graphviz-devel qt-devel
+#
# Please load the 'openmpi' compiler with
-# $ module load mpi/openmpi-x86_64
+#
+# > module load mpi/openmpi-x86_64
+#
# and then set the compiler enviroment variables to
-# $ export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
+# > export CC=mpicc; export CXX=mpicxx; export FC=mpif90; export FF=mpif77
+#
# before you continue!
##
-# on rhel 7 the candi installed parmetis 4.0.3 is not recognized correctly
+# On RHEL 7 the candi installed parmetis 4.0.3 is not recognized correctly
# for trilinos 12-10-1. We force to assume parmetis version 4.0.3.
TRILINOS_PARMETIS_CONFOPTS="\
${TRILINOS_PARMETIS_CONFOPTS} \
- -D HAVE_PARMETIS_VERSION_4_0_3=ON"
+ -D HAVE_PARMETIS_VERSION_4_0_3:BOOL=ON"
#
# Define the additional packages for this platform.
#PACKAGES="once:cmake ${PACKAGES}"
-
--- /dev/null
+# Ubuntu
+#
+# This build script assumes that you have several packages already
+# installed via ubuntu's apt-get using the following commands:
+#
+# sudo apt-get install lsb-release git subversion wget bc libgmp-dev \
+# build-essential autoconf automake cmake libtool gfortran python \
+# libboost-all-dev zlib1g-dev \
+# openmpi-bin openmpi-common libopenmpi-dev \
+# libblas3 libblas-dev liblapack3 liblapack-dev libsuitesparse-dev
+#
+# Then run candi again.
+#
+# If the default compiler is older than the hardware generation, a newer
+# compiler version is necessary to use native optimizations.
+# For example, to update the GNU Compiler Collection from the default v9 to
+# v10, install the new compilers
+#
+# sudo apt-get install gcc-10 g++-10 gfortran-10
+#
+# and update the symbolic links to gcc, g++ and gfortran by
+#
+# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 \
+# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 20
+#
+# update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10 \
+# update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 20
+#
+# update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-9 10 \
+# update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-10 20
+#
+# with super-user privileges and invoke an operating system update.
+##
+++ /dev/null
-# ubuntu 16 LTS
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential lsb-release wget \
-# bc python automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
-# splint tcl tcl-dev environment-modules qt4-dev-tools
-#
-# Then run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 18 LTS
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential lsb-release wget \
-# bc python automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
-# splint tcl tcl-dev environment-modules qt4-dev-tools
-#
-# Then run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 19
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential lsb-release wget \
-# bc python automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev
-#
-# Then run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-
+++ /dev/null
-# ubuntu 20.04
-#
-# This build script assumes that you have several packages already
-# installed via ubuntu's apt-get using the following commands:
-#
-# > sudo apt-get install build-essential lsb-release wget \
-# bc python automake autoconf gfortran \
-# openmpi-bin openmpi-common libopenmpi-dev cmake subversion git \
-# libblas-dev liblapack-dev libblas3 liblapack3 \
-# libsuitesparse-dev libtool libboost-all-dev zlib1g-dev \
-# libgmp-dev
-#
-# Then run candi again.
-##
-
-#
-# Define the additional packages for this platform.
-#PACKAGES="once:cmake ${PACKAGES}"
-