ENH: provide fallback prefix for cmake detection STYLE: simplify some shell syntax, avoid uname call in sysFunctions STYLE: report FOAM_MPI during mpiLib builds
133 lines
2.9 KiB
Bash
133 lines
2.9 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, search_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
|
|
no_cmake()
|
|
{
|
|
unset HAVE_CMAKE CMAKE_EXE CMAKE_ARCH_PATH
|
|
}
|
|
|
|
|
|
# Report
|
|
echo_cmake()
|
|
{
|
|
echo cmake="${CMAKE_EXE:-false}"
|
|
echo version="$("${CMAKE_EXE:-false}" --version | sed -ne '1s/^.*version *//p')"
|
|
}
|
|
|
|
|
|
# Search
|
|
# $1 : prefix (*_ARCH_PATH, system, ...)
|
|
#
|
|
# 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
|
|
search_cmake()
|
|
{
|
|
# Treat previous queries as "sticky"
|
|
if [ -n "$CMAKE_EXE" ]
|
|
then
|
|
[ "$CMAKE_EXE" != "false" ]
|
|
return $?
|
|
fi
|
|
|
|
local prefix="${1:-/usr}"
|
|
local candidate="$prefix"/bin/cmake
|
|
local foundExe
|
|
|
|
if [ -f "$candidate" ] && [ -x "$candidate" ]
|
|
then
|
|
foundExe="$candidate"
|
|
elif candidate="$(command -v cmake 2>/dev/null)"
|
|
then
|
|
# Resolved from PATH
|
|
foundExe="$candidate"
|
|
fi
|
|
# ----------------------------------
|
|
|
|
if [ -z "$foundExe" ]
|
|
then
|
|
export CMAKE_EXE="false" # Avoid repeated calls?
|
|
return 2
|
|
fi
|
|
|
|
# OK
|
|
export HAVE_CMAKE=true
|
|
export CMAKE_EXE="$foundExe"
|
|
}
|
|
|
|
|
|
# Output as per search_* function
|
|
have_cmake()
|
|
{
|
|
# Treat previous queries as "sticky"
|
|
if [ -n "$CMAKE_EXE" ]
|
|
then
|
|
[ "$CMAKE_EXE" != "false" ]
|
|
return $?
|
|
fi
|
|
|
|
local config="config.sh/cmake"
|
|
local file
|
|
unset CMAKE_ARCH_PATH
|
|
|
|
if file="$("$WM_PROJECT_DIR"/bin/foamEtcFile "$config" 2>/dev/null)"
|
|
then
|
|
. "$file"
|
|
fi
|
|
|
|
search_cmake "$CMAKE_ARCH_PATH"
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Reset
|
|
no_cmake
|
|
|
|
# Test/query
|
|
case "$1" in
|
|
-test)
|
|
have_cmake
|
|
echo_cmake
|
|
;;
|
|
-query)
|
|
## query_cmake
|
|
;;
|
|
esac
|
|
|
|
#------------------------------------------------------------------------------
|