From d40103a86f86feef7bab7efca358c570873750dd Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 31 Jul 2018 11:25:53 +0200 Subject: [PATCH] CONFIG: extend wmake detection scripts --- etc/config.csh/FFTW | 2 +- etc/config.csh/hypre | 45 +++++++++++++ etc/config.csh/petsc | 45 +++++++++++++ etc/config.sh/hypre | 48 ++++++++++++++ etc/config.sh/petsc | 48 ++++++++++++++ wmake/scripts/have_hypre | 136 +++++++++++++++++++++++++++++++++++++++ wmake/scripts/have_petsc | 136 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 459 insertions(+), 1 deletion(-) create mode 100644 etc/config.csh/hypre create mode 100644 etc/config.csh/petsc create mode 100644 etc/config.sh/hypre create mode 100644 etc/config.sh/petsc create mode 100644 wmake/scripts/have_hypre create mode 100644 wmake/scripts/have_petsc diff --git a/etc/config.csh/FFTW b/etc/config.csh/FFTW index 2ac3bbc736..44af026ac8 100644 --- a/etc/config.csh/FFTW +++ b/etc/config.csh/FFTW @@ -11,7 +11,7 @@ # # File # etc/config.csh/FFTW -# - sourced by OpenFOAM-*/etc/bashrc +# - sourced by OpenFOAM-*/etc/cshrc # # Description # Setup for FFTW include/libraries (usually ThirdParty installation). diff --git a/etc/config.csh/hypre b/etc/config.csh/hypre new file mode 100644 index 0000000000..6efe0d499a --- /dev/null +++ b/etc/config.csh/hypre @@ -0,0 +1,45 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# File +# etc/config.csh/hypre +# [optional/experimental: not sourced by OpenFOAM-*/etc/cshrc] +# +# Description +# Setup for HYPRE include/libraries (usually ThirdParty installation). +# +# To disable its use: hypre_version=hypre-none +# For system-wide installations: hypre_version=hypre-system +# +# For central installations not located under ThirdParty: +# 1. use hypre-system +# 2. and provide full path for HYPRE_ARCH_PATH +# +# Note +# Changes made here MUST be made in the equivalent config.sh version too, +# since that is the one used in the build process. +#------------------------------------------------------------------------------ +# USER EDITABLE PART: Changes made here may be lost with the next upgrade + +set hypre_version=hypre-2.11.2 +setenv HYPRE_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$hypre_version + +# END OF (NORMAL) USER EDITABLE PART +#------------------------------------------------------------------------------ +if ($?FOAM_VERBOSE && $?prompt) then + echo "Using hypre ($hypre_version) -> $HYPRE_ARCH_PATH" +endif + +_foamAddLibAuto $HYPRE_ARCH_PATH + +unset hypre_version + +#------------------------------------------------------------------------------ diff --git a/etc/config.csh/petsc b/etc/config.csh/petsc new file mode 100644 index 0000000000..de8a26cc2a --- /dev/null +++ b/etc/config.csh/petsc @@ -0,0 +1,45 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# File +# etc/config.csh/petsc +# [optional/experimental: not sourced by OpenFOAM-*/etc/cshrc] +# +# Description +# Setup for PETSC include/libraries (usually ThirdParty installation). +# +# To disable its use: petsc_version=petsc-none +# For system-wide installations: petsc_version=petsc-system +# +# For central installations not located under ThirdParty: +# 1. use petsc-system +# 2. and provide full path for PETSC_ARCH_PATH +# +# Note +# Changes made here MUST be made in the equivalent config.sh version too, +# since that is the one used in the build process. +#------------------------------------------------------------------------------ +# USER EDITABLE PART: Changes made here may be lost with the next upgrade + +set petsc_version=petsc-3.9.3 +setenv PETSC_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$petsc_version + +# END OF (NORMAL) USER EDITABLE PART +#------------------------------------------------------------------------------ +if ($?FOAM_VERBOSE && $?prompt) then + echo "Using petsc ($petsc_version) -> $PETSC_ARCH_PATH" +endif + +_foamAddLibAuto $PETSC_ARCH_PATH + +unset petsc_version + +#------------------------------------------------------------------------------ diff --git a/etc/config.sh/hypre b/etc/config.sh/hypre new file mode 100644 index 0000000000..79fc3a316e --- /dev/null +++ b/etc/config.sh/hypre @@ -0,0 +1,48 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# File +# etc/config.sh/hypre +# [optional/experimental: not sourced by OpenFOAM-*/etc/bashrc] +# +# Description +# Setup for HYPRE include/libraries (usually ThirdParty installation). +# +# To disable its use: hypre_version=hypre-none +# For system-wide installations: hypre_version=hypre-system +# +# For central installations not located under ThirdParty: +# 1. use hypre-system +# 2. and provide full path for HYPRE_ARCH_PATH +# +#------------------------------------------------------------------------------ +# USER EDITABLE PART: Changes made here may be lost with the next upgrade + +hypre_version=hypre-2.11.2 +export HYPRE_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$hypre_version + +# END OF (NORMAL) USER EDITABLE PART +#------------------------------------------------------------------------------ +if [ "$FOAM_VERBOSE" -a "$PS1" ] +then + echo "Using hypre ($hypre_version) -> $HYPRE_ARCH_PATH" 1>&2 +fi + +if command -v _foamAddLibAuto > /dev/null 2>&1 # Normal sourcing (not makeHYPRE) +then + + _foamAddLibAuto $HYPRE_ARCH_PATH + + unset hypre_version + +fi + +#------------------------------------------------------------------------------ diff --git a/etc/config.sh/petsc b/etc/config.sh/petsc new file mode 100644 index 0000000000..25448b7977 --- /dev/null +++ b/etc/config.sh/petsc @@ -0,0 +1,48 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# File +# etc/config.sh/petsc +# [optional/experimental: not sourced by OpenFOAM-*/etc/bashrc] +# +# Description +# Setup for PETSC include/libraries (usually ThirdParty installation). +# +# To disable its use: petsc_version=petsc-none +# For system-wide installations: petsc_version=petsc-system +# +# For central installations not located under ThirdParty: +# 1. use petsc-system +# 2. and provide full path for PETSC_ARCH_PATH +# +#------------------------------------------------------------------------------ +# USER EDITABLE PART: Changes made here may be lost with the next upgrade + +petsc_version=petsc-3.9.3 +export PETSC_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/$petsc_version + +# END OF (NORMAL) USER EDITABLE PART +#------------------------------------------------------------------------------ +if [ "$FOAM_VERBOSE" -a "$PS1" ] +then + echo "Using petsc ($petsc_version) -> $PETSC_ARCH_PATH" 1>&2 +fi + +if command -v _foamAddLibAuto > /dev/null 2>&1 # Normal sourcing (not makePETSC) +then + + _foamAddLibAuto $PETSC_ARCH_PATH + + unset petsc_version + +fi + +#------------------------------------------------------------------------------ diff --git a/wmake/scripts/have_hypre b/wmake/scripts/have_hypre new file mode 100644 index 0000000000..cc23eb753a --- /dev/null +++ b/wmake/scripts/have_hypre @@ -0,0 +1,136 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# Script +# have_hypre +# +# Description +# Detection/setup of HYPRE +# +# Requires +# HYPRE_ARCH_PATH +# +# Functions provided +# have_hypre, no_hypre, echo_hypre +# +# Variables set on success +# HAVE_HYPRE +# HYPRE_ARCH_PATH +# HYPRE_INC_DIR +# HYPRE_LIB_DIR +# +#------------------------------------------------------------------------------ +. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions + +#------------------------------------------------------------------------------ + +# Reset variables +no_hypre() +{ + unset HAVE_HYPRE HYPRE_INC_DIR HYPRE_LIB_DIR + return 0 +} + + +# Reset variables +echo_hypre() +{ + echo "hypre=${HAVE_HYPRE:-false}" + echo "root=$HYPRE_ARCH_PATH" + echo "include=$HYPRE_INC_DIR" + echo "library=$HYPRE_LIB_DIR" +} + + +# On success, return 0 and export variables +# -> HAVE_HYPRE, HYPRE_INC_DIR, HYPRE_LIB_DIR +have_hypre() +{ + local header library static label settings warn + # warn="==> skip hypre" + + # Basic setup/checks + if isNone "$HYPRE_ARCH_PATH" + then + [ -n "$warn" ] && echo "$warn (not available)" + return 1 + fi + + + # Header/library names + header="HYPRE.h" + library="libHYPRE$extLibso" + + + if hasAbsdir "$HYPRE_ARCH_PATH" + then + header=$(findFirstFile $HYPRE_ARCH_PATH/include/$header) + + # FOAM_EXT_LIBBIN is allowed to be unset + library=$(findFirstFile \ + $FOAM_EXT_LIBBIN/$library \ + $HYPRE_ARCH_PATH/lib/$library \ + $HYPRE_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + elif isSystem "$HYPRE_ARCH_PATH" + then + header=$(findFirstFile /usr/local/include/$header /usr/include/$header) + + case "$header" in + /usr/local/*) + library=$(findFirstFile \ + /usr/local/lib/$library \ + /usr/local/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + ;; + + *) + library=$(findFirstFile \ + /usr/lib/$library \ + /usr/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + ;; + esac + else + unset header library + fi + + + # Header found? + [ -n "$header" ] || { + [ -n "$warn" ] && echo "$warn (no header)" + return 2 + } + + # Library found? + [ -n "$library" ] || { + [ -n "$warn" ] && echo "$warn (missing library)" + return 2 + } + + export HAVE_HYPRE=true + export HYPRE_ARCH_PATH + export HYPRE_INC_DIR="${header%/*}" # Basename + export HYPRE_LIB_DIR="${library%/*}" # Basename +} + + +# Force reset of old variables +no_hypre + +# Testing +if [ "$1" = "-test" ] +then + have_hypre + echo_hypre +fi + +#------------------------------------------------------------------------------ diff --git a/wmake/scripts/have_petsc b/wmake/scripts/have_petsc new file mode 100644 index 0000000000..c4665c7322 --- /dev/null +++ b/wmake/scripts/have_petsc @@ -0,0 +1,136 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# . +# +# Script +# have_petsc +# +# Description +# Detection/setup of PETSC +# +# Requires +# PETSC_ARCH_PATH +# +# Functions provided +# have_petsc, no_petsc, echo_petsc +# +# Variables set on success +# HAVE_PETSC +# PETSC_ARCH_PATH +# PETSC_INC_DIR +# PETSC_LIB_DIR +# +#------------------------------------------------------------------------------ +. $WM_PROJECT_DIR/wmake/scripts/sysFunctions # General system functions + +#------------------------------------------------------------------------------ + +# Reset variables +no_petsc() +{ + unset HAVE_PETSC PETSC_INC_DIR PETSC_LIB_DIR + return 0 +} + + +# Reset variables +echo_petsc() +{ + echo "petsc=${HAVE_PETSC:-false}" + echo "root=$PETSC_ARCH_PATH" + echo "include=$PETSC_INC_DIR" + echo "library=$PETSC_LIB_DIR" +} + + +# On success, return 0 and export variables +# -> HAVE_PETSC, PETSC_INC_DIR, PETSC_LIB_DIR +have_petsc() +{ + local header library static label settings warn + # warn="==> skip petsc" + + # Basic setup/checks + if isNone "$PETSC_ARCH_PATH" + then + [ -n "$warn" ] && echo "$warn (not available)" + return 1 + fi + + + # Header/library names + header="petsc.h" + library="libpetsc$extLibso" + + + if hasAbsdir "$PETSC_ARCH_PATH" + then + header=$(findFirstFile $PETSC_ARCH_PATH/include/$header) + + # FOAM_EXT_LIBBIN is allowed to be unset + library=$(findFirstFile \ + $FOAM_EXT_LIBBIN/$library \ + $PETSC_ARCH_PATH/lib/$library \ + $PETSC_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + elif isSystem "$PETSC_ARCH_PATH" + then + header=$(findFirstFile /usr/local/include/$header /usr/include/$header) + + case "$header" in + /usr/local/*) + library=$(findFirstFile \ + /usr/local/lib/$library \ + /usr/local/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + ;; + + *) + library=$(findFirstFile \ + /usr/lib/$library \ + /usr/lib$WM_COMPILER_LIB_ARCH/$library \ + ) + ;; + esac + else + unset header library + fi + + + # Header found? + [ -n "$header" ] || { + [ -n "$warn" ] && echo "$warn (no header)" + return 2 + } + + # Library found? + [ -n "$library" ] || { + [ -n "$warn" ] && echo "$warn (missing library)" + return 2 + } + + export HAVE_PETSC=true + export PETSC_ARCH_PATH + export PETSC_INC_DIR="${header%/*}" # Basename + export PETSC_LIB_DIR="${library%/*}" # Basename +} + + +# Force reset of old variables +no_petsc + +# Testing +if [ "$1" = "-test" ] +then + have_petsc + echo_petsc +fi + +#------------------------------------------------------------------------------