xref: /aosp_15_r20/external/libopus/cmake/OpusPackageVersion.cmake (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
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