|
|
|
@ -58,7 +58,7 @@ else()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Use cached cmkr if found
|
|
|
|
|
if(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}")
|
|
|
|
|
if(DEFINED ENV{CMKR_CACHE})
|
|
|
|
|
set(CMKR_DIRECTORY_PREFIX "$ENV{CMKR_CACHE}")
|
|
|
|
|
string(REPLACE "\\" "/" CMKR_DIRECTORY_PREFIX "${CMKR_DIRECTORY_PREFIX}")
|
|
|
|
|
if(NOT CMKR_DIRECTORY_PREFIX MATCHES "\\/$")
|
|
|
|
@ -72,10 +72,27 @@ endif()
|
|
|
|
|
set(CMKR_DIRECTORY "${CMKR_DIRECTORY_PREFIX}${CMKR_TAG}")
|
|
|
|
|
set(CMKR_CACHED_EXECUTABLE "${CMKR_DIRECTORY}/bin/${CMKR_EXECUTABLE_NAME}")
|
|
|
|
|
|
|
|
|
|
# Helper function to check if a string starts with a prefix
|
|
|
|
|
# Cannot use MATCHES, see: https://github.com/build-cpp/cmkr/issues/61
|
|
|
|
|
function(cmkr_startswith str prefix result)
|
|
|
|
|
string(LENGTH "${prefix}" prefix_length)
|
|
|
|
|
string(LENGTH "${str}" str_length)
|
|
|
|
|
if(prefix_length LESS_EQUAL str_length)
|
|
|
|
|
string(SUBSTRING "${str}" 0 ${prefix_length} str_prefix)
|
|
|
|
|
if(prefix STREQUAL str_prefix)
|
|
|
|
|
set("${result}" ON PARENT_SCOPE)
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
set("${result}" OFF PARENT_SCOPE)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
# Handle upgrading logic
|
|
|
|
|
if(CMKR_EXECUTABLE AND NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE)
|
|
|
|
|
if(CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR}/_cmkr")
|
|
|
|
|
if(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}")
|
|
|
|
|
cmkr_startswith("${CMKR_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}/_cmkr" CMKR_STARTSWITH_BUILD)
|
|
|
|
|
cmkr_startswith("${CMKR_EXECUTABLE}" "${CMKR_DIRECTORY_PREFIX}" CMKR_STARTSWITH_CACHE)
|
|
|
|
|
if(CMKR_STARTSWITH_BUILD)
|
|
|
|
|
if(DEFINED ENV{CMKR_CACHE})
|
|
|
|
|
message(AUTHOR_WARNING "[cmkr] Switching to cached cmkr: '${CMKR_CACHED_EXECUTABLE}'")
|
|
|
|
|
if(EXISTS "${CMKR_CACHED_EXECUTABLE}")
|
|
|
|
|
set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE)
|
|
|
|
@ -86,7 +103,7 @@ if(CMKR_EXECUTABLE AND NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE)
|
|
|
|
|
message(AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'")
|
|
|
|
|
unset(CMKR_EXECUTABLE CACHE)
|
|
|
|
|
endif()
|
|
|
|
|
elseif(DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE}" AND CMKR_EXECUTABLE MATCHES "^${CMKR_DIRECTORY_PREFIX}")
|
|
|
|
|
elseif(DEFINED ENV{CMKR_CACHE} AND CMKR_STARTSWITH_CACHE)
|
|
|
|
|
message(AUTHOR_WARNING "[cmkr] Upgrading cached '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'")
|
|
|
|
|
unset(CMKR_EXECUTABLE CACHE)
|
|
|
|
|
endif()
|
|
|
|
|