1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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: Just use a bogus version string that is semantically older
- # than anything else and spit out a warning to the developer.
- set(OPEN62541_VERSION "v0.0.0-unknown" PARENT_SCOPE)
- set(OPEN62541_VER_MAJOR 0 PARENT_SCOPE)
- set(OPEN62541_VER_MINOR 0 PARENT_SCOPE)
- set(OPEN62541_VER_PATCH 0 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()
|