From a179540e7ed478d16b0e95e4c183a5851c39257f Mon Sep 17 00:00:00 2001 From: Axel Isouard Date: Sun, 5 Feb 2017 06:00:08 -0800 Subject: [PATCH] Create Config, ConfigVersion and Use CMake files Signed-off-by: Axel Isouard --- CMakeModules/LibWebRTCConfig.cmake.in | 63 ++++++++++++++++++++ CMakeModules/LibWebRTCConfigVersion.cmake.in | 14 +++++ CMakeModules/UseLibWebRTC.cmake | 58 ++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 CMakeModules/LibWebRTCConfig.cmake.in create mode 100644 CMakeModules/LibWebRTCConfigVersion.cmake.in create mode 100644 CMakeModules/UseLibWebRTC.cmake diff --git a/CMakeModules/LibWebRTCConfig.cmake.in b/CMakeModules/LibWebRTCConfig.cmake.in new file mode 100644 index 0000000..15bec85 --- /dev/null +++ b/CMakeModules/LibWebRTCConfig.cmake.in @@ -0,0 +1,63 @@ +# - Config file for 'LibWebRTC' package +# It defines the following variables +# +# LIBWEBRTC_INCLUDE_DIRS - include directories +# LIBWEBRTC_LIBRARY_DIRS - library directories +# LIBWEBRTC_LIBRARIES - libraries to link against +# LIBWEBRTC_CMAKE_DIR - path to the CMake modules +# LIBWEBRTC_USE_FILE - path to the CMake use file +# +# - Version variables: +# LIBWEBRTC_MAJOR_VERSION - major version +# LIBWEBRTC_MINOR_VERSION - minor version +# LIBWEBRTC_PATCH_VERSION - patch version +# LIBWEBRTC_BUILD_VERSION - version suffix, release candidate etc +# LIBWEBRTC_WEBRTC_REVISION - WebRTC's Git revision used for that release +# LIBWEBRTC_API_VERSION - full version without build prefix +# LIBWEBRTC_VERSION - full version with build prefix +# +# - Library type and targets variables: +# LIBWEBRTC_LIBRARY_TYPE - STATIC or SHARED +# LIBWEBRTC_TARGET_OS - android, chromeos, ios, linux, nacl, mac or win +# LIBWEBRTC_TARGET_CPU - x86, x64, arm, arm64 or mipsel + +# LibWebRTC version number +set(LIBWEBRTC_MAJOR_VERSION "@LIBWEBRTC_MAJOR_VERSION@") +set(LIBWEBRTC_MINOR_VERSION "@LIBWEBRTC_MINOR_VERSION@") +set(LIBWEBRTC_PATCH_VERSION "@LIBWEBRTC_PATCH_VERSION@") +set(LIBWEBRTC_BUILD_VERSION "@LIBWEBRTC_BUILD_VERSION@") +set(LIBWEBRTC_WEBRTC_REVISION "@LIBWEBRTC_WEBRTC_REVISION@") +set(LIBWEBRTC_API_VERSION "@LIBWEBRTC_API_VERSION@") +set(LIBWEBRTC_VERSION "@LIBWEBRTC_VERSION@") + +# LibWebRTC library type, target OS and target CPU +set(LIBWEBRTC_LIBRARY_TYPE "@LIBRARY_TYPE@") +set(LIBWEBRTC_TARGET_OS "@TARGET_OS@") +set(LIBWEBRTC_TARGET_CPU "@TARGET_CPU@") + +# Include directory +set(LIBWEBRTC_INCLUDE_DIRS "@INSTALL_INCLUDE_DIR@") + +# Libraries directory +set(LIBWEBRTC_LIBRARY_DIRS "@INSTALL_LIB_DIR@") + +# Set the expected libraries variable +set(LIBWEBRTC_LIBRARIES @LIBWEBRTC_LIBRARIES@) + +# The C and C++ flags added by LibWebRTC to the cmake-configured flags. +set(LIBWEBRTC_REQUIRED_C_FLAGS "@LIBWEBRTC_REQUIRED_C_FLAGS@") +set(LIBWEBRTC_REQUIRED_CXX_FLAGS "@LIBWEBRTC_REQUIRED_CXX_FLAGS@") +set(LIBWEBRTC_REQUIRED_C_FLAGS_DEBUG "@LIBWEBRTC_REQUIRED_C_FLAGS_DEBUG@") +set(LIBWEBRTC_REQUIRED_C_FLAGS_RELEASE "@LIBWEBRTC_REQUIRED_C_FLAGS_RELEASE@") +set(LIBWEBRTC_REQUIRED_CXX_FLAGS_DEBUG "@LIBWEBRTC_REQUIRED_CXX_FLAGS_DEBUG@") +set(LIBWEBRTC_REQUIRED_CXX_FLAGS_RELEASE "@LIBWEBRTC_REQUIRED_CXX_FLAGS_RELEASE@") +set(LIBWEBRTC_REQUIRED_SHARED_LINKER_FLAGS "@LIBWEBRTC_REQUIRED_SHARED_LINKER_FLAGS@") +set(LIBWEBRTC_REQUIRED_STATIC_LINKER_FLAGS "@LIBWEBRTC_REQUIRED_STATIC_LINKER_FLAGS@") +set(LIBWEBRTC_DEFINITIONS "@LIBWEBRTC_DEFINITIONS@") + +# The location of the UseLibWebRTC.cmake file. +set(LIBWEBRTC_CMAKE_DIR "@INSTALL_CMAKE_DIR@") +set(LIBWEBRTC_USE_FILE "${LIBWEBRTC_CMAKE_DIR}/UseLibWebRTC.cmake") + +# Import LibWebRTC targets. +include("${LIBWEBRTC_CMAKE_DIR}/LibWebRTCTargets.cmake") \ No newline at end of file diff --git a/CMakeModules/LibWebRTCConfigVersion.cmake.in b/CMakeModules/LibWebRTCConfigVersion.cmake.in new file mode 100644 index 0000000..b94241a --- /dev/null +++ b/CMakeModules/LibWebRTCConfigVersion.cmake.in @@ -0,0 +1,14 @@ +# The full LibWebRTC version number. +set(PACKAGE_VERSION "@LIBWEBRTC_API_VERSION@") + +# This version is compatible only with matching major.minor versions. +if ("@LIBWEBRTC_MAJOR_VERSION@.@LIBWEBRTC_MINOR_VERSION@" VERSION_EQUAL + "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}") + # This version is compatible with equal or lesser patch versions. + if (NOT "@LIBWEBRTC_PATCH_VERSION@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}") + set(PACKAGE_VERSION_COMPATIBLE 1) + if ("@LIBWEBRTC_PATCH_VERSION@" VERSION_EQUAL "${PACKAGE_FIND_VERSION_PATCH}") + set(PACKAGE_VERSION_EXACT 1) + endif () + endif () +endif () diff --git a/CMakeModules/UseLibWebRTC.cmake b/CMakeModules/UseLibWebRTC.cmake new file mode 100644 index 0000000..3b7cda2 --- /dev/null +++ b/CMakeModules/UseLibWebRTC.cmake @@ -0,0 +1,58 @@ +# +# This module is provided as LIBWEBRTC_USE_FILE by LibWebRTCConfig.cmake. +# It can be INCLUDEd in a project to load the needed compiler and linker +# settings to use LibWebRTC. +# + +if (LIBWEBRTC_USE_FILE_INCLUDED) + return() +endif () +set(LIBWEBRTC_USE_FILE_INCLUDED 1) + +# Update CMAKE_MODULE_PATH so includes work. +list(APPEND CMAKE_MODULE_PATH ${LIBWEBRTC_CMAKE_DIR}) + +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) + +list(APPEND LIBWEBRTC_LIBRARIES Threads::Threads) + +if (UNIX AND NOT APPLE) + find_package(X11 REQUIRED) + list(APPEND LIBWEBRTC_LIBRARIES ${X11_LIBRARIES} ${CMAKE_DL_LIBS}) +endif (UNIX AND NOT APPLE) + +if (APPLE) + find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox) + find_library(COREAUDIO_LIBRARY CoreAudio) + find_library(COREFOUNDATION_LIBRARY CoreFoundation) + find_library(COREGRAPHICS_LIBRARY CoreGraphics) + find_library(FOUNDATION_LIBRARY Foundation) + + list(APPEND LIBWEBRTC_LIBRARIES ${AUDIOTOOLBOX_LIBRARY} ${COREAUDIO_LIBRARY} + ${COREFOUNDATION_LIBRARY} ${COREGRAPHICS_LIBRARY} ${FOUNDATION_LIBRARY}) +endif (APPLE) + +if (WIN32) + list(APPEND LIBWEBRTC_LIBRARIES msdmo.lib wmcodecdspuuid.lib dmoguids.lib + ole32.lib secur32.lib winmm.lib ws2_32.lib) +endif (WIN32) + +# Add compiler flags needed to use LibWebRTC. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBWEBRTC_REQUIRED_C_FLAGS}") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${LIBWEBRTC_REQUIRED_C_FLAGS_DEBUG}") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${LIBWEBRTC_REQUIRED_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBWEBRTC_REQUIRED_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${LIBWEBRTC_REQUIRED_CXX_FLAGS_DEBUG}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${LIBWEBRTC_REQUIRED_CXX_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LIBWEBRTC_REQUIRED_SHARED_LINKER_FLAGS}") +set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LIBWEBRTC_REQUIRED_STATIC_LINKER_FLAGS}") + +# Add preprocessor definitions needed to use LibWebRTC. +set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS ${LIBWEBRTC_DEFINITIONS}) + +# Add include directories needed to use LibWebRTC. +include_directories(${LIBWEBRTC_INCLUDE_DIRS}) + +# Add link directories needed to use LibWebRTC. +link_directories(${LIBWEBRTC_LIBRARY_DIRS}) \ No newline at end of file