mirror of
https://github.com/UltraCoderRU/libwebrtc.git
synced 2026-01-28 03:15:11 +00:00
Move Prefix and Platform checks, begin Android support
This commit is contained in:
parent
7bf5bc518a
commit
91e9726542
5 changed files with 91 additions and 87 deletions
25
CMakeModules/LibWebRTCConfig.cmake
Normal file
25
CMakeModules/LibWebRTCConfig.cmake
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#
|
||||||
|
# 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")
|
||||||
48
CMakeModules/LibWebRTCPrefix.cmake
Normal file
48
CMakeModules/LibWebRTCPrefix.cmake
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
#
|
||||||
|
# Generate environment variables
|
||||||
|
#
|
||||||
|
set(WEBRTC_PATH ${CMAKE_SOURCE_DIR}/Dependencies/depot_tools)
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
get_filename_component(DEPOT_TOOLS_PYTHON_PATH
|
||||||
|
"${WEBRTC_PATH}/python276_bin"
|
||||||
|
REALPATH)
|
||||||
|
list(APPEND WEBRTC_PATH ${DEPOT_TOOLS_PYTHON_PATH})
|
||||||
|
endif (WIN32)
|
||||||
|
|
||||||
|
list(APPEND WEBRTC_PATH $ENV{PATH})
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
string(REGEX REPLACE "/" "\\\\" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||||
|
string(REGEX REPLACE ";" "\\\;" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||||
|
else (WIN32)
|
||||||
|
string(REGEX REPLACE ";" ":" WEBRTC_PATH "${WEBRTC_PATH}")
|
||||||
|
endif (WIN32)
|
||||||
|
|
||||||
|
get_filename_component(CHROMIUM_PYTHONPATH
|
||||||
|
"${CMAKE_BINARY_DIR}/src/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)
|
||||||
|
|
||||||
|
file(WRITE ${PREFIX_FILENAME} ${PREFIX_HEADER}${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ PATH=${WEBRTC_PATH}${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ PYTHONPATH=${CHROMIUM_PYTHONPATH}${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ DEPOT_TOOLS_WIN_TOOLCHAIN=0${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ DEPOT_TOOLS_UPDATE=0${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ CHROME_HEADLESS=1${PREFIX_NEWLINE})
|
||||||
|
file(APPEND ${PREFIX_FILENAME} ${PREFIX_EVAL}${PREFIX_NEWLINE})
|
||||||
|
|
@ -15,32 +15,8 @@ else (WIN32)
|
||||||
set(CPACK_GENERATOR "TGZ")
|
set(CPACK_GENERATOR "TGZ")
|
||||||
endif (WIN32)
|
endif (WIN32)
|
||||||
|
|
||||||
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_INCLUDE_TOPLEVEL_DIRECTORY 0)
|
||||||
set(CPACK_PACKAGE_FILE_NAME "libwebrtc-${LIBWEBRTC_VERSION}-${LIBWEBRTC_PLATFORM}-${LIBWEBRTC_ARCH}")
|
set(CPACK_PACKAGE_FILE_NAME "libwebrtc-${LIBWEBRTC_VERSION}-${TARGET_OS}-${TARGET_ARCH}")
|
||||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "libwebrtc")
|
set(CPACK_PACKAGE_INSTALL_DIRECTORY "libwebrtc")
|
||||||
|
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|
@ -1,61 +1,10 @@
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
include(LibWebRTCPrefix)
|
||||||
#
|
include(LibWebRTCConfig)
|
||||||
# Generate environment variables
|
|
||||||
#
|
|
||||||
set(WEBRTC_PATH ${CMAKE_SOURCE_DIR}/Dependencies/depot_tools)
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
get_filename_component(DEPOT_TOOLS_PYTHON_PATH
|
|
||||||
"${DEPOT_TOOLS_PATH}/python276_bin"
|
|
||||||
REALPATH)
|
|
||||||
list(APPEND WEBRTC_PATH ${DEPOT_TOOLS_PYTHON_PATH})
|
|
||||||
endif (WIN32)
|
|
||||||
|
|
||||||
list(APPEND WEBRTC_PATH $ENV{PATH})
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
string(REGEX REPLACE "/" "\\\\" WEBRTC_PATH "${WEBRTC_PATH}")
|
|
||||||
string(REGEX REPLACE ";" "\\\;" WEBRTC_PATH "${WEBRTC_PATH}")
|
|
||||||
else (WIN32)
|
|
||||||
string(REGEX REPLACE ";" ":" WEBRTC_PATH "${WEBRTC_PATH}")
|
|
||||||
endif (WIN32)
|
|
||||||
|
|
||||||
get_filename_component(CHROMIUM_PYTHONPATH
|
|
||||||
"${CMAKE_BINARY_DIR}/src/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)
|
|
||||||
|
|
||||||
file(WRITE ${PREFIX_FILENAME} ${PREFIX_HEADER}${PREFIX_NEWLINE})
|
|
||||||
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ PATH=${WEBRTC_PATH}${PREFIX_NEWLINE})
|
|
||||||
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ PYTHONPATH=${CHROMIUM_PYTHONPATH}${PREFIX_NEWLINE})
|
|
||||||
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ DEPOT_TOOLS_WIN_TOOLCHAIN=0${PREFIX_NEWLINE})
|
|
||||||
file(APPEND ${PREFIX_FILENAME} ${PREFIX_COMMAND}\ DEPOT_TOOLS_UPDATE=0${PREFIX_NEWLINE})
|
|
||||||
file(APPEND ${PREFIX_FILENAME} ${PREFIX_EVAL}${PREFIX_NEWLINE})
|
|
||||||
|
|
||||||
#
|
|
||||||
# Retrieve WebRTC source code
|
|
||||||
#
|
|
||||||
set(GCLIENT_CONFIG_COMMAND ${DEPOTTOOLS_GCLIENT_EXECUTABLE} config --name src https://chromium.googlesource.com/external/webrtc.git)
|
|
||||||
|
|
||||||
set(GCLIENT_SYNC_COMMAND
|
set(GCLIENT_SYNC_COMMAND
|
||||||
${DEPOTTOOLS_GCLIENT_EXECUTABLE} sync
|
${DEPOTTOOLS_GCLIENT_EXECUTABLE} sync
|
||||||
--revision ${LIBWEBRTC_WEBRTC_REVISION} -n -D)
|
--revision ${LIBWEBRTC_WEBRTC_REVISION} -D)
|
||||||
|
|
||||||
set(RETRIEVE_SYSROOT_COMMAND echo)
|
set(RETRIEVE_SYSROOT_COMMAND echo)
|
||||||
if (UNIX AND NOT APPLE)
|
if (UNIX AND NOT APPLE)
|
||||||
|
|
@ -70,9 +19,9 @@ ExternalProject_Add(webrtc-src
|
||||||
SOURCE_DIR ${CMAKE_BINARY_DIR}
|
SOURCE_DIR ${CMAKE_BINARY_DIR}
|
||||||
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
|
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}
|
||||||
|
|
||||||
DOWNLOAD_COMMAND ${PREFIX_EXECUTE} ${GCLIENT_CONFIG_COMMAND}
|
#DOWNLOAD_COMMAND ${PREFIX_EXECUTE} ${GCLIENT_CONFIG_COMMAND}
|
||||||
UPDATE_COMMAND ${PREFIX_EXECUTE} ${GCLIENT_SYNC_COMMAND}
|
DOWNLOAD_COMMAND ${PREFIX_EXECUTE} ${GCLIENT_SYNC_COMMAND}
|
||||||
CONFIGURE_COMMAND ${PREFIX_EXECUTE} ${UPDATE_CLANG_COMMAND}
|
UPDATE_COMMAND ${PREFIX_EXECUTE} ${UPDATE_CLANG_COMMAND}
|
||||||
BUILD_COMMAND ${RETRIEVE_SYSROOT_COMMAND}
|
BUILD_COMMAND ${RETRIEVE_SYSROOT_COMMAND}
|
||||||
|
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
|
|
@ -104,7 +53,7 @@ add_dependencies(webrtc-buildtools webrtc-src)
|
||||||
#
|
#
|
||||||
# Generate build files
|
# Generate build files
|
||||||
#
|
#
|
||||||
set(LIBWEBRTC_GEN_ARGS use_gold=false)
|
set(LIBWEBRTC_GEN_ARGS use_gold=false target_cpu=\\"${TARGET_CPU}\\" target_os=\\"${TARGET_OS}\\")
|
||||||
|
|
||||||
if (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
if (NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
|
||||||
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=false)
|
set(LIBWEBRTC_GEN_ARGS ${LIBWEBRTC_GEN_ARGS} is_debug=false)
|
||||||
|
|
@ -174,4 +123,5 @@ ExternalProject_Add(libwebrtc
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
|
||||||
-DLIBWEBRTC_INCLUDE_DIR:STRING=${CMAKE_BINARY_DIR}/src/webrtc
|
-DLIBWEBRTC_INCLUDE_DIR:STRING=${CMAKE_BINARY_DIR}/src/webrtc
|
||||||
-DLIBWEBRTC_OUTPUT_DIR:PATH=${CMAKE_BINARY_DIR}/src/out/Default)
|
-DLIBWEBRTC_OUTPUT_DIR:PATH=${CMAKE_BINARY_DIR}/src/out/Default
|
||||||
|
-DTARGET_OS:STRING=${TARGET_OS})
|
||||||
|
|
@ -27,11 +27,16 @@ file(GLOB_RECURSE LIBWEBRTC_OBJ_EXCLUDED
|
||||||
|
|
||||||
list(LENGTH LIBWEBRTC_OBJ_EXCLUDED LIBWEBRTC_OBJ_EXCLUDED_LEN)
|
list(LENGTH LIBWEBRTC_OBJ_EXCLUDED LIBWEBRTC_OBJ_EXCLUDED_LEN)
|
||||||
|
|
||||||
if(${LIBWEBRTC_OBJ_EXCLUDED_LEN} GREATER "0")
|
if (${LIBWEBRTC_OBJ_EXCLUDED_LEN} GREATER "0")
|
||||||
list(REMOVE_ITEM LIBWEBRTC_OBJ_FILES ${LIBWEBRTC_OBJ_EXCLUDED})
|
list(REMOVE_ITEM LIBWEBRTC_OBJ_FILES ${LIBWEBRTC_OBJ_EXCLUDED})
|
||||||
endif()
|
endif ()
|
||||||
|
|
||||||
add_library(webrtc STATIC ${LIBWEBRTC_OBJ_FILES})
|
if (TARGET_OS STREQUAL "android")
|
||||||
|
set(ANDROID_NDK ${CMAKE_INSTALL_PREFIX}/src/third_party/android_tools/ndk)
|
||||||
|
add_library(webrtc SHARED ${LIBWEBRTC_OBJ_FILES})
|
||||||
|
else ()
|
||||||
|
add_library(webrtc STATIC ${LIBWEBRTC_OBJ_FILES})
|
||||||
|
endif ()
|
||||||
|
|
||||||
set_source_files_properties(${LIBWEBRTC_OBJ_FILES} PROPERTIES
|
set_source_files_properties(${LIBWEBRTC_OBJ_FILES} PROPERTIES
|
||||||
EXTERNAL_OBJECT true
|
EXTERNAL_OBJECT true
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue