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