Skip to content

Commit 1f6e31e

Browse files
committed
Add optional CMKR_COMMIT_HASH for the paranoid
1 parent 4de1500 commit 1f6e31e

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

cmake/cmkr.cmake

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ include_guard()
33
# Change these defaults to point to your infrastructure if desired
44
set(CMKR_REPO "https://github.com/build-cpp/cmkr" CACHE STRING "cmkr git repository" FORCE)
55
set(CMKR_TAG "v0.2.10" CACHE STRING "cmkr git tag (this needs to be available forever)" FORCE)
6+
set(CMKR_COMMIT_HASH "" CACHE STRING "cmkr git commit hash (optional)" FORCE)
67

78
# To bootstrap/generate a cmkr project: cmake -P cmkr.cmake
89
if(CMAKE_SCRIPT_MODE_FILE)
@@ -15,7 +16,7 @@ endif()
1516
set(CMKR_EXECUTABLE "" CACHE FILEPATH "cmkr executable")
1617
set(CMKR_SKIP_GENERATION OFF CACHE BOOL "skip automatic cmkr generation")
1718
set(CMKR_BUILD_TYPE "Debug" CACHE STRING "cmkr build configuration")
18-
mark_as_advanced(CMKR_REPO CMKR_TAG CMKR_EXECUTABLE CMKR_SKIP_GENERATION CMKR_BUILD_TYPE)
19+
mark_as_advanced(CMKR_REPO CMKR_TAG CMKR_COMMIT_HASH CMKR_EXECUTABLE CMKR_SKIP_GENERATION CMKR_BUILD_TYPE)
1920

2021
# Disable cmkr if generation is disabled
2122
if(DEFINED ENV{CI} OR CMKR_SKIP_GENERATION OR CMKR_BUILD_SKIP_GENERATION)
@@ -115,6 +116,16 @@ else()
115116
${CMKR_REPO}
116117
"${CMKR_DIRECTORY}"
117118
)
119+
if(CMKR_COMMIT_HASH)
120+
execute_process(
121+
COMMAND "${GIT_EXECUTABLE}" checkout -q "${CMKR_COMMIT_HASH}"
122+
RESULT_VARIABLE CMKR_EXEC_RESULT
123+
WORKING_DIRECTORY "${CMKR_DIRECTORY}"
124+
)
125+
if(NOT CMKR_EXEC_RESULT EQUAL 0)
126+
message(FATAL_ERROR "Tag '${CMKR_TAG}' hash is not '${CMKR_COMMIT_HASH}'")
127+
endif()
128+
endif()
118129
message(STATUS "[cmkr] Building cmkr (using system compiler)...")
119130
cmkr_exec("${CMAKE_COMMAND}"
120131
--no-warn-unused-cli

0 commit comments

Comments
 (0)