diff --git a/cmake/modules/Versioning.cmake b/cmake/modules/Versioning.cmake index e492370..380d97e 100644 --- a/cmake/modules/Versioning.cmake +++ b/cmake/modules/Versioning.cmake @@ -10,51 +10,54 @@ set(_VERSIONING_MODULE_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "Versionin # ------------------------------------------------------------ # Extract version information from Git # ------------------------------------------------------------ +if(NOT ADS_VERSION) + # Get tag (expected: v1.2.3 or 1.2.3 or 1.2.3-12-gHASH) + execute_process( + COMMAND git describe --tags --dirty + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_DESC_RAW + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + # Remove leading "v" if present + string(REGEX REPLACE "^v" "" GIT_DESC "${GIT_DESC_RAW}") + + # Extract major.minor.patch + string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" _ "${GIT_DESC}") + set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}") + set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}") + set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}") + + set(PROJECT_VERSION_STRING + "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" + ) + + # Commit hash (full + short) + execute_process( + COMMAND git rev-parse HEAD + OUTPUT_VARIABLE PROJECT_GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND git rev-parse --short HEAD + OUTPUT_VARIABLE PROJECT_GIT_HASH_SHORT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) -# Get tag (expected: v1.2.3 or 1.2.3 or 1.2.3-12-gHASH) -execute_process( - COMMAND git describe --tags --dirty - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_DESC_RAW - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -# Remove leading "v" if present -string(REGEX REPLACE "^v" "" GIT_DESC "${GIT_DESC_RAW}") - -# Extract major.minor.patch -string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" _ "${GIT_DESC}") -set(PROJECT_VERSION_MAJOR "${CMAKE_MATCH_1}") -set(PROJECT_VERSION_MINOR "${CMAKE_MATCH_2}") -set(PROJECT_VERSION_PATCH "${CMAKE_MATCH_3}") - -set(PROJECT_VERSION_STRING - "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}" -) - -# Commit hash (full + short) -execute_process( - COMMAND git rev-parse HEAD - OUTPUT_VARIABLE PROJECT_GIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -execute_process( - COMMAND git rev-parse --short HEAD - OUTPUT_VARIABLE PROJECT_GIT_HASH_SHORT - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -# Export variables to parent scope -set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE) -set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE) -set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE) -set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}" PARENT_SCOPE) -set(PROJECT_GIT_HASH "${PROJECT_GIT_HASH}" PARENT_SCOPE) -set(PROJECT_GIT_HASH_SHORT "${PROJECT_GIT_HASH_SHORT}" PARENT_SCOPE) - -# Public variable for users -set(PROJECT_AUTO_VERSION "${PROJECT_VERSION_STRING}" PARENT_SCOPE) + # Export variables to parent scope + set(PROJECT_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" PARENT_SCOPE) + set(PROJECT_VERSION_MINOR "${PROJECT_VERSION_MINOR}" PARENT_SCOPE) + set(PROJECT_VERSION_PATCH "${PROJECT_VERSION_PATCH}" PARENT_SCOPE) + set(PROJECT_VERSION_STRING "${PROJECT_VERSION_STRING}" PARENT_SCOPE) + set(PROJECT_GIT_HASH "${PROJECT_GIT_HASH}" PARENT_SCOPE) + set(PROJECT_GIT_HASH_SHORT "${PROJECT_GIT_HASH_SHORT}" PARENT_SCOPE) + + # Public variable for users + set(PROJECT_AUTO_VERSION "${PROJECT_VERSION_STRING}" PARENT_SCOPE) +else() + set(PROJECT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") +endif() # ------------------------------------------------------------ # Reusable function: Attach Windows version resources to target