summaryrefslogtreecommitdiff
path: root/common/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'common/cmake')
-rw-r--r--common/cmake/build-info-gen-cpp.cmake24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/cmake/build-info-gen-cpp.cmake b/common/cmake/build-info-gen-cpp.cmake
new file mode 100644
index 00000000..fbc92b52
--- /dev/null
+++ b/common/cmake/build-info-gen-cpp.cmake
@@ -0,0 +1,24 @@
+include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/build-info.cmake)
+
+set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp.in")
+set(OUTPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp")
+
+# Only write the build info if it changed
+if(EXISTS ${OUTPUT_FILE})
+ file(READ ${OUTPUT_FILE} CONTENTS)
+ string(REGEX MATCH "LLAMA_COMMIT = \"([^\"]*)\";" _ ${CONTENTS})
+ set(OLD_COMMIT ${CMAKE_MATCH_1})
+ string(REGEX MATCH "LLAMA_COMPILER = \"([^\"]*)\";" _ ${CONTENTS})
+ set(OLD_COMPILER ${CMAKE_MATCH_1})
+ string(REGEX MATCH "LLAMA_BUILD_TARGET = \"([^\"]*)\";" _ ${CONTENTS})
+ set(OLD_TARGET ${CMAKE_MATCH_1})
+ if (
+ NOT OLD_COMMIT STREQUAL BUILD_COMMIT OR
+ NOT OLD_COMPILER STREQUAL BUILD_COMPILER OR
+ NOT OLD_TARGET STREQUAL BUILD_TARGET
+ )
+ configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
+ endif()
+else()
+ configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
+endif()