Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Asteborg <maastebo@microsoft.com>2020-06-25 07:25:57 +0300
committerRalph Giles <giles@thaumas.net>2020-08-08 20:10:51 +0300
commit8ad827c3ff99f08b4087cf47637c722020d3c958 (patch)
treebdeef23623c0289d6cc0e91256db277a7a6507c3 /cmake/OpusPackageVersion.cmake
parent5edb5aacba5c6941b66ef48002f47fbe1c3f39b7 (diff)
cmake - fix bugs around consuming Opus as a submodule in cmake and package version parsing
Diffstat (limited to 'cmake/OpusPackageVersion.cmake')
-rw-r--r--cmake/OpusPackageVersion.cmake70
1 files changed, 70 insertions, 0 deletions
diff --git a/cmake/OpusPackageVersion.cmake b/cmake/OpusPackageVersion.cmake
new file mode 100644
index 00000000..447ce3b1
--- /dev/null
+++ b/cmake/OpusPackageVersion.cmake
@@ -0,0 +1,70 @@
+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()