@@ -53,18 +53,45 @@ else()
5353endif ()
5454
5555# Use cached cmkr if found
56- set (CMKR_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /_cmkr_${CMKR_TAG} " )
56+ if (DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE} " )
57+ set (CMKR_DIRECTORY_PREFIX "$ENV{CMKR_CACHE} " )
58+ string (REPLACE "\\ " "/" CMKR_DIRECTORY_PREFIX "${CMKR_DIRECTORY_PREFIX} " )
59+ if (NOT CMKR_DIRECTORY_PREFIX MATCHES "\\ /$" )
60+ set (CMKR_DIRECTORY_PREFIX "${CMKR_DIRECTORY_PREFIX} /" )
61+ endif ()
62+ else ()
63+ set (CMKR_DIRECTORY_PREFIX "${CMAKE_CURRENT_BINARY_DIR} /_cmkr_" )
64+ endif ()
65+ set (CMKR_DIRECTORY "${CMKR_DIRECTORY_PREFIX}${CMKR_TAG} " )
5766set (CMKR_CACHED_EXECUTABLE "${CMKR_DIRECTORY} /bin/${CMKR_EXECUTABLE_NAME} " )
5867
59- if (NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE AND CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR} /_cmkr" )
60- message (AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE} ' to '${CMKR_CACHED_EXECUTABLE} '" )
61- unset (CMKR_EXECUTABLE CACHE )
68+ # Handle upgrading logic
69+ if (CMKR_EXECUTABLE AND NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE)
70+ if (CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR} /_cmkr" )
71+ if (DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE} " )
72+ message (AUTHOR_WARNING "[cmkr] Switching to cached cmkr: '${CMKR_CACHED_EXECUTABLE} '" )
73+ if (EXISTS "${CMKR_CACHED_EXECUTABLE} " )
74+ set (CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE} " CACHE FILEPATH "Full path to cmkr executable" FORCE)
75+ else ()
76+ unset (CMKR_EXECUTABLE CACHE )
77+ endif ()
78+ else ()
79+ message (AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE} ' to '${CMKR_CACHED_EXECUTABLE} '" )
80+ unset (CMKR_EXECUTABLE CACHE )
81+ endif ()
82+ elseif (DEFINED ENV{CMKR_CACHE} AND EXISTS "$ENV{CMKR_CACHE} " AND CMKR_EXECUTABLE MATCHES "^${CMKR_DIRECTORY_PREFIX} " )
83+ message (AUTHOR_WARNING "[cmkr] Upgrading cached '${CMKR_EXECUTABLE} ' to '${CMKR_CACHED_EXECUTABLE} '" )
84+ unset (CMKR_EXECUTABLE CACHE )
85+ endif ()
6286endif ()
6387
6488if (CMKR_EXECUTABLE AND EXISTS "${CMKR_EXECUTABLE} " )
6589 message (VERBOSE "[cmkr] Found cmkr: '${CMKR_EXECUTABLE} '" )
6690elseif (CMKR_EXECUTABLE AND NOT CMKR_EXECUTABLE STREQUAL CMKR_CACHED_EXECUTABLE)
6791 message (FATAL_ERROR "[cmkr] '${CMKR_EXECUTABLE} ' not found" )
92+ elseif (NOT CMKR_EXECUTABLE AND EXISTS "${CMKR_CACHED_EXECUTABLE} " )
93+ set (CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE} " CACHE FILEPATH "Full path to cmkr executable" FORCE)
94+ message (STATUS "[cmkr] Found cached cmkr: '${CMKR_EXECUTABLE} '" )
6895else ()
6996 set (CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE} " CACHE FILEPATH "Full path to cmkr executable" FORCE)
7097 message (VERBOSE "[cmkr] Bootstrapping '${CMKR_EXECUTABLE} '" )
0 commit comments