72 lines
2.1 KiB
CMake
72 lines
2.1 KiB
CMake
include_guard(GLOBAL)
|
|
|
|
function(cbl_detect_bash OUT_VAR)
|
|
set(__cbl_bash_exe "")
|
|
|
|
if(CMAKE_HOST_WIN32)
|
|
set(__cbl_candidates
|
|
"C:/Program Files/Git/bin/bash.exe"
|
|
"C:/Program Files/Git/usr/bin/bash.exe"
|
|
"C:/msys64/usr/bin/bash.exe"
|
|
"C:/msys64/ucrt64/bin/bash.exe"
|
|
"C:/msys64/mingw64/bin/bash.exe"
|
|
)
|
|
|
|
foreach(__cbl_candidate IN LISTS __cbl_candidates)
|
|
if(EXISTS "${__cbl_candidate}")
|
|
set(__cbl_bash_exe "${__cbl_candidate}")
|
|
break()
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
|
|
if("${__cbl_bash_exe}" STREQUAL "")
|
|
execute_process(
|
|
COMMAND bash --version
|
|
RESULT_VARIABLE __cbl_bash_result
|
|
OUTPUT_QUIET
|
|
ERROR_QUIET
|
|
TIMEOUT 5
|
|
)
|
|
if(__cbl_bash_result EQUAL 0)
|
|
set(__cbl_bash_exe "bash")
|
|
endif()
|
|
endif()
|
|
|
|
if("${__cbl_bash_exe}" STREQUAL "")
|
|
message(FATAL_ERROR "bash not found. Install Git Bash or MSYS2, or set a ctx bash executable explicitly.")
|
|
endif()
|
|
|
|
set(${OUT_VAR} "${__cbl_bash_exe}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(cbl_detect_program OUT_VAR PROGRAM_NAME)
|
|
execute_process(
|
|
COMMAND "${PROGRAM_NAME}" ${ARGN}
|
|
RESULT_VARIABLE __cbl_program_result
|
|
OUTPUT_QUIET
|
|
ERROR_QUIET
|
|
)
|
|
|
|
if(__cbl_program_result EQUAL 0)
|
|
set(${OUT_VAR} "${PROGRAM_NAME}" PARENT_SCOPE)
|
|
else()
|
|
set(${OUT_VAR} "" PARENT_SCOPE)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(cbl_detect_ninja OUT_VAR)
|
|
set(__cbl_ninja_exe "")
|
|
|
|
if(DEFINED CMAKE_MAKE_PROGRAM AND NOT "${CMAKE_MAKE_PROGRAM}" STREQUAL "")
|
|
set(__cbl_ninja_exe "${CMAKE_MAKE_PROGRAM}")
|
|
else()
|
|
cbl_detect_program(__cbl_ninja_exe "ninja" --version)
|
|
endif()
|
|
|
|
if("${__cbl_ninja_exe}" STREQUAL "")
|
|
message(FATAL_ERROR "ninja not found. This feature requires a Ninja build directory.")
|
|
endif()
|
|
|
|
set(${OUT_VAR} "${__cbl_ninja_exe}" PARENT_SCOPE)
|
|
endfunction() |