- improve handling of changes in ParaView/VTK or cmake parameters (#1693) * adjust internals to support recording of an unlimited number of configuration parameters and use file `cmp` instead of trying to check strings ourselves. ENH: new wmake/scripts/wmake.cmake-args handler - additional handling of -prefix=... as CMAKE_INSTALL_PREFIX export. - in some contexts, can use instead of AllwmakeParseArguments
123 lines
2.7 KiB
Bash
123 lines
2.7 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | www.openfoam.com
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# Copyright (C) 2020 OpenCFD Ltd.
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
|
|
#
|
|
# Script
|
|
# have_cmake
|
|
#
|
|
# Description
|
|
# Locate CMAKE executable
|
|
#
|
|
# Files
|
|
# Uses etc/config.sh/cmake (if it exists) for the
|
|
# CMAKE_ARCH_PATH that may specify a possible cmake/bin directory.
|
|
#
|
|
# Functions provided
|
|
# have_cmake, no_cmake, echo_cmake
|
|
#
|
|
# Variables set on success
|
|
# HAVE_CMAKE
|
|
# CMAKE_EXE
|
|
#
|
|
# When properly resolved, CMAKE_EXE will be an absolute path to the
|
|
# cmake executable. On failure it will point to 'false'
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Reset variables
|
|
no_cmake()
|
|
{
|
|
unset HAVE_CMAKE CMAKE_EXE
|
|
}
|
|
|
|
|
|
# Report
|
|
echo_cmake()
|
|
{
|
|
echo cmake="${CMAKE_EXE:-false}"
|
|
echo version="$("${CMAKE_EXE:-false}" --version | sed -ne '1s/^.*version *//p')"
|
|
}
|
|
|
|
|
|
#
|
|
# Try to locate cmake according to values specified in <etc/config.sh/cmake>
|
|
# or just use what is found on the path.
|
|
#
|
|
# On success: return the resolved value as output.
|
|
# On failure: set executable as "false" and return with 1
|
|
#
|
|
have_cmake()
|
|
{
|
|
# Treat previous queries as "sticky"
|
|
if [ -n "$CMAKE_EXE" ]
|
|
then
|
|
test "$CMAKE_EXE" != "false"
|
|
return $?
|
|
fi
|
|
|
|
local config="config.sh/cmake"
|
|
unset CMAKE_ARCH_PATH
|
|
local settings candidate foundExe
|
|
|
|
if settings="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config" 2>/dev/null)"
|
|
then
|
|
. "$settings"
|
|
|
|
if [ -d "$CMAKE_ARCH_PATH" ]
|
|
then
|
|
candidate="$CMAKE_ARCH_PATH"/bin/cmake
|
|
if [ -f "$candidate" ] && [ -x "$candidate" ]
|
|
then
|
|
foundExe="$candidate"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$foundExe" ]
|
|
then
|
|
# Default: resolve from PATH
|
|
if candidate="$(command -v cmake 2>/dev/null)"
|
|
then
|
|
foundExe="$candidate"
|
|
fi
|
|
fi
|
|
|
|
if [ -n "$foundExe" ]
|
|
then
|
|
# OK
|
|
export HAVE_CMAKE=true
|
|
export CMAKE_EXE="$foundExe"
|
|
else
|
|
# Failure
|
|
export CMAKE_EXE="false" # Avoid repeated calls?
|
|
return 2
|
|
fi
|
|
}
|
|
|
|
|
|
# Reset variables
|
|
no_cmake
|
|
|
|
|
|
# Test/query
|
|
case "$1" in
|
|
-test)
|
|
have_cmake
|
|
echo_cmake
|
|
;;
|
|
-query)
|
|
## query_cmake
|
|
;;
|
|
esac
|
|
|
|
|
|
#------------------------------------------------------------------------------
|