mirror of
https://github.com/xiph/opus.git
synced 2025-05-15 07:58:29 +00:00
cmake - fix bugs around consuming Opus as a submodule in cmake and package version parsing
This commit is contained in:
parent
5edb5aacba
commit
8ad827c3ff
5 changed files with 80 additions and 68 deletions
|
@ -1,23 +1,12 @@
|
||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.1)
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
include(OpusFunctions)
|
include(OpusPackageVersion)
|
||||||
|
get_package_version(PACKAGE_VERSION PROJECT_VERSION)
|
||||||
get_library_version(OPUS_LIBRARY_VERSION OPUS_LIBRARY_VERSION_MAJOR)
|
|
||||||
message(STATUS "Opus library version: ${OPUS_LIBRARY_VERSION}")
|
|
||||||
|
|
||||||
get_package_version(PACKAGE_VERSION)
|
|
||||||
message(STATUS "Opus package version: ${PACKAGE_VERSION}")
|
|
||||||
|
|
||||||
string(REGEX
|
|
||||||
REPLACE "^([0-9]+.[0-9]+\\.?([0-9]+)?).*"
|
|
||||||
"\\1"
|
|
||||||
PROJECT_VERSION
|
|
||||||
${PACKAGE_VERSION})
|
|
||||||
message(STATUS "Opus project version: ${PROJECT_VERSION}")
|
|
||||||
|
|
||||||
project(Opus LANGUAGES C VERSION ${PROJECT_VERSION})
|
project(Opus LANGUAGES C VERSION ${PROJECT_VERSION})
|
||||||
|
|
||||||
|
include(OpusFunctions)
|
||||||
include(OpusBuildtype)
|
include(OpusBuildtype)
|
||||||
include(OpusConfig)
|
include(OpusConfig)
|
||||||
include(OpusSources)
|
include(OpusSources)
|
||||||
|
@ -228,6 +217,9 @@ endif()
|
||||||
add_library(opus ${opus_headers} ${opus_sources} ${opus_sources_float} ${Opus_PUBLIC_HEADER})
|
add_library(opus ${opus_headers} ${opus_sources} ${opus_sources_float} ${Opus_PUBLIC_HEADER})
|
||||||
add_library(Opus::opus ALIAS opus)
|
add_library(Opus::opus ALIAS opus)
|
||||||
|
|
||||||
|
get_library_version(OPUS_LIBRARY_VERSION OPUS_LIBRARY_VERSION_MAJOR)
|
||||||
|
message(STATUS "Opus library version: ${OPUS_LIBRARY_VERSION}")
|
||||||
|
|
||||||
set_target_properties(opus
|
set_target_properties(opus
|
||||||
PROPERTIES SOVERSION
|
PROPERTIES SOVERSION
|
||||||
${OPUS_LIBRARY_VERSION_MAJOR}
|
${OPUS_LIBRARY_VERSION_MAJOR}
|
||||||
|
@ -490,7 +482,7 @@ if(OPUS_INSTALL_CMAKE_CONFIG_MODULE)
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
configure_package_config_file(${CMAKE_SOURCE_DIR}/cmake/OpusConfig.cmake.in
|
configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in
|
||||||
OpusConfig.cmake
|
OpusConfig.cmake
|
||||||
INSTALL_DESTINATION
|
INSTALL_DESTINATION
|
||||||
${CMAKE_INSTALL_PACKAGEDIR}
|
${CMAKE_INSTALL_PACKAGEDIR}
|
||||||
|
|
|
@ -220,6 +220,7 @@ EXTRA_DIST = opus.pc.in \
|
||||||
cmake/OpusConfig.cmake \
|
cmake/OpusConfig.cmake \
|
||||||
cmake/OpusConfig.cmake.in \
|
cmake/OpusConfig.cmake.in \
|
||||||
cmake/OpusFunctions.cmake \
|
cmake/OpusFunctions.cmake \
|
||||||
|
cmake/OpusPackageVersion.cmake \
|
||||||
cmake/OpusSources.cmake \
|
cmake/OpusSources.cmake \
|
||||||
cmake/config.h.cmake.in \
|
cmake/config.h.cmake.in \
|
||||||
cmake/vla.c \
|
cmake/vla.c \
|
||||||
|
|
|
@ -5,7 +5,7 @@ set(__opus_config INCLUDED)
|
||||||
|
|
||||||
include(OpusFunctions)
|
include(OpusFunctions)
|
||||||
|
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.cmake.in config.h @ONLY)
|
configure_file(cmake/config.h.cmake.in config.h @ONLY)
|
||||||
add_definitions(-DHAVE_CONFIG_H)
|
add_definitions(-DHAVE_CONFIG_H)
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||||
|
@ -89,4 +89,4 @@ if(NOT MSVC)
|
||||||
add_compile_options(${WARNING_FLAG})
|
add_compile_options(${WARNING_FLAG})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -41,57 +41,6 @@ function(get_library_version OPUS_LIBRARY_VERSION OPUS_LIBRARY_VERSION_MAJOR)
|
||||||
set(OPUS_LIBRARY_VERSION_MAJOR ${OPUS_LIBRARY_VERSION_MAJOR} PARENT_SCOPE)
|
set(OPUS_LIBRARY_VERSION_MAJOR ${OPUS_LIBRARY_VERSION_MAJOR} PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(get_package_version PACKAGE_VERSION)
|
|
||||||
find_package(Git)
|
|
||||||
if(Git_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/.git")
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} 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)
|
|
||||||
set(PACKAGE_VERSION ${OPUS_PACKAGE_VERSION} PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/package_version")
|
|
||||||
# Not a git repo, lets' try to parse it from package_version file if exists
|
|
||||||
file(STRINGS package_version opus_package_version_string
|
|
||||||
LIMIT_COUNT 1
|
|
||||||
REGEX "PACKAGE_VERSION=")
|
|
||||||
string(REPLACE "PACKAGE_VERSION="
|
|
||||||
""
|
|
||||||
opus_package_version_string
|
|
||||||
${opus_package_version_string})
|
|
||||||
string(REPLACE "\""
|
|
||||||
""
|
|
||||||
opus_package_version_string
|
|
||||||
${opus_package_version_string})
|
|
||||||
# In case we have a unknown dist here we just replace it with 0
|
|
||||||
string(REPLACE "unknown"
|
|
||||||
"0"
|
|
||||||
opus_package_version_string
|
|
||||||
${opus_package_version_string})
|
|
||||||
set(PACKAGE_VERSION ${opus_package_version_string} PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# if all else fails set to 0
|
|
||||||
set(PACKAGE_VERSION 0 PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(check_flag NAME FLAG)
|
function(check_flag NAME FLAG)
|
||||||
include(CheckCCompilerFlag)
|
include(CheckCCompilerFlag)
|
||||||
check_c_compiler_flag(${FLAG} ${NAME}_SUPPORTED)
|
check_c_compiler_flag(${FLAG} ${NAME}_SUPPORTED)
|
||||||
|
|
70
cmake/OpusPackageVersion.cmake
Normal file
70
cmake/OpusPackageVersion.cmake
Normal file
|
@ -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()
|
Loading…
Add table
Add a link
Reference in a new issue