1if(__opus_version) 2 return() 3endif() 4set(__opus_version INCLUDED) 5 6function(get_package_version PACKAGE_VERSION PROJECT_VERSION) 7 8 find_package(Git) 9 if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git") 10 execute_process(COMMAND ${GIT_EXECUTABLE} 11 --git-dir=${CMAKE_CURRENT_LIST_DIR}/.git describe 12 --tags --match "v*" OUTPUT_VARIABLE OPUS_PACKAGE_VERSION) 13 if(OPUS_PACKAGE_VERSION) 14 string(STRIP ${OPUS_PACKAGE_VERSION}, OPUS_PACKAGE_VERSION) 15 string(REPLACE \n 16 "" 17 OPUS_PACKAGE_VERSION 18 ${OPUS_PACKAGE_VERSION}) 19 string(REPLACE , 20 "" 21 OPUS_PACKAGE_VERSION 22 ${OPUS_PACKAGE_VERSION}) 23 24 string(SUBSTRING ${OPUS_PACKAGE_VERSION} 25 1 26 -1 27 OPUS_PACKAGE_VERSION) 28 message(STATUS "Opus package version from git repo: ${OPUS_PACKAGE_VERSION}") 29 endif() 30 31 elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/package_version" 32 AND NOT OPUS_PACKAGE_VERSION) 33 # Not a git repo, lets' try to parse it from package_version file if exists 34 file(STRINGS package_version OPUS_PACKAGE_VERSION 35 LIMIT_COUNT 1 36 REGEX "PACKAGE_VERSION=") 37 string(REPLACE "PACKAGE_VERSION=" 38 "" 39 OPUS_PACKAGE_VERSION 40 ${OPUS_PACKAGE_VERSION}) 41 string(REPLACE "\"" 42 "" 43 OPUS_PACKAGE_VERSION 44 ${OPUS_PACKAGE_VERSION}) 45 # In case we have a unknown dist here we just replace it with 0 46 string(REPLACE "unknown" 47 "0" 48 OPUS_PACKAGE_VERSION 49 ${OPUS_PACKAGE_VERSION}) 50 message(STATUS "Opus package version from package_version file: ${OPUS_PACKAGE_VERSION}") 51 endif() 52 53 if(OPUS_PACKAGE_VERSION) 54 string(REGEX 55 REPLACE "^([0-9]+.[0-9]+\\.?([0-9]+)?).*" 56 "\\1" 57 OPUS_PROJECT_VERSION 58 ${OPUS_PACKAGE_VERSION}) 59 else() 60 # fail to parse version from git and package version 61 message(WARNING "Could not get package version.") 62 set(OPUS_PACKAGE_VERSION 0) 63 set(OPUS_PROJECT_VERSION 0) 64 endif() 65 66 message(STATUS "Opus project version: ${OPUS_PROJECT_VERSION}") 67 68 set(PACKAGE_VERSION ${OPUS_PACKAGE_VERSION} PARENT_SCOPE) 69 set(PROJECT_VERSION ${OPUS_PROJECT_VERSION} PARENT_SCOPE) 70endfunction() 71