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