summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt6
-rw-r--r--cmake/modules/AddVersionFile.cmake15
-rw-r--r--cmake/modules/GitRevParse.cmake14
-rw-r--r--cmake/modules/generate_version_file.cmake12
-rw-r--r--kurator/CMakeLists.txt2
-rw-r--r--kurator/src/version.cpp.conf2
-rw-r--r--version.txt.conf2
7 files changed, 33 insertions, 20 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fe35ab7..79eae9f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,12 +8,12 @@ find_package(EnTT 3 REQUIRED)
find_package(nlohmann_json 3 REQUIRED)
find_package(raylib 4 REQUIRED)
include(AddResources)
-include(GitRevParse)
-git_rev_parse(KURATOR_VERSION)
+include(AddVersionFile)
add_subdirectory(campaign)
add_subdirectory(contrib)
add_subdirectory(kurator)
add_subdirectory(sim)
add_subdirectory(stats)
add_subdirectory(universe)
-configure_file(version.txt.conf "${CMAKE_CURRENT_BINARY_DIR}/version.txt" @ONLY)
+add_version_file(version.txt version.txt.conf)
+add_custom_target(version ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/version.txt")
diff --git a/cmake/modules/AddVersionFile.cmake b/cmake/modules/AddVersionFile.cmake
new file mode 100644
index 0000000..1cce0b9
--- /dev/null
+++ b/cmake/modules/AddVersionFile.cmake
@@ -0,0 +1,15 @@
+set(ADD_VERSION_FILE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+
+function(add_version_file OUTPUT TEMPLATE)
+ add_custom_target(
+ ${OUTPUT}
+ BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}"
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${TEMPLATE}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ COMMAND
+ cmake
+ -DOUTPUT='${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}'
+ -DTEMPLATE='${CMAKE_CURRENT_SOURCE_DIR}/${TEMPLATE}'
+ -P "${ADD_VERSION_FILE_DIR}/generate_version_file.cmake"
+ )
+endfunction()
diff --git a/cmake/modules/GitRevParse.cmake b/cmake/modules/GitRevParse.cmake
deleted file mode 100644
index 9005d65..0000000
--- a/cmake/modules/GitRevParse.cmake
+++ /dev/null
@@ -1,14 +0,0 @@
-function(git_rev_parse VAR)
- execute_process(
- COMMAND git rev-parse --short HEAD
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- RESULT_VARIABLE PARSE_RESULT
- OUTPUT_VARIABLE PARSE_OUTPUT
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if(NOT PARSE_RESULT)
- set(${VAR} ${PARSE_OUTPUT} PARENT_SCOPE)
- else()
- set(${VAR} "Unknown" PARENT_SCOPE)
- endif()
-endfunction()
diff --git a/cmake/modules/generate_version_file.cmake b/cmake/modules/generate_version_file.cmake
new file mode 100644
index 0000000..4479855
--- /dev/null
+++ b/cmake/modules/generate_version_file.cmake
@@ -0,0 +1,12 @@
+execute_process(
+ COMMAND git rev-parse --short HEAD
+ RESULT_VARIABLE PARSE_RESULT
+ OUTPUT_VARIABLE PARSE_OUTPUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+if(NOT PARSE_RESULT)
+ set(HASH "${PARSE_OUTPUT}")
+else()
+ set(HASH "NOTFOUND")
+endif()
+configure_file("${TEMPLATE}" "${OUTPUT}" @ONLY)
diff --git a/kurator/CMakeLists.txt b/kurator/CMakeLists.txt
index 7add534..e2e4821 100644
--- a/kurator/CMakeLists.txt
+++ b/kurator/CMakeLists.txt
@@ -27,7 +27,7 @@ target_link_libraries(
PRIVATE stats
PRIVATE universe
)
-configure_file(src/version.cpp.conf "${CMAKE_CURRENT_BINARY_DIR}/version.cpp" @ONLY)
+add_version_file(version.cpp src/version.cpp.conf)
target_sources(
${PROJECT_NAME}
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/version.cpp"
diff --git a/kurator/src/version.cpp.conf b/kurator/src/version.cpp.conf
index a6d0aa0..a389f23 100644
--- a/kurator/src/version.cpp.conf
+++ b/kurator/src/version.cpp.conf
@@ -2,7 +2,7 @@ namespace kurator
{
-const char* VERSION {"@KURATOR_VERSION@"};
+const char* VERSION {"@HASH@"};
} // namespace kurator
diff --git a/version.txt.conf b/version.txt.conf
index 926d433..cc0fa45 100644
--- a/version.txt.conf
+++ b/version.txt.conf
@@ -1 +1 @@
-@KURATOR_VERSION@
+@HASH@