mirror of
https://github.com/UltraCoderRU/libwebrtc.git
synced 2026-01-28 03:15:11 +00:00
Manage depot_tools, replace modules, remove Targets folder, fixes #33
This commit is contained in:
parent
5a602922c0
commit
b59291f093
11 changed files with 381 additions and 308 deletions
|
|
@ -23,5 +23,82 @@ if (NOT WIN32)
|
|||
find_package(PythonInterp 2.7 REQUIRED)
|
||||
endif (NOT WIN32)
|
||||
|
||||
add_subdirectory(Targets)
|
||||
include(ExternalProject)
|
||||
|
||||
if (NOT HAS_OWN_DEPOT_TOOLS)
|
||||
if (WIN32)
|
||||
set(GCLIENT_EXECUTABLE ${CMAKE_BINARY_DIR}/depot_tools/src/depot-tools/gclient.bat)
|
||||
else (WIN32)
|
||||
set(GCLIENT_EXECUTABLE ${CMAKE_BINARY_DIR}/depot_tools/src/depot-tools/gclient)
|
||||
endif (WIN32)
|
||||
|
||||
ExternalProject_Add(
|
||||
depot-tools
|
||||
|
||||
GIT_REPOSITORY https://chromium.googlesource.com/chromium/tools/depot_tools
|
||||
|
||||
PREFIX ${CMAKE_BINARY_DIR}/depot_tools
|
||||
|
||||
CONFIGURE_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS depot-tools)
|
||||
set(DEPOT_TOOLS_PATH ${CMAKE_BINARY_DIR}/depot_tools/src/depot-tools)
|
||||
endif (NOT HAS_OWN_DEPOT_TOOLS)
|
||||
|
||||
ExternalProject_Add(
|
||||
webrtc-src
|
||||
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
GIT_REPOSITORY https://chromium.googlesource.com/external/webrtc
|
||||
|
||||
PREFIX ${CMAKE_BINARY_DIR}/webrtc
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/webrtc/build
|
||||
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/webrtc/src
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}/webrtc/src
|
||||
STAMP_DIR ${CMAKE_BINARY_DIR}/webrtc/stamp
|
||||
TMP_DIR ${CMAKE_BINARY_DIR}/webrtc/tmp
|
||||
|
||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/webrtc/CMakeLists.txt.in ${CMAKE_BINARY_DIR}/webrtc/src/CMakeLists.txt
|
||||
UPDATE_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
|
||||
CMAKE_ARGS
|
||||
-DDEPOT_TOOLS_PATH:PATH=${DEPOT_TOOLS_PATH}
|
||||
-DGCLIENT_EXECUTABLE:PATH=${GCLIENT_EXECUTABLE}
|
||||
-DHAS_OWN_DEPOT_TOOLS:PATH=${HAS_OWN_DEPOT_TOOLS}
|
||||
-DCMAKE_MODULE_PATH:PATH=${CMAKE_MODULE_PATH}
|
||||
-DTARGET_CPU=${TARGET_CPU}
|
||||
-DTARGET_OS=${TARGET_OS}
|
||||
-DWEBRTC_BRANCH_HEAD=${WEBRTC_BRANCH_HEAD}
|
||||
-DWEBRTC_PARENT_DIR:PATH=${CMAKE_BINARY_DIR}/webrtc
|
||||
-DWEBRTC_REVISION=${WEBRTC_REVISION}
|
||||
-DWEBRTC_ROOT_DIR:PATH=${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
ExternalProject_Add(
|
||||
libwebrtc
|
||||
DEPENDS webrtc-src
|
||||
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/libwebrtc
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/libwebrtc
|
||||
|
||||
CMAKE_ARGS
|
||||
-DLIBRARY_TYPE:STRING=${LIBRARY_TYPE}
|
||||
-DTARGET_OS:STRING=${TARGET_OS}
|
||||
-DWEBRTC_OUTPUT_DIR:PATH=${CMAKE_BINARY_DIR}/webrtc/src/out/Default
|
||||
-DWEBRTC_SOURCE_DIR:PATH=${CMAKE_BINARY_DIR}/webrtc/src/webrtc
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
-DINSTALL_CMAKE_DIR:PATH=${CMAKE_BINARY_DIR}/lib/cmake/LibWebRTC
|
||||
)
|
||||
|
||||
include(Install)
|
||||
include(Package)
|
||||
|
||||
export(PACKAGE LibWebRTC)
|
||||
|
|
|
|||
75
CMakeModules/DepotTools.cmake
Normal file
75
CMakeModules/DepotTools.cmake
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
if (HAS_OWN_DEPOT_TOOLS)
|
||||
return()
|
||||
endif (HAS_OWN_DEPOT_TOOLS)
|
||||
|
||||
if (WEBRTC_REVISION)
|
||||
message(STATUS "Retrieving date for commit ${WEBRTC_REVISION}")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ci ${WEBRTC_REVISION}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE _WEBRTC_COMMIT_DATE)
|
||||
|
||||
if (NOT _WEBRTC_COMMIT_DATE)
|
||||
message(FATAL_ERROR "-- Unable to find webrtc commit date at ${WEBRTC_REVISION}")
|
||||
endif (NOT _WEBRTC_COMMIT_DATE)
|
||||
elseif (WEBRTC_BRANCH_HEAD)
|
||||
message(STATUS "Retrieving branch-heads refspecs")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} config remote.origin.fetch +refs/branch-heads/*:refs/remotes/branch-heads/* ^\\+refs/branch-heads/\\*:.*$
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE _ADD_REMOTE_RESULT)
|
||||
|
||||
if (NOT _ADD_REMOTE_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "-- Unable to add branch-heads refspec")
|
||||
endif (NOT _ADD_REMOTE_RESULT EQUAL 0)
|
||||
|
||||
message(STATUS "Fetching ${WEBRTC_BRANCH_HEAD}")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} fetch origin ${WEBRTC_BRANCH_HEAD}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE _WEBRTC_FETCH_RESULT)
|
||||
|
||||
if (NOT _WEBRTC_FETCH_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "-- Unable to fetch ${WEBRTC_BRANCH_HEAD}")
|
||||
endif (NOT _WEBRTC_FETCH_RESULT EQUAL 0)
|
||||
|
||||
message(STATUS "Checking out ${WEBRTC_BRANCH_HEAD}")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} checkout FETCH_HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE _WEBRTC_CHECKOUT_RESULT)
|
||||
|
||||
if (NOT _WEBRTC_CHECKOUT_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "-- Unable to checkout ${WEBRTC_BRANCH_HEAD}")
|
||||
endif (NOT _WEBRTC_CHECKOUT_RESULT EQUAL 0)
|
||||
|
||||
message(STATUS "Retrieving date for commit ${WEBRTC_BRANCH_HEAD}")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ci
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE _WEBRTC_COMMIT_DATE
|
||||
RESULT_VARIABLE _WEBRTC_COMMIT_DATE_RESULT)
|
||||
|
||||
if (NOT _WEBRTC_COMMIT_DATE_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "-- Unable to retrieve the commit date")
|
||||
endif (NOT _WEBRTC_COMMIT_DATE_RESULT EQUAL 0)
|
||||
else (WEBRTC_REVISION)
|
||||
message(FATAL_ERROR "-- Both WEBRTC_REVISION and WEBRTC_BRANCH_HEAD variables are undefined")
|
||||
endif (WEBRTC_REVISION)
|
||||
|
||||
string(STRIP ${_WEBRTC_COMMIT_DATE} _WEBRTC_COMMIT_DATE)
|
||||
message(STATUS "Retrieving depot_tools commit before ${_WEBRTC_COMMIT_DATE}")
|
||||
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-list -n 1 --before=\"${_WEBRTC_COMMIT_DATE}\" master
|
||||
WORKING_DIRECTORY ${DEPOT_TOOLS_PATH}
|
||||
OUTPUT_VARIABLE _DEPOT_TOOLS_COMMIT)
|
||||
|
||||
if (NOT _DEPOT_TOOLS_COMMIT)
|
||||
message(FATAL_ERROR "-- Unable to find depot_tools commit before ${_WEBRTC_COMMIT_DATE}")
|
||||
endif (NOT _DEPOT_TOOLS_COMMIT)
|
||||
|
||||
string(STRIP ${_DEPOT_TOOLS_COMMIT} _DEPOT_TOOLS_COMMIT)
|
||||
message(STATUS "Checking out depot_tools to commit ${_DEPOT_TOOLS_COMMIT}")
|
||||
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${_DEPOT_TOOLS_COMMIT}
|
||||
WORKING_DIRECTORY ${DEPOT_TOOLS_PATH}
|
||||
RESULT_VARIABLE _DEPOT_TOOLS_CHECKED_OUT)
|
||||
|
||||
if (NOT _DEPOT_TOOLS_CHECKED_OUT EQUAL 0)
|
||||
message(FATAL_ERROR "-- Unable to checkout depot_tools to commit ${_DEPOT_TOOLS_COMMIT}")
|
||||
endif (NOT _DEPOT_TOOLS_CHECKED_OUT EQUAL 0)
|
||||
|
|
@ -1,58 +1,48 @@
|
|||
if(PREFIX_INCLUDED)
|
||||
return()
|
||||
endif(PREFIX_INCLUDED)
|
||||
set(PREFIX_INCLUDED true)
|
||||
|
||||
#
|
||||
# Generate environment variables
|
||||
#
|
||||
if (DEPOT_TOOLS_PATH)
|
||||
set(WEBRTC_PATH ${DEPOT_TOOLS_PATH})
|
||||
else (DEPOT_TOOLS_PATH)
|
||||
set(WEBRTC_PATH ${CMAKE_BINARY_DIR}/depot_tools)
|
||||
endif (DEPOT_TOOLS_PATH)
|
||||
set(_WEBRTC_PATH ${DEPOT_TOOLS_PATH})
|
||||
set(_DEPOT_TOOLS_ENV PATH=${_WEBRTC_PATH})
|
||||
|
||||
if (WIN32)
|
||||
get_filename_component(DEPOT_TOOLS_PYTHON_PATH
|
||||
"${WEBRTC_PATH}/python276_bin"
|
||||
"${_WEBRTC_PATH}/python276_bin"
|
||||
REALPATH)
|
||||
list(APPEND WEBRTC_PATH ${DEPOT_TOOLS_PYTHON_PATH})
|
||||
list(APPEND _WEBRTC_PATH ${DEPOT_TOOLS_PYTHON_PATH})
|
||||
endif (WIN32)
|
||||
|
||||
list(APPEND WEBRTC_PATH $ENV{PATH})
|
||||
list(APPEND _WEBRTC_PATH $ENV{PATH})
|
||||
|
||||
if (WIN32)
|
||||
string(REGEX REPLACE "/" "\\\\" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||
string(REGEX REPLACE ";" "\\\;" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||
string(REGEX REPLACE "/" "\\\\" _WEBRTC_PATH "${_WEBRTC_PATH}")
|
||||
string(REGEX REPLACE ";" "\\\;" _WEBRTC_PATH "${_WEBRTC_PATH}")
|
||||
else (WIN32)
|
||||
string(REGEX REPLACE ";" ":" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||
string(REGEX REPLACE ";" ":" _WEBRTC_PATH "${_WEBRTC_PATH}")
|
||||
endif (WIN32)
|
||||
|
||||
get_filename_component(CHROMIUM_PYTHONPATH
|
||||
"${CMAKE_BINARY_DIR}/src/build"
|
||||
get_filename_component(_CHROMIUM_PYTHONPATH
|
||||
"${CMAKE_SOURCE_DIR}/build"
|
||||
REALPATH)
|
||||
|
||||
if (WIN32)
|
||||
set(PREFIX_FILENAME ${CMAKE_BINARY_DIR}/prefix.bat)
|
||||
set(PREFIX_COMMAND set)
|
||||
set(PREFIX_HEADER "@ECHO OFF")
|
||||
set(PREFIX_EVAL "%*")
|
||||
set(PREFIX_EXECUTE cmd /c ${PREFIX_FILENAME})
|
||||
set(PREFIX_NEWLINE \r\n)
|
||||
else (WIN32)
|
||||
set(PREFIX_FILENAME ${CMAKE_BINARY_DIR}/prefix.sh)
|
||||
set(PREFIX_COMMAND export)
|
||||
set(PREFIX_HEADER "")
|
||||
set(PREFIX_EVAL eval\ $@)
|
||||
set(PREFIX_EXECUTE /bin/sh ${PREFIX_FILENAME})
|
||||
set(PREFIX_NEWLINE \n)
|
||||
endif (WIN32)
|
||||
if (WIN32)
|
||||
set(PREFIX_FILENAME ${CMAKE_BINARY_DIR}/prefix.bat)
|
||||
set(PREFIX_COMMAND set)
|
||||
set(PREFIX_HEADER "@ECHO OFF")
|
||||
set(PREFIX_EVAL "%*")
|
||||
set(PREFIX_EXECUTE cmd /c ${PREFIX_FILENAME})
|
||||
set(PREFIX_NEWLINE \r\n)
|
||||
else (WIN32)
|
||||
set(PREFIX_FILENAME ${CMAKE_BINARY_DIR}/prefix.sh)
|
||||
set(PREFIX_COMMAND export)
|
||||
set(PREFIX_HEADER "")
|
||||
set(PREFIX_EVAL eval\ $@)
|
||||
set(PREFIX_EXECUTE /bin/sh ${PREFIX_FILENAME})
|
||||
set(PREFIX_NEWLINE \n)
|
||||
endif (WIN32)
|
||||
|
||||
file(WRITE ${PREFIX_FILENAME} "${PREFIX_HEADER}
|
||||
${PREFIX_COMMAND} PATH=${_WEBRTC_PATH}
|
||||
${PREFIX_COMMAND} PYTHONPATH=${_CHROMIUM_PYTHONPATH}
|
||||
${PREFIX_COMMAND} DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||
${PREFIX_COMMAND} DEPOT_TOOLS_UPDATE=0
|
||||
${PREFIX_COMMAND} CHROME_HEADLESS=1
|
||||
${PREFIX_EVAL}
|
||||
")
|
||||
|
||||
file(WRITE ${PREFIX_FILENAME} "${PREFIX_HEADER}
|
||||
${PREFIX_COMMAND} PATH=${WEBRTC_PATH}
|
||||
${PREFIX_COMMAND} PYTHONPATH=${CHROMIUM_PYTHONPATH}
|
||||
${PREFIX_COMMAND} DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||
${PREFIX_COMMAND} DEPOT_TOOLS_UPDATE=0
|
||||
${PREFIX_COMMAND} CHROME_HEADLESS=1
|
||||
${PREFIX_EVAL}
|
||||
")
|
||||
22
CMakeModules/GClient.cmake
Normal file
22
CMakeModules/GClient.cmake
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
file(WRITE ${WEBRTC_PARENT_DIR}/.gclient "solutions = [
|
||||
{
|
||||
\"url\": \"https://chromium.googlesource.com/external/webrtc.git\",
|
||||
\"managed\": False,
|
||||
\"name\": \"src\",
|
||||
\"deps_file\": \"DEPS\",
|
||||
\"custom_deps\": {},
|
||||
},
|
||||
]
|
||||
")
|
||||
|
||||
if (TARGET_OS STREQUAL "android")
|
||||
file(APPEND ${WEBRTC_PARENT_DIR}/.gclient "target_os = [\"android\", \"unix\"]")
|
||||
elseif (TARGET_OS STREQUAL "ios")
|
||||
file(APPEND ${WEBRTC_PARENT_DIR}/.gclient "target_os = [\"ios\", \"mac\"]")
|
||||
elseif (TARGET_OS STREQUAL "linux")
|
||||
file(APPEND ${WEBRTC_PARENT_DIR}/.gclient "target_os = [\"unix\"]")
|
||||
elseif (TARGET_OS STREQUAL "mac")
|
||||
file(APPEND ${WEBRTC_PARENT_DIR}/.gclient "target_os = [\"mac\"]")
|
||||
elseif (TARGET_OS STREQUAL "win")
|
||||
file(APPEND ${WEBRTC_PARENT_DIR}/.gclient "target_os = [\"win\"]")
|
||||
endif (TARGET_OS STREQUAL "android")
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
if(GCLIENT_CONFIG_INCLUDED)
|
||||
return()
|
||||
endif(GCLIENT_CONFIG_INCLUDED)
|
||||
set(GCLIENT_CONFIG_INCLUDED true)
|
||||
|
||||
#
|
||||
# Retrieve WebRTC source code
|
||||
#
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/.gclient "solutions = [
|
||||
{
|
||||
\"url\": \"https://chromium.googlesource.com/external/webrtc.git\",
|
||||
\"managed\": False,
|
||||
\"name\": \"src\",
|
||||
\"deps_file\": \"DEPS\",
|
||||
\"custom_deps\": {},
|
||||
},
|
||||
]
|
||||
")
|
||||
|
||||
if (TARGET_OS STREQUAL "android")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/.gclient "target_os = [\"android\", \"unix\"]")
|
||||
elseif (TARGET_OS STREQUAL "ios")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/.gclient "target_os = [\"ios\", \"mac\"]")
|
||||
elseif (TARGET_OS STREQUAL "linux")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/.gclient "target_os = [\"unix\"]")
|
||||
elseif (TARGET_OS STREQUAL "mac")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/.gclient "target_os = [\"mac\"]")
|
||||
elseif (TARGET_OS STREQUAL "win")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}/.gclient "target_os = [\"win\"]")
|
||||
endif (TARGET_OS STREQUAL "android")
|
||||
35
CMakeModules/Gn.cmake
Normal file
35
CMakeModules/Gn.cmake
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
set(_GEN_ARGS "use_gold=false target_cpu=\\\"${TARGET_CPU}\\\" target_os=\\\"${TARGET_OS}\\\"")
|
||||
|
||||
if (MSVC OR XCODE)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} is_debug=false")
|
||||
elseif (CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} is_debug=true")
|
||||
else (MSVC OR XCODE)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} is_debug=false")
|
||||
endif (MSVC OR XCODE)
|
||||
|
||||
if (BUILD_TESTS)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} rtc_include_tests=true")
|
||||
else (BUILD_TESTS)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} rtc_include_tests=false")
|
||||
endif (BUILD_TESTS)
|
||||
|
||||
if (GN_EXTRA_ARGS)
|
||||
set(_GEN_ARGS "${_GEN_ARGS} ${GN_EXTRA_ARGS}")
|
||||
endif (GN_EXTRA_ARGS)
|
||||
|
||||
set(_GN_OUT_DIR out/Default)
|
||||
set(_GEN_COMMAND_LINE gn gen ${_GN_OUT_DIR} --args=\"${_GEN_ARGS}\")
|
||||
|
||||
if (WIN32)
|
||||
set(_SCRIPT_SUFFIX .bat)
|
||||
elseif (UNIX)
|
||||
set(_SCRIPT_SUFFIX .sh)
|
||||
set(_GEN_COMMAND sh)
|
||||
endif (WIN32)
|
||||
|
||||
string(REPLACE ";" " " _GEN_COMMAND_STR "${_GEN_COMMAND_LINE}")
|
||||
set(_GN_SCRIPT_FILENAME ${WEBRTC_PARENT_DIR}/gn-gen${_SCRIPT_SUFFIX})
|
||||
file(WRITE ${_GN_SCRIPT_FILENAME} ${_GEN_COMMAND_STR})
|
||||
|
||||
set(_GEN_COMMAND ${_GEN_COMMAND} ${_GN_SCRIPT_FILENAME})
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
if(LIBWEBRTC_COMMAND_INCLUDED)
|
||||
return()
|
||||
endif(LIBWEBRTC_COMMAND_INCLUDED)
|
||||
set(LIBWEBRTC_COMMAND_INCLUDED true)
|
||||
|
||||
include(CMakeParseArguments)
|
||||
include(Prefix)
|
||||
|
||||
function(libwebrtc_command)
|
||||
set(ONE_VALUE_ARGS NAME COMMENT DEPENDS WORKING_DIRECTORY)
|
||||
set(MULTI_VALUE_ARGS COMMAND)
|
||||
cmake_parse_arguments(COMMAND "" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN} )
|
||||
|
||||
set(CMF_DIR ${CMAKE_BINARY_DIR}/CMakeFiles)
|
||||
set(STAMP_FILE "${CMF_DIR}/${COMMAND_NAME}-complete")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${STAMP_FILE}
|
||||
COMMENT ${COMMAND_COMMENT}
|
||||
COMMAND ${PREFIX_EXECUTE} ${COMMAND_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${STAMP_FILE}
|
||||
WORKING_DIRECTORY ${COMMAND_WORKING_DIRECTORY}
|
||||
)
|
||||
|
||||
add_custom_target(${COMMAND_NAME} ALL DEPENDS ${STAMP_FILE})
|
||||
|
||||
add_dependencies(${COMMAND_NAME} ${COMMAND_DEPENDS})
|
||||
endfunction()
|
||||
|
|
@ -1,205 +0,0 @@
|
|||
include(ExternalProject)
|
||||
include(LibWebRTCCommand)
|
||||
include(GClientConfig)
|
||||
|
||||
set(_DOWNLOAD_COMMAND ${GCLIENT_EXECUTABLE} sync --with_branch_heads --nohooks)
|
||||
if (WEBRTC_REVISION)
|
||||
set(_DOWNLOAD_COMMAND ${_DOWNLOAD_COMMAND} --revision ${WEBRTC_REVISION})
|
||||
endif (WEBRTC_REVISION)
|
||||
|
||||
ExternalProject_Add(
|
||||
webrtc-src
|
||||
PREFIX ${CMAKE_BINARY_DIR}
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}
|
||||
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
|
||||
|
||||
DOWNLOAD_COMMAND ${PREFIX_EXECUTE} ${_DOWNLOAD_COMMAND}
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS webrtc-src)
|
||||
if (NOT WEBRTC_REVISION)
|
||||
libwebrtc_command(
|
||||
NAME webrtc-fetch-refs
|
||||
COMMAND ${GIT_EXECUTABLE} fetch origin ${WEBRTC_BRANCH_HEAD}
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src"
|
||||
COMMENT "Fetching branch heads"
|
||||
DEPENDS webrtc-src
|
||||
)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-checkout-fetch-head
|
||||
COMMAND ${GIT_EXECUTABLE} checkout FETCH_HEAD
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src"
|
||||
COMMENT "Checking out fetch head"
|
||||
DEPENDS webrtc-fetch-refs
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS webrtc-checkout-fetch-head)
|
||||
endif (NOT WEBRTC_REVISION)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-update-clang
|
||||
COMMAND ${PYTHON_EXECUTABLE} src/tools/clang/scripts/update.py
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Updating clang"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS webrtc-update-clang)
|
||||
if (UNIX AND NOT APPLE)
|
||||
libwebrtc_command(
|
||||
NAME webrtc-install-sysroot
|
||||
COMMAND ${CMAKE_BINARY_DIR}/src/build/linux/sysroot_scripts/install-sysroot.py --running-as-hook
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Installing Linux sysroots"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
set(_NEXT_DEPENDS webrtc-install-sysroot)
|
||||
|
||||
set(_PLATFORM linux*)
|
||||
set(_FOLDER linux64)
|
||||
elseif (APPLE)
|
||||
set(_PLATFORM darwin)
|
||||
set(_FOLDER mac)
|
||||
elseif (WIN32)
|
||||
libwebrtc_command(
|
||||
NAME webrtc-vs-toolchain
|
||||
COMMAND ${PYTHON_EXECUTABLE} src/build/vs_toolchain.py update
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Updating Visual Studio toolchain"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
set(_NEXT_DEPENDS webrtc-vs-toolchain)
|
||||
|
||||
set(_PLATFORM win32)
|
||||
set(_FOLDER win)
|
||||
set(_SUFFIX .exe)
|
||||
endif (UNIX AND NOT APPLE)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-fetch-gn
|
||||
COMMAND download_from_google_storage --no_resume --platform=${_PLATFORM} --no_auth --bucket chromium-gn -s src/buildtools/${_FOLDER}/gn${_SUFFIX}.sha1
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Fetching gn binary"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-fetch-clang-format
|
||||
COMMAND download_from_google_storage --no_resume --platform=${_PLATFORM} --no_auth --bucket chromium-clang-format -s src/buildtools/${_FOLDER}/clang-format${_SUFFIX}.sha1
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Fetching clang-format binary"
|
||||
DEPENDS webrtc-fetch-gn
|
||||
)
|
||||
|
||||
#
|
||||
# Android dependencies
|
||||
set(_NEXT_DEPENDS webrtc-fetch-clang-format)
|
||||
if (TARGET_OS STREQUAL "android")
|
||||
libwebrtc_command(
|
||||
NAME webrtc-android-fetch-play-services
|
||||
COMMAND ${PYTHON_EXECUTABLE} src/build/android/play_services/update.py download
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Fetching Google Play Services"
|
||||
DEPENDS webrtc-fetch-clang-format
|
||||
)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-android-update-lastchange
|
||||
COMMAND ${PYTHON_EXECUTABLE} src/build/util/lastchange.py -o src/build/util/LASTCHANGE
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Updating src/build/util/LASTCHANGE"
|
||||
DEPENDS webrtc-android-fetch-play-services
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS webrtc-android-update-lastchange)
|
||||
foreach(_DEPENDENCY_NAME android-support-test-runner espresso guava hamcrest javax-inject)
|
||||
string(REPLACE "-" "_" _DEPENDENCY_FOLDER ${_DEPENDENCY_NAME})
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-android-fetch-${_DEPENDENCY_NAME}
|
||||
COMMAND ${PYTHON_EXECUTABLE} src/build/android/update_deps/update_third_party_deps.py download -b chromium-${_DEPENDENCY_NAME} -l third_party/${_DEPENDENCY_FOLDER}
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Fetching Android dependency: ${_DEPENDENCY_NAME}"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS webrtc-android-fetch-${_DEPENDENCY_NAME})
|
||||
endforeach(_DEPENDENCY_NAME)
|
||||
endif (TARGET_OS STREQUAL "android")
|
||||
|
||||
#
|
||||
# Generate build files
|
||||
set(_GEN_ARGS use_gold=false target_cpu=\\"${TARGET_CPU}\\" target_os=\\"${TARGET_OS}\\")
|
||||
|
||||
if (MSVC OR XCODE)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} is_debug=$<$<CONFIG:Debug>:true>$<$<CONFIG:Release>:false>)
|
||||
elseif (CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} is_debug=true)
|
||||
else (MSVC OR XCODE)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} is_debug=false)
|
||||
endif (MSVC OR XCODE)
|
||||
|
||||
if (BUILD_TESTS)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} rtc_include_tests=true)
|
||||
else (BUILD_TESTS)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} rtc_include_tests=false)
|
||||
endif (BUILD_TESTS)
|
||||
|
||||
if (LIBRARY_TYPE STREQUAL STATIC)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} is_component_build=false)
|
||||
else (LIBRARY_TYPE STREQUAL STATIC)
|
||||
set(_GEN_ARGS ${_GEN_ARGS} is_component_build=true)
|
||||
endif (LIBRARY_TYPE STREQUAL STATIC)
|
||||
|
||||
set(_GEN_ARGS ${_GEN_ARGS} ${GN_EXTRA_ARGS})
|
||||
|
||||
if (WIN32)
|
||||
set(_GEN_COMMAND gn gen out/Default --args="${_GEN_ARGS}")
|
||||
elseif (UNIX)
|
||||
set(_GEN_COMMAND gn gen out/Default --args='"${_GEN_ARGS}"')
|
||||
endif (WIN32)
|
||||
|
||||
libwebrtc_command(
|
||||
NAME webrtc-generate
|
||||
COMMAND ${_GEN_COMMAND}
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src"
|
||||
COMMENT "Generating build files"
|
||||
DEPENDS ${_NEXT_DEPENDS}
|
||||
)
|
||||
|
||||
#
|
||||
# Run ninja
|
||||
libwebrtc_command(
|
||||
NAME webrtc-build
|
||||
COMMAND ninja ${NINJA_ARGS} -C out/Default
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src"
|
||||
COMMENT "Building WebRTC"
|
||||
DEPENDS webrtc-generate
|
||||
)
|
||||
|
||||
#
|
||||
# Link the library
|
||||
ExternalProject_Add(
|
||||
libwebrtc
|
||||
DEPENDS webrtc-build
|
||||
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/Targets/libwebrtc
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/libwebrtc
|
||||
|
||||
CMAKE_ARGS
|
||||
-DLIBRARY_TYPE:STRING=${LIBRARY_TYPE}
|
||||
-DTARGET_OS:STRING=${TARGET_OS}
|
||||
-DWEBRTC_OUTPUT_DIR:PATH=${CMAKE_BINARY_DIR}/src/out/Default
|
||||
-DWEBRTC_SOURCE_DIR:PATH=${CMAKE_BINARY_DIR}/src/webrtc
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
-DINSTALL_CMAKE_DIR:PATH=${CMAKE_BINARY_DIR}/lib/cmake/LibWebRTC
|
||||
)
|
||||
|
||||
include(Install)
|
||||
include(Package)
|
||||
27
depot_tools/CMakeLists.txt
Normal file
27
depot_tools/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
if (DEPOT_TOOLS_PATH)
|
||||
return()
|
||||
endif (DEPOT_TOOLS_PATH)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
if (WIN32)
|
||||
set(GCLIENT_EXECUTABLE ${CMAKE_BINARY_DIR}/depot_tools/gclient.bat)
|
||||
else (WIN32)
|
||||
set(GCLIENT_EXECUTABLE ${CMAKE_BINARY_DIR}/depot_tools/gclient)
|
||||
endif (WIN32)
|
||||
|
||||
ExternalProject_Add(
|
||||
depot-tools
|
||||
|
||||
GIT_REPOSITORY https://chromium.googlesource.com/chromium/tools/depot_tools
|
||||
|
||||
PREFIX ${CMAKE_BINARY_DIR}/depot_tools
|
||||
|
||||
CONFIGURE_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
)
|
||||
|
||||
set(_NEXT_DEPENDS depot-tools)
|
||||
110
webrtc/CMakeLists.txt.in
Normal file
110
webrtc/CMakeLists.txt.in
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
cmake_minimum_required(VERSION 3.3)
|
||||
project(webrtc)
|
||||
|
||||
find_package(Git REQUIRED)
|
||||
if (WIN32)
|
||||
set(PYTHON_EXECUTABLE ${DEPOT_TOOLS_PATH}/python.bat)
|
||||
else (WIN32)
|
||||
find_package(PythonInterp 2.7 REQUIRED)
|
||||
endif (WIN32)
|
||||
|
||||
include(DepotTools)
|
||||
include(GClient)
|
||||
include(Environment)
|
||||
|
||||
message(STATUS "Synchronizing webrtc")
|
||||
set(_SYNC_COMMAND ${GCLIENT_EXECUTABLE} sync --nohooks)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_SYNC_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _SYNCHRONIZED_WEBRTC)
|
||||
|
||||
if (NOT _SYNCHRONIZED_WEBRTC EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to synchronize webrtc ${PREFIX_EXECUTE} ${_SYNC_COMMAND}")
|
||||
endif (NOT _SYNCHRONIZED_WEBRTC EQUAL 0)
|
||||
|
||||
message(STATUS "Updating clang")
|
||||
set(_UPDATE_CLANG_COMMAND ${PYTHON_EXECUTABLE} src/tools/clang/scripts/update.py)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_UPDATE_CLANG_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _CLANG_UPDATED)
|
||||
|
||||
if (NOT _CLANG_UPDATED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to update clang")
|
||||
endif (NOT _CLANG_UPDATED EQUAL 0)
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
message(STATUS "Retrieving sysroot")
|
||||
set(_SYSROOT_COMMAND ${PYTHON_EXECUTABLE} ${WEBRTC_PARENT_DIR}/src/build/linux/sysroot_scripts/install-sysroot.py --running-as-hook)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_SYSROOT_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _SYSROOT_RETRIEVED)
|
||||
|
||||
if (NOT _SYSROOT_RETRIEVED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to retrieve the sysroot")
|
||||
endif (NOT _SYSROOT_RETRIEVED EQUAL 0)
|
||||
|
||||
set(_PLATFORM linux*)
|
||||
set(_FOLDER linux64)
|
||||
elseif (APPLE)
|
||||
set(_PLATFORM darwin)
|
||||
set(_FOLDER mac)
|
||||
elseif (WIN32)
|
||||
message(STATUS "Retrieving Visual Studio toolchain")
|
||||
set(_TOOLCHAIN_COMMAND ${PYTHON_EXECUTABLE} src/build/vs_toolchain.py update)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_TOOLCHAIN_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _VS_TOOLCHAIN_RETRIEVED)
|
||||
|
||||
if (NOT _VS_TOOLCHAIN_RETRIEVED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to retrieve Visual Studio toolchain")
|
||||
endif (NOT _VS_TOOLCHAIN_RETRIEVED EQUAL 0)
|
||||
|
||||
set(_PLATFORM win32)
|
||||
set(_FOLDER win)
|
||||
set(_SUFFIX .exe)
|
||||
endif (UNIX AND NOT APPLE)
|
||||
|
||||
message(STATUS "Fetching gn${_SUFFIX} for ${_PLATFORM}")
|
||||
set(_GN_COMMAND download_from_google_storage --no_resume --platform=${_PLATFORM}
|
||||
--no_auth --bucket chromium-gn
|
||||
-s src/buildtools/${_FOLDER}/gn${_SUFFIX}.sha1)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_GN_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _GN_RETRIEVED)
|
||||
|
||||
if (NOT _GN_RETRIEVED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to retrieve clang-format${_SUFFIX}")
|
||||
endif (NOT _GN_RETRIEVED EQUAL 0)
|
||||
|
||||
message(STATUS "Fetching clang-format${_SUFFIX} for ${_PLATFORM}")
|
||||
set(_CLANG_FORMAT_COMMAND download_from_google_storage --no_resume
|
||||
--platform=${_PLATFORM} --no_auth --bucket chromium-clang-format
|
||||
-s src/buildtools/${_FOLDER}/clang-format${_SUFFIX}.sha1)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_CLANG_FORMAT_COMMAND}
|
||||
WORKING_DIRECTORY ${WEBRTC_PARENT_DIR}
|
||||
RESULT_VARIABLE _CLANG_FORMAT_RETRIEVED)
|
||||
|
||||
if (NOT _CLANG_FORMAT_RETRIEVED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to retrieve clang-format${_SUFFIX}")
|
||||
endif (NOT _CLANG_FORMAT_RETRIEVED EQUAL 0)
|
||||
|
||||
include(Gn)
|
||||
|
||||
message(STATUS "Generating build files: ${_GEN_COMMAND}")
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_GEN_COMMAND}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE _BUILD_GENERATED)
|
||||
|
||||
if (NOT _BUILD_GENERATED EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to execute ${_GEN_COMMAND}")
|
||||
endif (NOT _BUILD_GENERATED EQUAL 0)
|
||||
|
||||
message(STATUS "Running ninja")
|
||||
set(_NINJA_COMMAND ninja ${NINJA_ARGS} -C out/Default)
|
||||
execute_process(COMMAND ${PREFIX_EXECUTE} ${_NINJA_COMMAND}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
RESULT_VARIABLE _NINJA_DONE)
|
||||
|
||||
if (NOT _NINJA_DONE EQUAL 0)
|
||||
message(FATAL_ERROR "Unable to build webrtc")
|
||||
endif (NOT _NINJA_DONE EQUAL 0)
|
||||
Loading…
Add table
Reference in a new issue