mirror of
https://github.com/UltraCoderRU/libwebrtc.git
synced 2026-01-28 19:25:12 +00:00
Fetch and compile cmake targets
This commit is contained in:
parent
b5715c6c93
commit
fbca31f896
9 changed files with 185 additions and 0 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "Dependencies/depot_tools"]
|
||||||
|
path = Dependencies/depot_tools
|
||||||
|
url = https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||||
14
CMakeLists.txt
Normal file
14
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
cmake_minimum_required(VERSION 3.2)
|
||||||
|
project(libwebrtc)
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
|
||||||
|
${CMAKE_SOURCE_DIR}/CMakeModules)
|
||||||
|
|
||||||
|
find_package(Git REQUIRED)
|
||||||
|
find_package(DepotTools REQUIRED)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
|
|
||||||
|
set(WEBRTC_CHROMIUM_DEPS git@github.com:aisouard/libwebrtc-chromium-deps.git)
|
||||||
|
|
||||||
|
add_subdirectory(Targets)
|
||||||
10
CMakeModules/FindDepotTools.cmake
Normal file
10
CMakeModules/FindDepotTools.cmake
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
find_program(DEPOTTOOLS_GCLIENT_EXECUTABLE
|
||||||
|
NAMES gclient gclient.bat
|
||||||
|
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/Dependencies/depot_tools
|
||||||
|
)
|
||||||
|
|
||||||
|
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
|
||||||
|
find_package_handle_standard_args(DepotTools
|
||||||
|
REQUIRED_VARS DEPOTTOOLS_GCLIENT_EXECUTABLE
|
||||||
|
FAIL_MESSAGE "Could not find the gclient executable."
|
||||||
|
)
|
||||||
1
Dependencies/depot_tools
vendored
Submodule
1
Dependencies/depot_tools
vendored
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 15ab08227b961ddce83db7e41fb83b9288ff9ccc
|
||||||
53
Targets/Build/CMakeLists.txt
Normal file
53
Targets/Build/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
#
|
||||||
|
# Generate build files
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/Nevermind
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env \"PATH=${CMAKE_SOURCE_DIR}/Dependencies/depot_tools:$ENV{PATH}\" gn gen out/Default --args='is_debug=false rtc_include_tests=false'
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
|
COMMENT "Generate build files"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_generate_build ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/Nevermind
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_generate_build webrtc_links)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Run ninja
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/src/out/Default/obj/root.stamp
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env \"PATH=${CMAKE_SOURCE_DIR}/Dependencies/depot_tools:$ENV{PATH}\" ninja -C out/Default
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
|
COMMENT "Build WebRTC"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_build ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/src/out/Default/obj/root.stamp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_build webrtc_generate_build)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Merge libraries into a single one
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/libwebrtc.a
|
||||||
|
COMMAND python webrtc/build/merge_libs.py out/Default ${CMAKE_BINARY_DIR}/libwebrtc.a
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
|
COMMENT "Merging libraries into libwebrtc.a"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_merge ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/libwebrtc.a
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_merge webrtc_build)
|
||||||
4
Targets/CMakeLists.txt
Normal file
4
Targets/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
add_subdirectory(Fetch)
|
||||||
|
add_subdirectory(Build)
|
||||||
|
add_subdirectory(Test)
|
||||||
|
add_subdirectory(Install)
|
||||||
100
Targets/Fetch/CMakeLists.txt
Normal file
100
Targets/Fetch/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
#
|
||||||
|
# Fetch
|
||||||
|
#
|
||||||
|
|
||||||
|
set(gclient_config
|
||||||
|
${DEPOTTOOLS_GCLIENT_EXECUTABLE} config --name src
|
||||||
|
https://chromium.googlesource.com/external/webrtc.git
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/.gclient
|
||||||
|
COMMAND ${gclient_config}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Configuring gclient to pull webrtc code"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_config ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/.gclient
|
||||||
|
)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sync
|
||||||
|
#
|
||||||
|
|
||||||
|
set(gclient_sync
|
||||||
|
${DEPOTTOOLS_GCLIENT_EXECUTABLE} sync -n -D
|
||||||
|
)
|
||||||
|
|
||||||
|
if(WEBRTC_REVISION)
|
||||||
|
set(gclient_sync ${gclient_sync} -r ${WEBRTC_REVISION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/src/all.gyp
|
||||||
|
COMMAND ${gclient_sync}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Retrieving WebRTC source code"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_sync ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/src/all.gyp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_sync webrtc_config)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sync Chromium
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/src/chromium/src/DEPS
|
||||||
|
COMMAND git clone ${WEBRTC_CHROMIUM_DEPS} ${CMAKE_BINARY_DIR}/src/chromium/src
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Retrieving Chromium dependencies"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_chromium_deps ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/src/chromium/src/DEPS
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_chromium_deps webrtc_sync)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Setup Links
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_BINARY_DIR}/src/build
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env \"PATH=${CMAKE_SOURCE_DIR}/Dependencies/depot_tools:$ENV{PATH}\" python setup_links.py
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
|
||||||
|
COMMENT "Creating symbolic links"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_links ALL
|
||||||
|
DEPENDS ${CMAKE_BINARY_DIR}/src/build
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_links webrtc_chromium_deps)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Remove examples
|
||||||
|
#
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT None
|
||||||
|
COMMAND sed -i "s/'include_examples%': 1/'include_examples%': 0/g" src/all.gyp
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
COMMENT "Patching build files"
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
webrtc_patch ALL
|
||||||
|
DEPENDS None
|
||||||
|
)
|
||||||
|
|
||||||
|
add_dependencies(webrtc_patch webrtc_links)
|
||||||
0
Targets/Install/CMakeLists.txt
Normal file
0
Targets/Install/CMakeLists.txt
Normal file
0
Targets/Test/CMakeLists.txt
Normal file
0
Targets/Test/CMakeLists.txt
Normal file
Loading…
Add table
Reference in a new issue