mirror of
https://github.com/open62541/open62541.git
synced 2025-06-03 04:00:21 +00:00
85 lines
3.1 KiB
CMake
85 lines
3.1 KiB
CMake
get_filename_component(VERSION_SRC_DIR ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
|
|
set(VERSION_SRC_DIR "${VERSION_SRC_DIR}/..")
|
|
|
|
find_package(Git)
|
|
|
|
function(set_open62541_version)
|
|
|
|
# Generate a git-describe version string from Git repository tags
|
|
if(GIT_EXECUTABLE AND NOT DEFINED OPEN62541_VERSION)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} describe --tags --dirty --match "v*"
|
|
WORKING_DIRECTORY "${VERSION_SRC_DIR}"
|
|
OUTPUT_VARIABLE GIT_DESCRIBE_VERSION
|
|
RESULT_VARIABLE GIT_DESCRIBE_ERROR_CODE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
if(NOT GIT_DESCRIBE_ERROR_CODE)
|
|
|
|
# Example values can be:
|
|
# v1.2
|
|
# v1.2.3
|
|
# v1.2.3-rc1
|
|
# v1.2.3-rc1-dirty
|
|
# v1.2.3-5-g4538abcd
|
|
# v1.2.3-5-g4538abcd-dirty
|
|
|
|
set(OPEN62541_VERSION ${GIT_DESCRIBE_VERSION})
|
|
endif()
|
|
endif()
|
|
|
|
if(OPEN62541_VERSION)
|
|
STRING(REGEX REPLACE "^(v[0-9\\.]+)(.*)$"
|
|
"\\1"
|
|
GIT_VERSION_NUMBERS
|
|
"${OPEN62541_VERSION}" )
|
|
STRING(REGEX REPLACE "^v([0-9\\.]+)(.*)$"
|
|
"\\2"
|
|
GIT_VERSION_LABEL
|
|
"${OPEN62541_VERSION}" )
|
|
|
|
if("${GIT_VERSION_NUMBERS}" MATCHES "^v([0-9]+)(.*)$")
|
|
STRING(REGEX REPLACE "^v([0-9]+)\\.?(.*)$"
|
|
"\\1"
|
|
GIT_VER_MAJOR
|
|
"${GIT_VERSION_NUMBERS}" )
|
|
if("${GIT_VERSION_NUMBERS}" MATCHES "^v([0-9]+)\\.([0-9]+)(.*)$")
|
|
STRING(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)(.*)$"
|
|
"\\2"
|
|
GIT_VER_MINOR
|
|
"${GIT_VERSION_NUMBERS}" )
|
|
if("${GIT_VERSION_NUMBERS}" MATCHES "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)$")
|
|
STRING(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+)(.*)$"
|
|
"\\3"
|
|
GIT_VER_PATCH
|
|
"${GIT_VERSION_NUMBERS}" )
|
|
else()
|
|
set(GIT_VER_PATCH 0)
|
|
endif()
|
|
else()
|
|
set(GIT_VER_MINOR 0)
|
|
set(GIT_VER_PATCH 0)
|
|
endif()
|
|
|
|
else()
|
|
set(GIT_VER_MAJOR 0)
|
|
set(GIT_VER_MINOR 0)
|
|
set(GIT_VER_PATCH 0)
|
|
endif()
|
|
set(OPEN62541_VER_MAJOR ${GIT_VER_MAJOR} PARENT_SCOPE)
|
|
set(OPEN62541_VER_MINOR ${GIT_VER_MINOR} PARENT_SCOPE)
|
|
set(OPEN62541_VER_PATCH ${GIT_VER_PATCH} PARENT_SCOPE)
|
|
set(OPEN62541_VER_LABEL "${GIT_VERSION_LABEL}" PARENT_SCOPE)
|
|
set(OPEN62541_VER_COMMIT ${OPEN62541_VERSION} PARENT_SCOPE)
|
|
else()
|
|
# Final fallback
|
|
set(OPEN62541_VERSION "v1.2.9-unknown" PARENT_SCOPE)
|
|
set(OPEN62541_VER_MAJOR 1 PARENT_SCOPE)
|
|
set(OPEN62541_VER_MINOR 2 PARENT_SCOPE)
|
|
set(OPEN62541_VER_PATCH 9 PARENT_SCOPE)
|
|
set(OPEN62541_VER_LABEL "-unknown" PARENT_SCOPE)
|
|
set(OPEN62541_VER_COMMIT "undefined" PARENT_SCOPE)
|
|
message(WARNING "Failed to determine OPEN62541_VERSION from repository tags. Using default version \"${OPEN62541_VERSION}\".")
|
|
endif()
|
|
endfunction()
|