mirror of
https://github.com/ZDoom/zdoom-macos-deps.git
synced 2024-11-25 05:11:49 +00:00
b91d5920d9
[skip build]
453 lines
15 KiB
Diff
453 lines
15 KiB
Diff
--- /dev/null
|
|
+++ a/CMakeLists.txt
|
|
@@ -0,0 +1,302 @@
|
|
+cmake_minimum_required(VERSION 3.16)
|
|
+
|
|
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
|
|
+
|
|
+include(OpusFilePackageVersion)
|
|
+get_package_version(PACKAGE_VERSION PROJECT_VERSION)
|
|
+string(REPLACE "." ";" PROJECT_VERSION_LIST ${PROJECT_VERSION})
|
|
+list(GET PROJECT_VERSION_LIST 0 PROJECT_VERSION_MAJOR)
|
|
+list(GET PROJECT_VERSION_LIST 1 PROJECT_VERSION_MINOR)
|
|
+
|
|
+project(OpusFile
|
|
+ VERSION ${PROJECT_VERSION}
|
|
+ LANGUAGES C
|
|
+)
|
|
+
|
|
+option(OP_DISABLE_HTTP "Disable HTTP support" OFF)
|
|
+option(OP_DISABLE_FLOAT_API "Disable floating-point API" OFF)
|
|
+option(OP_FIXED_POINT "Enable fixed-point calculation" OFF)
|
|
+option(OP_ENABLE_ASSERTIONS "Enable assertions in code" OFF)
|
|
+option(OP_DISABLE_EXAMPLES "Do not build example applications" OFF)
|
|
+option(OP_DISABLE_DOCS "Do not build API documentation" OFF)
|
|
+
|
|
+include(GNUInstallDirs)
|
|
+
|
|
+find_package(Ogg REQUIRED)
|
|
+find_package(Opus REQUIRED)
|
|
+
|
|
+include(CMakePushCheckState)
|
|
+include(CheckSymbolExists)
|
|
+cmake_push_check_state(RESET)
|
|
+include(CheckLibraryExists)
|
|
+check_library_exists(m lrintf "" OP_HAVE_LIBM)
|
|
+if(OP_HAVE_LIBM)
|
|
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "m")
|
|
+endif()
|
|
+check_symbol_exists(lrintf "math.h" OP_HAVE_LRINTF)
|
|
+cmake_pop_check_state()
|
|
+
|
|
+add_library(opusfile
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/info.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/opusfile.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/stream.c"
|
|
+)
|
|
+add_library(OpusFile::opusfile ALIAS opusfile)
|
|
+set_target_properties(opusfile PROPERTIES
|
|
+ PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
|
|
+ VERSION ${PROJECT_VERSION}
|
|
+ SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
+)
|
|
+target_include_directories(opusfile
|
|
+ PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
+ INTERFACE
|
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>
|
|
+)
|
|
+target_link_libraries(opusfile
|
|
+ PUBLIC
|
|
+ Ogg::ogg
|
|
+ Opus::opus
|
|
+ $<$<BOOL:${OP_HAVE_LIBM}>:m>
|
|
+)
|
|
+target_compile_options(opusfile
|
|
+ PRIVATE
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4267>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4244>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4090>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
|
|
+)
|
|
+target_compile_definitions(opusfile
|
|
+ PRIVATE
|
|
+ $<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>
|
|
+ $<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>
|
|
+ $<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>
|
|
+ $<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>
|
|
+)
|
|
+install(TARGETS opusfile
|
|
+ EXPORT OpusFileTargets
|
|
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
|
|
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
|
|
+)
|
|
+
|
|
+if(NOT OP_DISABLE_HTTP)
|
|
+ find_package(OpenSSL REQUIRED)
|
|
+
|
|
+ include(CheckIncludeFile)
|
|
+ include(CheckCSourceCompiles)
|
|
+ cmake_push_check_state(RESET)
|
|
+ if(NOT WIN32)
|
|
+ check_include_file("sys/socket.h" OP_HAVE_SYS_SOCKET_H)
|
|
+ if(NOT OP_HAVE_SYS_SOCKET_H)
|
|
+ message(FATAL_ERROR "HTTP support requires a POSIX socket library")
|
|
+ endif()
|
|
+ endif()
|
|
+ check_c_source_compiles(
|
|
+ "#include <time.h>
|
|
+ int main(void)
|
|
+ {
|
|
+ struct timespec ts;
|
|
+ return clock_gettime(CLOCK_REALTIME, &ts);
|
|
+ }"
|
|
+ OP_HAVE_CLOCK_GETTIME
|
|
+ )
|
|
+ if(NOT OP_HAVE_CLOCK_GETTIME)
|
|
+ check_symbol_exists(ftime "sys/timeb.h" OP_HAVE_FTIME)
|
|
+ if(NOT OP_HAVE_FTIME)
|
|
+ message(FATAL_ERROR "HTTP support requires either clock_gettime() or ftime()")
|
|
+ endif()
|
|
+ endif()
|
|
+ cmake_pop_check_state()
|
|
+
|
|
+ add_library(opusurl
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/http.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/internal.h"
|
|
+ )
|
|
+ add_library(OpusFile::opusurl ALIAS opusurl)
|
|
+ if(WIN32)
|
|
+ target_sources(opusurl PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/wincerts.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/winerrno.h"
|
|
+ )
|
|
+ endif()
|
|
+ set_target_properties(opusurl PROPERTIES
|
|
+ PUBLIC_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h"
|
|
+ VERSION ${PROJECT_VERSION}
|
|
+ SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
+ )
|
|
+ target_include_directories(opusurl
|
|
+ PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
+ INTERFACE
|
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/opus>
|
|
+ )
|
|
+ target_compile_definitions(opusurl
|
|
+ PRIVATE
|
|
+ $<$<BOOL:${OP_DISABLE_FLOAT_API}>:OP_DISABLE_FLOAT_API>
|
|
+ $<$<BOOL:${OP_FIXED_POINT}>:OP_FIXED_POINT>
|
|
+ $<$<BOOL:${OP_ENABLE_ASSERTIONS}>:OP_ENABLE_ASSERTIONS>
|
|
+ $<$<BOOL:${OP_HAVE_LRINTF}>:OP_HAVE_LRINTF>
|
|
+ $<$<BOOL:${OP_HAVE_CLOCK_GETTIME}>:OP_HAVE_CLOCK_GETTIME>
|
|
+ $<$<BOOL:${OP_HAVE_FTIME}>:OP_HAVE_FTIME>
|
|
+ OP_ENABLE_HTTP
|
|
+ )
|
|
+ target_link_libraries(opusurl
|
|
+ PRIVATE
|
|
+ opusfile
|
|
+ OpenSSL::SSL
|
|
+ $<$<C_COMPILER_ID:MSVC>:ws2_32>
|
|
+ $<$<C_COMPILER_ID:MSVC>:crypt32>
|
|
+ $<$<BOOL:${OP_HAVE_LIBM}>:m>
|
|
+ )
|
|
+ target_compile_options(opusurl
|
|
+ PRIVATE
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4267>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4244>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4090>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
|
|
+ )
|
|
+ install(TARGETS opusurl
|
|
+ EXPORT OpusFileTargets
|
|
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
|
|
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/opus"
|
|
+ )
|
|
+endif()
|
|
+
|
|
+if(NOT OP_DISABLE_EXAMPLES)
|
|
+ add_executable(opusfile_example
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/opusfile_example.c"
|
|
+ )
|
|
+ add_executable(OpusFile::opusfile_example ALIAS opusfile_example)
|
|
+ if(WIN32)
|
|
+ target_sources(opusfile_example PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/win32utf8.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/win32utf8.h"
|
|
+ )
|
|
+ endif()
|
|
+ target_include_directories(opusfile_example
|
|
+ PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples"
|
|
+ )
|
|
+ target_link_libraries(opusfile_example
|
|
+ PRIVATE
|
|
+ opusfile
|
|
+ opusurl
|
|
+ )
|
|
+ target_compile_options(opusfile_example
|
|
+ PRIVATE
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4267>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4244>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4090>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
|
|
+ )
|
|
+
|
|
+ add_executable(seeking_example
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/seeking_example.c"
|
|
+ )
|
|
+ add_executable(OpusFile::seeking_example ALIAS seeking_example)
|
|
+ if(WIN32)
|
|
+ target_sources(seeking_example PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/win32utf8.c"
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples/win32utf8.h"
|
|
+ )
|
|
+ endif()
|
|
+ target_include_directories(seeking_example
|
|
+ PRIVATE
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/examples"
|
|
+ )
|
|
+ target_link_libraries(seeking_example
|
|
+ PRIVATE
|
|
+ opusfile
|
|
+ opusurl
|
|
+ )
|
|
+ target_compile_options(seeking_example
|
|
+ PRIVATE
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4267>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4244>
|
|
+ $<$<C_COMPILER_ID:MSVC>:/wd4090>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-std=c89>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-pedantic>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wall>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wextra>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-parentheses>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-Wno-long-long>
|
|
+ $<$<C_COMPILER_ID:Clang,GNU>:-fvisibility=hidden>
|
|
+ )
|
|
+endif()
|
|
+
|
|
+if(NOT OP_DISABLE_DOCS)
|
|
+ find_package(Doxygen OPTIONAL_COMPONENTS dot)
|
|
+
|
|
+ set(DOXYGEN_PROJECT_BRIEF "Stand-alone decoder library for .opus files.")
|
|
+ set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
|
+
|
|
+ set(DOXYGEN_QUIET YES)
|
|
+ set(DOXYGEN_WARNINGS YES)
|
|
+ set(DOXYGEN_WARN_IF_UNDOCUMENTED YES)
|
|
+ set(DOXYGEN_WARN_IF_DOC_ERROR YES)
|
|
+ set(DOXYGEN_WARN_NO_PARAMDOC YES)
|
|
+
|
|
+ set(DOXYGEN_JAVADOC_AUTOBRIEF YES)
|
|
+ set(DOXYGEN_SORT_MEMBER_DOCS NO)
|
|
+
|
|
+ set(DOXYGEN_PROJECT_LOGO "${CMAKE_CURRENT_SOURCE_DIR}/doc/opus_logo.svg")
|
|
+
|
|
+ set(DOXYGEN_FULL_PATH_NAMES NO)
|
|
+
|
|
+ doxygen_add_docs(doxygen "${CMAKE_CURRENT_SOURCE_DIR}/include/opusfile.h" ALL USE_STAMP_FILE)
|
|
+endif()
|
|
+
|
|
+install(EXPORT OpusFileTargets
|
|
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/opusfile"
|
|
+ NAMESPACE OpusFile::
|
|
+)
|
|
+include(CMakePackageConfigHelpers)
|
|
+configure_package_config_file(
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/OpusFileConfig.cmake.in"
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/OpusFileConfig.cmake"
|
|
+ INSTALL_DESTINATION
|
|
+ "${CMAKE_INSTALL_LIBDIR}/cmake/opusfile"
|
|
+)
|
|
+write_basic_package_version_file(
|
|
+ "OpusFileConfigVersion.cmake"
|
|
+ VERSION "${PACKAGE_VERSION}"
|
|
+ COMPATIBILITY AnyNewerVersion
|
|
+)
|
|
+install(
|
|
+ FILES
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/OpusFileConfig.cmake"
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/OpusFileConfigVersion.cmake"
|
|
+ DESTINATION
|
|
+ "${CMAKE_INSTALL_LIBDIR}/cmake/opusfile"
|
|
+)
|
|
--- /dev/null
|
|
+++ a/cmake/FindOgg.cmake
|
|
@@ -0,0 +1,7 @@
|
|
+find_package(Ogg CONFIG)
|
|
+if(NOT TARGET Ogg::ogg)
|
|
+ find_package(PkgConfig REQUIRED)
|
|
+ pkg_check_modules(Ogg REQUIRED IMPORTED_TARGET ogg)
|
|
+ set_target_properties(PkgConfig::Ogg PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
+ add_library(Ogg::ogg ALIAS PkgConfig::Ogg)
|
|
+endif()
|
|
--- /dev/null
|
|
+++ a/cmake/FindOpus.cmake
|
|
@@ -0,0 +1,7 @@
|
|
+find_package(Opus CONFIG)
|
|
+if(NOT TARGET Opus::opus)
|
|
+ find_package(PkgConfig REQUIRED)
|
|
+ pkg_check_modules(Opus REQUIRED IMPORTED_TARGET opus)
|
|
+ set_target_properties(PkgConfig::Opus PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
+ add_library(Opus::opus ALIAS PkgConfig::Opus)
|
|
+endif()
|
|
--- /dev/null
|
|
+++ a/cmake/OpusFileConfig.cmake.in
|
|
@@ -0,0 +1,52 @@
|
|
+@PACKAGE_INIT@
|
|
+
|
|
+# Ported from CMakeFindDependencyMacro.cmake (finding configs and using pkgconfig as fallback)
|
|
+set(cmake_quiet_arg)
|
|
+if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
|
+ set(cmake_quiet_arg QUIET)
|
|
+endif()
|
|
+set(cmake_required_arg)
|
|
+if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
|
|
+ set(cmake_required_arg REQUIRED)
|
|
+endif()
|
|
+
|
|
+find_package(Ogg CONFIG ${cmake_quiet_arg})
|
|
+if(NOT TARGET Ogg::ogg)
|
|
+ find_package(PkgConfig REQUIRED ${cmake_quiet_arg})
|
|
+ pkg_check_modules(Ogg ${cmake_required_arg} ${cmake_quiet_arg} IMPORTED_TARGET ogg)
|
|
+ set_target_properties(PkgConfig::Ogg PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
+ add_library(Ogg::ogg ALIAS PkgConfig::Ogg)
|
|
+endif()
|
|
+
|
|
+if (NOT TARGET Ogg::ogg)
|
|
+ set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency Ogg could not be found.")
|
|
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
|
|
+ return()
|
|
+endif()
|
|
+
|
|
+find_package(Opus CONFIG ${cmake_quiet_arg})
|
|
+if(NOT TARGET Opus::opus)
|
|
+ find_package(PkgConfig REQUIRED ${cmake_quiet_arg})
|
|
+ pkg_check_modules(Opus ${cmake_required_arg} ${cmake_quiet_arg} IMPORTED_TARGET opus)
|
|
+ set_target_properties(PkgConfig::Opus PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
+ add_library(Opus::opus ALIAS PkgConfig::Opus)
|
|
+endif()
|
|
+
|
|
+if (NOT TARGET Opus::opus)
|
|
+ set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE "${CMAKE_FIND_PACKAGE_NAME} could not be found because dependency Opus could not be found.")
|
|
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND False)
|
|
+ return()
|
|
+endif()
|
|
+
|
|
+set(cmake_fd_required_arg)
|
|
+set(cmake_fd_quiet_arg)
|
|
+
|
|
+if (NOT @OP_DISABLE_HTTP@)
|
|
+ include(CMakeFindDependencyMacro)
|
|
+ find_dependency(OpenSSL)
|
|
+endif()
|
|
+
|
|
+# Including targets of opusfile
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/opusfileTargets.cmake")
|
|
+
|
|
+check_required_components(opusfile)
|
|
--- /dev/null
|
|
+++ a/cmake/OpusFilePackageVersion.cmake
|
|
@@ -0,0 +1,70 @@
|
|
+if(__opusfile_version)
|
|
+ return()
|
|
+endif()
|
|
+set(__opusfile_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 OPUSFILE_PACKAGE_VERSION)
|
|
+ if(OPUSFILE_PACKAGE_VERSION)
|
|
+ string(STRIP ${OPUSFILE_PACKAGE_VERSION}, OPUSFILE_PACKAGE_VERSION)
|
|
+ string(REPLACE \n
|
|
+ ""
|
|
+ OPUSFILE_PACKAGE_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+ string(REPLACE ,
|
|
+ ""
|
|
+ OPUSFILE_PACKAGE_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+
|
|
+ string(SUBSTRING ${OPUSFILE_PACKAGE_VERSION}
|
|
+ 1
|
|
+ -1
|
|
+ OPUSFILE_PACKAGE_VERSION)
|
|
+ message(STATUS "Opus package version from git repo: ${OPUSFILE_PACKAGE_VERSION}")
|
|
+ endif()
|
|
+
|
|
+ elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/package_version"
|
|
+ AND NOT OPUSFILE_PACKAGE_VERSION)
|
|
+ # Not a git repo, lets' try to parse it from package_version file if exists
|
|
+ file(STRINGS package_version OPUSFILE_PACKAGE_VERSION
|
|
+ LIMIT_COUNT 1
|
|
+ REGEX "PACKAGE_VERSION=")
|
|
+ string(REPLACE "PACKAGE_VERSION="
|
|
+ ""
|
|
+ OPUSFILE_PACKAGE_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+ string(REPLACE "\""
|
|
+ ""
|
|
+ OPUSFILE_PACKAGE_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+ # In case we have a unknown dist here we just replace it with 0
|
|
+ string(REPLACE "unknown"
|
|
+ "0"
|
|
+ OPUSFILE_PACKAGE_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+ message(STATUS "Opus package version from package_version file: ${OPUSFILE_PACKAGE_VERSION}")
|
|
+ endif()
|
|
+
|
|
+ if(OPUSFILE_PACKAGE_VERSION)
|
|
+ string(REGEX
|
|
+ REPLACE "^([0-9]+.[0-9]+\\.?([0-9]+)?).*"
|
|
+ "\\1"
|
|
+ OPUSFILE_PROJECT_VERSION
|
|
+ ${OPUSFILE_PACKAGE_VERSION})
|
|
+ else()
|
|
+ # fail to parse version from git and package version
|
|
+ message(WARNING "Could not get package version.")
|
|
+ set(OPUSFILE_PACKAGE_VERSION 0)
|
|
+ set(OPUSFILE_PROJECT_VERSION 0)
|
|
+ endif()
|
|
+
|
|
+ message(STATUS "Opus project version: ${OPUSFILE_PROJECT_VERSION}")
|
|
+
|
|
+ set(PACKAGE_VERSION ${OPUSFILE_PACKAGE_VERSION} PARENT_SCOPE)
|
|
+ set(PROJECT_VERSION ${OPUSFILE_PROJECT_VERSION} PARENT_SCOPE)
|
|
+endfunction()
|