- since the wrapped cmake calls generally use the regular build locations, add in MPI information to properly handle changes in that as well. This makes it easier to build for multiple MPI instances.
142 lines
3.9 KiB
Bash
142 lines
3.9 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | www.openfoam.com
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# Copyright (C) 2017-2021 OpenCFD Ltd.
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
|
#
|
|
# Script
|
|
# cmakeFunctions
|
|
#
|
|
# Description
|
|
# Helper functions for CMake
|
|
#
|
|
# Environment
|
|
# Consider CMAKE_INSTALL_PREFIX as a reserved name, although it is not
|
|
# set/unset here.
|
|
#
|
|
# Files
|
|
# Uses etc/config.sh/cmake (if it exists) for the
|
|
# CMAKE_ARCH_PATH that may specify a possible cmake/bin directory.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
. ${WM_PROJECT_DIR:?}/wmake/scripts/have_cmake
|
|
. ${WM_PROJECT_DIR:?}/wmake/scripts/wmakeFunctions # Require wmake functions
|
|
|
|
# Export compiler information for cmake
|
|
export CC="$(wmake -show-c)"
|
|
export CXX="$(wmake -show-cxx)"
|
|
|
|
export CFLAGS="$(wmake -show-cflags)"
|
|
export CXXFLAGS="$(wmake -show-cxxflags)"
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
|
# Resolve the location of cmake (if needed) and call with output
|
|
# suppressed according to WM_QUIET
|
|
call_cmake()
|
|
{
|
|
if have_cmake
|
|
then
|
|
if [ -n "$WM_QUIET" ]
|
|
then
|
|
echo "cmake..."
|
|
"$CMAKE_EXE" -DCMAKE_RULE_MESSAGES=OFF $@ >/dev/null
|
|
else
|
|
echo "cmake $@"
|
|
"$CMAKE_EXE" $@
|
|
fi
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
|
|
# CMake into objectsDir with external dependency
|
|
# - use sentinel file(s) to handle paraview/vtk version changes
|
|
#
|
|
# 1 - depend
|
|
# 2 - sourceDir
|
|
# 3... optional cmake defines
|
|
#
|
|
cmakeVersioned()
|
|
{
|
|
local depend="$1"
|
|
local sourceDir="$2"
|
|
shift 2
|
|
local objectsDir sentinel
|
|
|
|
# Where generated files are stored
|
|
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
|
|
|
# Version changed
|
|
sentinel=$(sameDependency "$sourceDir" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@") || \
|
|
rm -rf "$objectsDir" 2>/dev/null
|
|
|
|
mkdir -p "$objectsDir" \
|
|
&& ( cd "$objectsDir" && call_cmake "$@" "$sourceDir" && make ) \
|
|
&& storeDependency "$sentinel" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@"
|
|
}
|
|
|
|
|
|
# CMake into objectsDir with external dependency
|
|
#
|
|
# 1 - depend
|
|
# 2 - sourceDir
|
|
# 3... optional cmake defines
|
|
#
|
|
cmakeVersionedInstall()
|
|
{
|
|
local depend="$1"
|
|
local sourceDir="$2"
|
|
shift 2
|
|
local objectsDir sentinel
|
|
|
|
# Where generated files are stored
|
|
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
|
|
|
# Version changed
|
|
sentinel=$(sameDependency "$sourceDir" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@") || \
|
|
rm -rf "$objectsDir" 2>/dev/null
|
|
|
|
mkdir -p "$objectsDir" \
|
|
&& ( cd "$objectsDir" && call_cmake "$@" "$sourceDir" && make install ) \
|
|
&& storeDependency "$sentinel" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@"
|
|
}
|
|
|
|
|
|
# wmake with tracking of external dependency as per cmakeVersioned
|
|
# - use sentinel file(s) to handle paraview/vtk version changes
|
|
#
|
|
# 1 - depend
|
|
# 2 - sourceDir
|
|
# 3... wmake arguments
|
|
#
|
|
wmakeVersioned()
|
|
{
|
|
local depend="$1"
|
|
local sourceDir="$2"
|
|
shift 2
|
|
local objectsDir sentinel
|
|
|
|
# Where generated files are stored
|
|
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
|
|
|
# Version changed
|
|
sentinel=$(sameDependency "$sourceDir" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@") || \
|
|
rm -rf "$objectsDir" 2>/dev/null
|
|
|
|
mkdir -p "$objectsDir" \
|
|
&& wmake "$@" \
|
|
&& storeDependency "$sentinel" "$depend" "MPLIB=$WM_MPLIB" "MPI=$FOAM_MPI" "$@"
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|