summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2019-11-28 10:53:58 +0000
committerFrediano Ziglio <fziglio@redhat.com>2019-12-06 09:42:52 +0000
commit3b5f0929c20d90a980ae7d972881da538b7550c5 (patch)
tree6a60d8e5ed0b0a1eccb18a1bfd88a8d8fb490821
parent266b67e2a71be2932c655c70ac27bbbee8175382 (diff)
build: Generate config.h from CMake
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r--CMakeLists.txt40
1 files changed, 40 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index af75a5b..295eda3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,46 @@ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.15")
endif()
project(vdagent-win)
+# configure
+file(WRITE "${CMAKE_BINARY_DIR}/config.h.in" "/* Automatic generated by CMake */\n\n")
+
+macro(config_write str)
+ file(APPEND "${CMAKE_BINARY_DIR}/config.h.in" "${str}")
+endmacro()
+
+string(TIMESTAMP BUILD_YEAR "%Y")
+config_write("#define BUILD_YEAR \"${BUILD_YEAR}\"\n")
+
+if(EXISTS "${CMAKE_SOURCE_DIR}/.tarball-version")
+ file(STRINGS "${CMAKE_SOURCE_DIR}/.tarball-version" VER)
+ list(GET VER 0 VER)
+ set(VER "v${VER}")
+else()
+ find_package(Git)
+ if(GIT_FOUND)
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} describe --abbrev=4 --match=v* HEAD
+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ OUTPUT_VARIABLE VER
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ else()
+ message(FATAL_ERROR "GIT not found")
+ endif()
+endif()
+
+if("${VER}" MATCHES "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)")
+ set(RC_PRODUCTVERSION "${CMAKE_MATCH_1}, ${CMAKE_MATCH_2}, ${CMAKE_MATCH_3}, 0")
+else()
+ message(FATAL_ERROR "wrong VERSION format ${VER}")
+endif()
+config_write("#define RC_PRODUCTVERSION ${RC_PRODUCTVERSION}\n")
+config_write("#define RC_PRODUCTVERSION_STR \"${RC_PRODUCTVERSION}\"\n")
+
+configure_file(${CMAKE_BINARY_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/config.h)
+
+
if(MSVC)
if(${CMAKE_VERSION} VERSION_LESS "3.15")
# compile MSVCRT into executable (link it statically)