summaryrefslogtreecommitdiffstats
path: root/cmake/ProjectVersion.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/ProjectVersion.cmake')
-rw-r--r--cmake/ProjectVersion.cmake27
1 files changed, 27 insertions, 0 deletions
diff --git a/cmake/ProjectVersion.cmake b/cmake/ProjectVersion.cmake
new file mode 100644
index 0000000..108505d
--- /dev/null
+++ b/cmake/ProjectVersion.cmake
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Copyright (C) 2020 Manuel Bentele <development@manuel-bentele.de>
+#
+
+macro(gen_project_version VERSION_INPUT_FILE VERSION_OUTPUT_FILE)
+ get_filename_component(VERSION_OUTPUT_FILENAME ${VERSION_OUTPUT_FILE} NAME)
+ # command that will trigger a rebuild of version.c every time
+ add_custom_command(OUTPUT regenerate-version-file
+ COMMAND ${CMAKE_COMMAND} -E sleep 0
+ COMMENT "Trigger generating ${VERSION_OUTPUT_FILENAME}")
+
+ # call the GenerateVersion.cmake file to generate the version.c file
+ add_custom_command(OUTPUT ${VERSION_OUTPUT_FILE}
+ COMMAND ${CMAKE_COMMAND} -D VERSION_INPUT_FILE=${VERSION_INPUT_FILE}
+ -D VERSION_OUTPUT_FILE=${VERSION_OUTPUT_FILE}
+ -P ${PROJECT_MODULES_DIR}/GenerateVersion.cmake
+ COMMENT "Generating ${VERSION_OUTPUT_FILENAME}"
+ DEPENDS regenerate-version-file)
+ add_custom_target(dnbd3-generate-version DEPENDS ${VERSION_OUTPUT_FILE})
+
+ # create target to expose project version
+ add_library(dnbd3-version INTERFACE)
+ target_include_directories(dnbd3-version INTERFACE ${PROJECT_INCLUDE_TMP_DIR})
+ add_dependencies(dnbd3-version dnbd3-generate-version)
+
+endmacro(gen_project_version VERSION_INPUT_FILE VERSION_OUTPUT_FILE)