From 80d7502f23fbe3e3d3bb400852cb8b61b7bab19c Mon Sep 17 00:00:00 2001 From: Philippe Leduc Date: Tue, 23 Jun 2026 09:59:43 +0200 Subject: [PATCH] Fix version generation when there is not git (like a tarball) --- cmake/version.cmake | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cmake/version.cmake b/cmake/version.cmake index 5459640..c4651f9 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -9,7 +9,8 @@ # (build time): re-runs git and rewrites the header. # # With no git available (source tarball / conan-from-recipe) it falls back to -# 0.0.0 and "unknown" git fields. +# 0.0.0 and "unknown" git fields, unless -D KICKMSG_VERSION_OVERRIDE=X.Y.Z is +# passed (e.g. by a package recipe that knows the release version). function(_kickmsg_compute_version src_dir) set(_describe "unknown") @@ -48,6 +49,20 @@ function(_kickmsg_compute_version src_dir) endif() endif() + # Explicit override (release tarball / packaging, where no .git exists). + if(KICKMSG_VERSION_OVERRIDE) + string(REGEX REPLACE "^v" "" _override "${KICKMSG_VERSION_OVERRIDE}") + if(_override MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+") + set(_ver "${_override}") + if(_describe STREQUAL "unknown") + set(_describe "v${_ver}") + endif() + if(_tag STREQUAL "") + set(_tag "v${_ver}") + endif() + endif() + endif() + if(_ver MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)") set(_maj "${CMAKE_MATCH_1}") set(_min "${CMAKE_MATCH_2}") @@ -98,6 +113,7 @@ add_custom_command( COMMAND ${CMAKE_COMMAND} -D KICKMSG_VERSION_SRC=${CMAKE_CURRENT_SOURCE_DIR} -D KICKMSG_VERSION_OUT=${KICKMSG_VERSION_H} + -D KICKMSG_VERSION_OVERRIDE=${KICKMSG_VERSION_OVERRIDE} -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake" DEPENDS ${_version_deps} COMMENT "Regenerating kickmsg/version.h from git"