diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2019-11-28 10:53:58 +0000 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2019-12-06 09:42:52 +0000 |
commit | 3b5f0929c20d90a980ae7d972881da538b7550c5 (patch) | |
tree | 6a60d8e5ed0b0a1eccb18a1bfd88a8d8fb490821 | |
parent | 266b67e2a71be2932c655c70ac27bbbee8175382 (diff) |
build: Generate config.h from CMake
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r-- | CMakeLists.txt | 40 |
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) |