if(__opus_version) return() endif() set(__opus_version INCLUDED) function(get_package_version PACKAGE_VERSION PROJECT_VERSION) find_package(Git) if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git") execute_process(COMMAND ${GIT_EXECUTABLE} --git-dir=${CMAKE_CURRENT_LIST_DIR}/.git describe --tags --match "v*" OUTPUT_VARIABLE OPUS_PACKAGE_VERSION) if(OPUS_PACKAGE_VERSION) string(STRIP ${OPUS_PACKAGE_VERSION}, OPUS_PACKAGE_VERSION) string(REPLACE \n "" OPUS_PACKAGE_VERSION ${OPUS_PACKAGE_VERSION}) string(REPLACE , "" OPUS_PACKAGE_VERSION ${OPUS_PACKAGE_VERSION}) string(SUBSTRING ${OPUS_PACKAGE_VERSION} 1 -1 OPUS_PACKAGE_VERSION) message(STATUS "Opus package version from git repo: ${OPUS_PACKAGE_VERSION}") endif() elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/package_version" AND NOT OPUS_PACKAGE_VERSION) # Not a git repo, lets' try to parse it from package_version file if exists file(STRINGS package_version OPUS_PACKAGE_VERSION LIMIT_COUNT 1 REGEX "PACKAGE_VERSION=") string(REPLACE "PACKAGE_VERSION=" "" OPUS_PACKAGE_VERSION ${OPUS_PACKAGE_VERSION}) string(REPLACE "\"" "" OPUS_PACKAGE_VERSION ${OPUS_PACKAGE_VERSION}) # In case we have a unknown dist here we just replace it with 0 string(REPLACE "unknown" "0" OPUS_PACKAGE_VERSION ${OPUS_PACKAGE_VERSION}) message(STATUS "Opus package version from package_version file: ${OPUS_PACKAGE_VERSION}") endif() if(OPUS_PACKAGE_VERSION) string(REGEX REPLACE "^([0-9]+.[0-9]+\\.?([0-9]+)?).*" "\\1" OPUS_PROJECT_VERSION ${OPUS_PACKAGE_VERSION}) else() # fail to parse version from git and package version message(WARNING "Could not get package version.") set(OPUS_PACKAGE_VERSION 0) set(OPUS_PROJECT_VERSION 0) endif() message(STATUS "Opus project version: ${OPUS_PROJECT_VERSION}") set(PACKAGE_VERSION ${OPUS_PACKAGE_VERSION} PARENT_SCOPE) set(PROJECT_VERSION ${OPUS_PROJECT_VERSION} PARENT_SCOPE) endfunction()