mirror of
https://github.com/UltraCoderRU/libwebrtc.git
synced 2026-01-28 19:25:12 +00:00
CMake: Retrieve Chromium and WebRTC separately
This commit is contained in:
parent
5c756a458c
commit
5fb6525b72
8 changed files with 169 additions and 213 deletions
|
|
@ -57,3 +57,5 @@ elseif(UNIX AND NOT APPLE)
|
|||
endif(WIN32)
|
||||
|
||||
target_link_libraries(PeerConnection ${PEERCONNECTION_LIBRARIES})
|
||||
|
||||
add_dependencies(PeerConnection libwebrtc_merge)
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
include(Common)
|
||||
|
||||
#
|
||||
# Generate build files
|
||||
#
|
||||
|
||||
set(LIBWEBRTC_GEN_ARGS use_gold=false)
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=false)
|
||||
elseif (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=true)
|
||||
endif (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
|
||||
if (WIN32)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
elseif (APPLE)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
elseif (UNIX AND NOT APPLE)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
endif (WIN32)
|
||||
|
||||
if (NOT BUILD_TESTS)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} rtc_include_tests=false)
|
||||
endif (NOT BUILD_TESTS)
|
||||
|
||||
set(GENERATE_COMMAND gn gen out/Default --args="${LIBWEBRTC_GEN_ARGS}")
|
||||
|
||||
add_libwebrtc_command(libwebrtc_generate_build
|
||||
${CMAKE_BINARY_DIR}/Nevermind
|
||||
"${GENERATE_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Generate build files"
|
||||
libwebrtc_links)
|
||||
|
||||
#
|
||||
# Run ninja
|
||||
#
|
||||
|
||||
set(BUILD_WEBRTC_COMMAND
|
||||
ninja -C out/Default libjingle_peerconnection field_trial_default metrics_default)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_build
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/root.stamp
|
||||
"${BUILD_WEBRTC_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Build WebRTC"
|
||||
libwebrtc_generate_build)
|
||||
|
||||
#
|
||||
# Merge libraries into a single one
|
||||
#
|
||||
|
||||
if (WIN32)
|
||||
set(LIBWEBRTC_OBJ_EXT *.obj)
|
||||
elseif (UNIX AND NOT APPLE)
|
||||
set(LIBWEBRTC_OBJ_EXT *.o)
|
||||
elseif (APPLE)
|
||||
set(LIBWEBRTC_OBJ_EXT *.a)
|
||||
endif (WIN32)
|
||||
|
||||
file(GLOB_RECURSE LIBWEBRTC_OBJ_FILES
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/${LIBWEBRTC_OBJ_EXT})
|
||||
|
||||
file(GLOB_RECURSE LIBWEBRTC_OBJ_EXCLUDED
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/gen*/${LIBWEBRTC_OBJ_EXT}
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/re2c/${LIBWEBRTC_OBJ_EXT}
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/yasm/yasm/${LIBWEBRTC_OBJ_EXT}
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/protobuf/protoc/${LIBWEBRTC_OBJ_EXT}
|
||||
${CMAKE_BINARY_DIR}/src/out/Default/obj/third_party/protobuf/protobuf_full/${LIBWEBRTC_OBJ_EXT})
|
||||
|
||||
list(REMOVE_ITEM LIBWEBRTC_OBJ_FILES ${LIBWEBRTC_OBJ_EXCLUDED})
|
||||
|
||||
add_library(webrtc STATIC ${LIBWEBRTC_OBJ_FILES})
|
||||
|
||||
set_source_files_properties(${LIBWEBRTC_OBJ_FILES} PROPERTIES
|
||||
EXTERNAL_OBJECT true
|
||||
GENERATED true)
|
||||
|
||||
set_target_properties(webrtc PROPERTIES
|
||||
LINKER_LANGUAGE C)
|
||||
|
||||
install(TARGETS webrtc
|
||||
DESTINATION ${LIBWEBRTC_INSTALL_LIB_DIR}
|
||||
COMPONENT Libraries)
|
||||
|
|
@ -1,4 +1 @@
|
|||
add_subdirectory(Fetch)
|
||||
add_subdirectory(Build)
|
||||
add_subdirectory(Test)
|
||||
add_subdirectory(Install)
|
||||
add_subdirectory(WebRTC)
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
include(Common)
|
||||
|
||||
#
|
||||
# Fetch
|
||||
#
|
||||
|
||||
set(GCLIENT_CONFIG_COMMAND
|
||||
${DEPOTTOOLS_GCLIENT_EXECUTABLE} config --name src
|
||||
https://chromium.googlesource.com/external/webrtc.git)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_config
|
||||
${CMAKE_BINARY_DIR}/.gclient
|
||||
"${GCLIENT_CONFIG_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}
|
||||
"Configuring gclient to pull webrtc code")
|
||||
|
||||
#
|
||||
# Sync
|
||||
#
|
||||
|
||||
set(GCLIENT_SYNC_COMMAND
|
||||
${DEPOTTOOLS_GCLIENT_EXECUTABLE} sync
|
||||
--revision ${LIBWEBRTC_WEBRTC_REVISION} -n -D)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_sync
|
||||
${CMAKE_BINARY_DIR}/src/all.gyp
|
||||
"${GCLIENT_SYNC_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}
|
||||
"Retrieving WebRTC source code"
|
||||
libwebrtc_config)
|
||||
|
||||
#
|
||||
# Sync Chromium
|
||||
#
|
||||
|
||||
set(GIT_CLONE_COMMAND
|
||||
git clone ${LIBWEBRTC_CHROMIUM_DEPS} ${CMAKE_BINARY_DIR}/src/chromium/src)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_chromium_deps
|
||||
${CMAKE_BINARY_DIR}/src/chromium/src
|
||||
"${GIT_CLONE_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}
|
||||
"Retrieving Chromium dependencies"
|
||||
libwebrtc_sync)
|
||||
|
||||
#
|
||||
# Update Clang
|
||||
#
|
||||
|
||||
set(UPDATE_CLANG_COMMAND python chromium/src/tools/clang/scripts/update.py)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_clang
|
||||
${CMAKE_BINARY_DIR}/src/chromium/src/third_party/llvm-build
|
||||
"${UPDATE_CLANG_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Updating clang"
|
||||
libwebrtc_chromium_deps)
|
||||
|
||||
#
|
||||
# Setup Links
|
||||
#
|
||||
|
||||
set(SETUP_LINKS_COMMAND python setup_links.py)
|
||||
|
||||
add_libwebrtc_command(libwebrtc_links
|
||||
${CMAKE_BINARY_DIR}/src/tools/clang
|
||||
"${SETUP_LINKS_COMMAND}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Creating symbolic links"
|
||||
libwebrtc_clang)
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
#
|
||||
# Install headers
|
||||
#
|
||||
|
||||
install(
|
||||
DIRECTORY ${CMAKE_BINARY_DIR}/src/webrtc
|
||||
DESTINATION ${LIBWEBRTC_INSTALL_INCLUDE_DIR}
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
#
|
||||
# Create package
|
||||
#
|
||||
|
||||
set(CPACK_PACKAGE_NAME "${LIBWEBRTC_MAJOR_VERSION}")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${LIBWEBRTC_MAJOR_VERSION}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${LIBWEBRTC_MINOR_VERSION}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${LIBWEBRTC_PATCH_VERSION}")
|
||||
|
||||
if (WIN)
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
else (WIN)
|
||||
set(CPACK_GENERATOR "TGZ")
|
||||
endif (WIN)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(LIBWEBRTC_PLATFORM "linux")
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
set(LIBWEBRTC_PLATFORM "mac")
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(LIBWEBRTC_PLATFORM "win32")
|
||||
endif ()
|
||||
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
set(LIBWEBRTC_ARCH "arm")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
|
||||
set(LIBWEBRTC_ARCH "x86")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^x86.64$")
|
||||
set(LIBWEBRTC_ARCH "x64")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
set(LIBWEBRTC_ARCH "x64")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc")
|
||||
set(LIBWEBRTC_ARCH "ppc")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc64")
|
||||
set(LIBWEBRTC_ARCH "ppc64")
|
||||
else ()
|
||||
set(LIBWEBRTC_ARCH "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif ()
|
||||
|
||||
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
||||
set(CPACK_PACKAGE_FILE_NAME "libwebrtc-${LIBWEBRTC_VERSION}-${LIBWEBRTC_PLATFORM}-${LIBWEBRTC_ARCH}")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "libwebrtc")
|
||||
|
||||
include(CPack)
|
||||
121
Targets/WebRTC/CMakeLists.txt
Normal file
121
Targets/WebRTC/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
include(Common)
|
||||
include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(chromium
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}/src/chromium/src
|
||||
|
||||
GIT_REPOSITORY ${LIBWEBRTC_CHROMIUM_DEPS}
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
ExternalProject_Add(webrtc
|
||||
DEPENDS chromium
|
||||
|
||||
PREFIX ${CMAKE_BINARY_DIR}
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}
|
||||
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
|
||||
|
||||
DOWNLOAD_COMMAND ""
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND "")
|
||||
|
||||
#
|
||||
# Configure gclient
|
||||
#
|
||||
set(GCLIENT_CONFIG_COMMAND
|
||||
${DEPOTTOOLS_GCLIENT_EXECUTABLE} config --name src
|
||||
https://chromium.googlesource.com/external/webrtc.git)
|
||||
ExternalProject_Add_Step(webrtc config
|
||||
COMMAND ${GCLIENT_CONFIG_COMMAND}
|
||||
COMMENT "Configure gclient"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
#
|
||||
# Synchronize
|
||||
#
|
||||
set(GCLIENT_SYNC_COMMAND
|
||||
${DEPOTTOOLS_GCLIENT_EXECUTABLE} sync
|
||||
--revision ${LIBWEBRTC_WEBRTC_REVISION} -n -D)
|
||||
ExternalProject_Add_Step(webrtc sync
|
||||
DEPENDEES config
|
||||
COMMAND ${GCLIENT_SYNC_COMMAND}
|
||||
COMMENT "Synchronize WebRTC"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
|
||||
#
|
||||
# Update clang
|
||||
#
|
||||
set(UPDATE_CLANG_COMMAND python chromium/src/tools/clang/scripts/update.py)
|
||||
ExternalProject_Add_Step(webrtc clang
|
||||
DEPENDEES sync
|
||||
COMMAND ${UPDATE_CLANG_COMMAND}
|
||||
COMMENT "Update clang"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src)
|
||||
|
||||
#
|
||||
# Generate symbolic links
|
||||
#
|
||||
set(SETUP_LINKS_COMMAND python setup_links.py)
|
||||
ExternalProject_Add_Step(webrtc links
|
||||
DEPENDEES clang
|
||||
COMMAND ${SETUP_LINKS_COMMAND}
|
||||
COMMENT "Generate symbolic links"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src)
|
||||
|
||||
#
|
||||
# Generate build files
|
||||
#
|
||||
set(LIBWEBRTC_GEN_ARGS use_gold=false)
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=false)
|
||||
elseif (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=true)
|
||||
endif (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||
|
||||
if (WIN32)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
elseif (APPLE)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
elseif (UNIX AND NOT APPLE)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS})
|
||||
endif (WIN32)
|
||||
|
||||
if (NOT BUILD_TESTS)
|
||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} rtc_include_tests=false)
|
||||
endif (NOT BUILD_TESTS)
|
||||
|
||||
set(LIBWEBRTC_GEN_CMD gn gen out/Default --args=\"${LIBWEBRTC_GEN_ARGS}\")
|
||||
add_libwebrtc_command(webrtc-generate
|
||||
"Generate"
|
||||
"${LIBWEBRTC_GEN_CMD}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Generating build files"
|
||||
webrtc)
|
||||
|
||||
#
|
||||
# Run the build command
|
||||
#
|
||||
set(LIBWEBRTC_BUILD_CMD ninja -C out/Default)
|
||||
add_libwebrtc_command(webrtc-build
|
||||
"Build"
|
||||
"${LIBWEBRTC_BUILD_CMD}"
|
||||
${CMAKE_BINARY_DIR}/src
|
||||
"Building WebRTC"
|
||||
webrtc-generate)
|
||||
|
||||
#
|
||||
# Link the library
|
||||
#
|
||||
ExternalProject_Add(libwebrtc
|
||||
DEPENDS webrtc-build
|
||||
INSTALL_COMMAND ""
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/Targets/libwebrtc
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/libwebrtc
|
||||
|
||||
CMAKE_ARGS
|
||||
-DLIBWEBRTC_OUTPUT_DIR:STRING=${CMAKE_BINARY_DIR}/src/out/Default
|
||||
-DLIBWEBRTC_INSTALL_LIB_DIR:PATH=${LIBWEBRTC_INSTALL_LIB_DIR})
|
||||
45
Targets/libwebrtc/CMakeLists.txt
Normal file
45
Targets/libwebrtc/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
project(libwebrtc)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
||||
${CMAKE_SOURCE_DIR}/CMakeModules)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
||||
|
||||
if (WIN32)
|
||||
set(LIBWEBRTC_OBJ_EXT obj)
|
||||
elseif (UNIX AND NOT APPLE)
|
||||
set(LIBWEBRTC_OBJ_EXT o)
|
||||
elseif (APPLE)
|
||||
set(LIBWEBRTC_OBJ_EXT a)
|
||||
endif (WIN32)
|
||||
|
||||
file(GLOB_RECURSE LIBWEBRTC_OBJ_FILES
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/*.${LIBWEBRTC_OBJ_EXT})
|
||||
|
||||
file(GLOB_RECURSE LIBWEBRTC_OBJ_EXCLUDED
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/third_party/yasm/gen*/*.${LIBWEBRTC_OBJ_EXT}
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/third_party/yasm/re2c/*.${LIBWEBRTC_OBJ_EXT}
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/third_party/yasm/yasm/*.${LIBWEBRTC_OBJ_EXT}
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/third_party/protobuf/protoc/*.${LIBWEBRTC_OBJ_EXT}
|
||||
${LIBWEBRTC_OUTPUT_DIR}/obj/third_party/protobuf/protobuf_full/*.${LIBWEBRTC_OBJ_EXT})
|
||||
|
||||
list(LENGTH LIBWEBRTC_OBJ_EXCLUDED LIBWEBRTC_OBJ_EXCLUDED_LEN)
|
||||
|
||||
if(${LIBWEBRTC_OBJ_EXCLUDED_LEN} GREATER "0")
|
||||
list(REMOVE_ITEM LIBWEBRTC_OBJ_FILES ${LIBWEBRTC_OBJ_EXCLUDED})
|
||||
endif()
|
||||
|
||||
add_library(webrtc STATIC ${LIBWEBRTC_OBJ_FILES})
|
||||
|
||||
set_source_files_properties(${LIBWEBRTC_OBJ_FILES} PROPERTIES
|
||||
EXTERNAL_OBJECT true
|
||||
GENERATED true)
|
||||
|
||||
set_target_properties(webrtc PROPERTIES
|
||||
LINKER_LANGUAGE C)
|
||||
|
||||
install(TARGETS webrtc
|
||||
DESTINATION ${LIBWEBRTC_INSTALL_LIB_DIR}
|
||||
COMPONENT Libraries)
|
||||
Loading…
Add table
Reference in a new issue