openfoam/wmake/scripts/have_cmake
Mark Olesen 4cf44850a7 CONFIG: detect newer adios library name (fixes #1911)
ENH: provide fallback prefix for cmake detection

STYLE: simplify some shell syntax, avoid uname call in sysFunctions

STYLE: report FOAM_MPI during mpiLib builds
2020-11-09 15:43:52 +01:00

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
#------------------------------------------------------------------------------