Merge dependent static library to single throughnet static library

master
Ryan Lee 2016-06-25 12:13:50 +09:00
parent e0d9e63914
commit cb327e67d8
3 changed files with 358 additions and 164 deletions

View File

@ -39,7 +39,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
message(STATUS "CMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'")
# ============================================================================
# Platform or compiler specific configurations
# ============================================================================
@ -53,16 +52,12 @@ if (MSVC)
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
endif(${flag_var} MATCHES "/MD")
endforeach(flag_var)
endif()
if (UNIX)
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
else()
elseif (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
elseif (UNIX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
endif()
@ -71,6 +66,7 @@ endif()
# ============================================================================
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/")
include(Mergestaticlibs)
# WebRTC
find_package(WebRTC)
@ -82,78 +78,87 @@ find_package(Websocketpp)
find_package(Asio)
# ============================================================================
# Headers and sources.
# ============================================================================
set(HEADERS
"src/throughnet.h"
"src/control.h"
"src/controlobserver.h"
"src/peer.h"
"src/signalconnection.h"
"src/fakeaudiocapturemodule.h"
)
"src/throughnet.h"
"src/control.h"
"src/controlobserver.h"
"src/peer.h"
"src/signalconnection.h"
"src/fakeaudiocapturemodule.h"
)
set(SOURCES
"src/throughnet.cc"
"src/control.cc"
"src/peer.cc"
"src/signalconnection.cc"
"src/fakeaudiocapturemodule.cc"
)
"src/throughnet.cc"
"src/control.cc"
"src/peer.cc"
"src/signalconnection.cc"
"src/fakeaudiocapturemodule.cc"
)
# ============================================================================
# Target settings
# ============================================================================
set(_TN_INTERNAL_DEFINES
${WEBRTC_DEFINES}
${WEBSOCKETPP_DEFINES}
)
set(_TN_INTERNAL_INCLUDE_DIR
"${WEBRTC_INCLUDE_DIR}"
"${ASIO_INCLUDE_DIR}"
"${WEBSOCKETPP_INCLUDE_DIIR}"
"${WEBRTC_BORING_SSL_INCLUDE}"
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/src"
)
"${WEBRTC_INCLUDE_DIR}"
"${ASIO_INCLUDE_DIR}"
"${WEBSOCKETPP_INCLUDE_DIIR}"
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/src"
)
set(_TN_INTERNAL_LIBRARIES
"${WEBRTC_LIBRARIES}"
"${WEBRTC_LIBRARIES_INTERNAL}"
"${WEBRTC_LIBRARIES_EXTERNAL}"
)
set(TN_INCLUDE_DIRECTORY
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/src"
)
"${PROJECT_BINARY_DIR}"
"${PROJECT_SOURCE_DIR}/src"
)
if (TN_WITH_STATIC)
add_library(throughnet STATIC
${HEADERS}
${SOURCES})
target_compile_definitions(throughnet PRIVATE ${WEBRTC_DEFINES} ${WEBSOCKETPP_DEFINES})
add_library(throughnet STATIC ${HEADERS} ${SOURCES})
target_compile_definitions(throughnet PRIVATE ${_TN_INTERNAL_DEFINES})
target_include_directories(throughnet PRIVATE ${_TN_INTERNAL_INCLUDE_DIR} )
if (WIN32)
# Windows uses the same .lib ending for static libraries and shared
# library linker files, so rename the static library.
set_target_properties(throughnet
PROPERTIES
OUTPUT_NAME throughnet_static)
set_target_properties(throughnet PROPERTIES OUTPUT_NAME throughnet_static)
endif()
if (MSVC)
MERGE_STATIC_LIBRARIES( throughnet
"${WEBRTC_LIBRARIES_INTERNAL_RELEASE}"
"${WEBRTC_LIBRARIES_INTERNAL_DEBUG}")
elseif (APPLE)
MERGE_STATIC_LIBRARIES(throughnet
"${WEBRTC_LIBRARIES_INTERNAL_RELEASE}"
"${WEBRTC_LIBRARIES_INTERNAL_DEBUG}")
elseif (UNIX)
MERGE_STATIC_LIBRARIES(throughnet
"${WEBRTC_LIBRARIES_INTERNAL_RELEASE}"
"${WEBRTC_LIBRARIES_INTERNAL_DEBUG}")
endif(MSVC)
endif()
if (TN_WITH_SHARED)
add_library(throughnet_shared SHARED
${HEADERS}
${SOURCES})
target_compile_definitions(throughnet_shared PRIVATE ${WEBRTC_DEFINES} ${WEBSOCKETPP_DEFINES})
add_library(throughnet_shared SHARED ${HEADERS} ${SOURCES})
target_compile_definitions(throughnet_shared PRIVATE ${_TN_INTERNAL_DEFINES})
target_include_directories(throughnet_shared PRIVATE ${_TN_INTERNAL_INCLUDE_DIR} )
set_target_properties(throughnet_shared
PROPERTIES
OUTPUT_NAME throughnet
)
set_target_properties(throughnet_shared PROPERTIES OUTPUT_NAME throughnet)
target_link_libraries(throughnet_shared ${_TN_INTERNAL_LIBRARIES})
if (WIN32)
@ -170,22 +175,19 @@ if (TN_WITH_SHARED)
endif()
# ============================================================================
# Target dependencies
# ============================================================================
# ============================================================================
# Variables for parent project including throughnet using add_subdirectory()
# ============================================================================
set(THROUGHNET_INCLUDE_DIRECTORY ${TN_INCLUDE_DIRECTORY} CACHE STRING "ThroughNet include directories")
set(THROUGHNET_INCLUDE_DIRECTORY ${TN_INCLUDE_DIRECTORY}
CACHE STRING "ThroughNet include directories")
if (TN_WITH_STATIC)
set(THROUGHNET_LIBRARIES_STATIC throughnet ${WEBRTC_LIBRARIES} CACHE STRING "ThroughNet static library")
set(THROUGHNET_LIBRARIES_STATIC throughnet ${WEBRTC_LIBRARIES_EXTERNAL}
CACHE STRING "ThroughNet static library")
endif()
if (TN_WITH_SHARED)
set(THROUGHNET_LIBRARIES_SHARED throughnet_shared CACHE STRING "ThroughNet shared library")
set(THROUGHNET_LIBRARIES_SHARED throughnet_shared ${WEBRTC_LIBRARIES_EXTERNAL}
CACHE STRING "ThroughNet shared library")
endif()
@ -196,9 +198,8 @@ endif()
add_executable(test_main src/test/test_main.cc)
add_dependencies(test_main throughnet)
target_compile_definitions(test_main PRIVATE ${WEBRTC_DEFINES} ${WEBSOCKETPP_DEFINES})
target_include_directories(test_main PRIVATE ${_TN_INTERNAL_INCLUDE_DIR})
target_link_libraries(test_main throughnet ${_TN_INTERNAL_LIBRARIES})
target_include_directories(test_main PRIVATE ${THROUGHNET_INCLUDE_DIRECTORY})
target_link_libraries(test_main ${THROUGHNET_LIBRARIES_STATIC})
set_target_properties (test_main PROPERTIES FOLDER test)
add_test(test_main test_main)
@ -211,24 +212,21 @@ add_test(test_main test_main)
# echo server
add_executable(echo_server examples/echo_server/main.cc)
add_dependencies(echo_server throughnet)
target_include_directories(echo_server PRIVATE ${THROUGHNET_INCLUDE_DIRECTORY})
target_link_libraries(echo_server throughnet ${THROUGHNET_LIBRARIES_STATIC})
target_link_libraries(echo_server ${THROUGHNET_LIBRARIES_STATIC})
set_target_properties (echo_server PROPERTIES FOLDER examples)
# echo client
add_executable(echo_client examples/echo_client/main.cc)
add_dependencies(echo_client throughnet)
target_include_directories(echo_client PRIVATE ${THROUGHNET_INCLUDE_DIRECTORY})
target_link_libraries(echo_client throughnet ${THROUGHNET_LIBRARIES_STATIC})
target_link_libraries(echo_client ${THROUGHNET_LIBRARIES_STATIC})
set_target_properties (echo_client PROPERTIES FOLDER examples)
# p2p netcat
add_executable(p2p_netcat examples/p2p_netcat/main.cc)
add_dependencies(p2p_netcat throughnet)
target_include_directories(p2p_netcat PRIVATE ${THROUGHNET_INCLUDE_DIRECTORY})
target_link_libraries(p2p_netcat throughnet ${THROUGHNET_LIBRARIES_STATIC})
target_link_libraries(p2p_netcat ${THROUGHNET_LIBRARIES_STATIC})
set_target_properties (p2p_netcat PROPERTIES FOLDER examples)
set_target_properties (p2p_netcat PROPERTIES OUTPUT_NAME p2pnc)

View File

@ -3,10 +3,10 @@
# WEBRTC_FOUND
# WEBRTC_DEFINES
# WEBRTC_INCLUDE_DIR
# WEBRTC_LIBRARIES
#
# WEBRTC_BORING_SSL_INCLUDE
# WEBRTC_BORING_SSL_LIBRARIES
# WEBRTC_LIBRARIES_INTERNAL_RELEASE
# WEBRTC_LIBRARIES_INTERNAL_DEBUG
# WEBRTC_LIBRARIES_INTERNAL
# WEBRTC_LIBRARIES_EXTERNAL
#
# ============================================================================
@ -23,7 +23,7 @@ else()
"webrtc-checkout/src"
CACHE PATH
"WebRTC root directory."
)
)
endif()
if (DEFINED ENV{WEBRTC_LIBRARY_DIR})
@ -60,6 +60,7 @@ list(APPEND WEBRTC_INCLUDE_DIR
"${WEBRTC_INCLUDE_DIR}/third_party/wtl/include"
"${WEBRTC_INCLUDE_DIR}/third_party/jsoncpp/overrides/include"
"${WEBRTC_INCLUDE_DIR}/third_party/jsoncpp/source/include"
"${WEBRTC_INCLUDE_DIR}/third_party/boringssl/src/include"
)
# ============================================================================
@ -69,10 +70,14 @@ list(APPEND WEBRTC_INCLUDE_DIR
# ...
# ============================================================================
set (WEBRTC_LIBRARIES)
set (WEBRTC_LIBRARIES_INTERNAL_RELEASE)
set (WEBRTC_LIBRARIES_INTERNAL_DEBUG)
set (WEBRTC_LIBRARIES_INTERNAL)
set (WEBRTC_LIBRARIES_EXTERNAL)
if (MSVC)
list(APPEND _WEBRTC_LIB_NAMES
# from peerconnection_client.ninja
"obj/webrtc/api/libjingle_peerconnection.lib"
"obj/webrtc/system_wrappers/field_trial_default.lib"
"obj/third_party/jsoncpp/jsoncpp.lib"
@ -151,14 +156,170 @@ if (MSVC)
"obj/third_party/libsrtp/libsrtp.lib"
)
elseif (APPLE)
# from peerconnection_client.ninja
list(APPEND _WEBRTC_LIB_NAMES
"libjingle_peerconnection.a"
"libfield_trial_default.a"
"libjsoncpp.a"
"librtc_media.a"
"librtc_base_approved.a"
"libwebrtc_common.a"
"libwebrtc.a"
"libsystem_wrappers.a"
"libvoice_engine.a"
"libcommon_audio.a"
"libopenmax_dl.a"
"libcommon_audio_sse2.a"
"libaudio_coding_module.a"
"libcng.a"
"libaudio_encoder_interface.a"
"libg711.a"
"libpcm16b.a"
"libilbc.a"
"libwebrtc_opus.a"
"libopus.a"
"libg722.a"
"libisac.a"
"libaudio_decoder_interface.a"
"libisac_common.a"
"libred.a"
"librtc_event_log.a"
"librtc_event_log_proto.a"
"libprotobuf_lite.a"
"libneteq.a"
"libbuiltin_audio_decoder_factory.a"
"libaudio_decoder_factory_interface.a"
"librent_a_codec.a"
"libaudio_conference_mixer.a"
"libaudio_processing.a"
"libaudioproc_debug_proto.a"
"libaudio_processing_sse2.a"
"libwebrtc_utility.a"
"libmedia_file.a"
"libaudio_device.a"
"libbitrate_controller.a"
"libpaced_sender.a"
"librtp_rtcp.a"
"libremote_bitrate_estimator.a"
"libcongestion_controller.a"
"libcommon_video.a"
"libyuv.a"
"libjpeg_turbo.a"
"libvideo_capture_module.a"
"libvideo_processing.a"
"libvideo_processing_sse2.a"
"libwebrtc_video_coding.a"
"libwebrtc_h264.a"
"libwebrtc_i420.a"
"libvideo_coding_utility.a"
"libwebrtc_vp8.a"
"libvpx.a"
"libvpx_intrinsics_mmx.a"
"libvpx_intrinsics_sse2.a"
"libvpx_intrinsics_ssse3.a"
"libvpx_intrinsics_sse4_1.a"
"libvpx_intrinsics_avx.a"
"libvpx_intrinsics_avx2.a"
"libwebrtc_vp9.a"
"libmetrics_default.a"
"librtc_xmllite.a"
"librtc_base.a"
"libboringssl.a"
"libboringssl_asm.a"
"libexpat.a"
"librtc_xmpp.a"
"librtc_p2p.a"
"libusrsctplib.a"
"libvideo_capture_module_internal_impl.a"
"librtc_pc.a"
"libsrtp.a"
)
elseif (UNIX)
list(APPEND _WEBRTC_LIB_NAMES
# from peerconnection_client.ninja
"obj/webrtc/api/libjingle_peerconnection.a"
"obj/webrtc/system_wrappers/libfield_trial_default.a"
"obj/chromium/src/third_party/jsoncpp/libjsoncpp.a"
"obj/webrtc/media/librtc_media.a"
"obj/webrtc/base/librtc_base_approved.a"
"obj/chromium/src/base/third_party/libevent/libevent.a"
"obj/webrtc/libwebrtc_common.a"
"obj/webrtc/libwebrtc.a"
"obj/webrtc/system_wrappers/libsystem_wrappers.a"
"obj/webrtc/system_wrappers/libcpu_features_linux.a"
"obj/webrtc/voice_engine/libvoice_engine.a"
"obj/webrtc/common_audio/libcommon_audio.a"
"obj/chromium/src/third_party/openmax_dl/dl/libopenmax_dl.a"
"obj/webrtc/common_audio/libcommon_audio_sse2.a"
"obj/webrtc/modules/libaudio_coding_module.a"
"obj/webrtc/modules/libcng.a"
"obj/webrtc/modules/libaudio_encoder_interface.a"
"obj/webrtc/modules/libg711.a"
"obj/webrtc/modules/libpcm16b.a"
"obj/webrtc/modules/libilbc.a"
"obj/webrtc/modules/libwebrtc_opus.a"
"obj/chromium/src/third_party/opus/libopus.a"
"obj/webrtc/modules/libg722.a"
"obj/webrtc/modules/libisac.a"
"obj/webrtc/modules/libaudio_decoder_interface.a"
"obj/webrtc/modules/libisac_common.a"
"obj/webrtc/modules/libred.a"
"obj/webrtc/librtc_event_log.a"
"obj/webrtc/librtc_event_log_proto.a"
"obj/chromium/src/third_party/protobuf/libprotobuf_lite.a"
"obj/webrtc/modules/libneteq.a"
"obj/webrtc/modules/libbuiltin_audio_decoder_factory.a"
"obj/webrtc/modules/libaudio_decoder_factory_interface.a"
"obj/webrtc/modules/librent_a_codec.a"
"obj/webrtc/modules/libaudio_conference_mixer.a"
"obj/webrtc/modules/libaudio_processing.a"
"obj/webrtc/modules/libaudioproc_debug_proto.a"
"obj/webrtc/modules/libaudio_processing_sse2.a"
"obj/webrtc/modules/libwebrtc_utility.a"
"obj/webrtc/modules/libmedia_file.a"
"obj/webrtc/modules/libaudio_device.a"
"obj/webrtc/modules/libbitrate_controller.a"
"obj/webrtc/modules/libpaced_sender.a"
"obj/webrtc/modules/librtp_rtcp.a"
"obj/webrtc/modules/libremote_bitrate_estimator.a"
"obj/webrtc/modules/libcongestion_controller.a"
"obj/webrtc/common_video/libcommon_video.a"
"libyuv.a"
"obj/chromium/src/third_party/libjpeg_turbo/libjpeg_turbo.a"
"obj/webrtc/modules/libvideo_capture_module.a"
"obj/webrtc/modules/libvideo_processing.a"
"obj/webrtc/modules/libvideo_processing_sse2.a"
"obj/webrtc/modules/libwebrtc_video_coding.a"
"obj/webrtc/modules/libwebrtc_h264.a"
"obj/webrtc/modules/libwebrtc_i420.a"
"obj/webrtc/modules/video_coding/utility/libvideo_coding_utility.a"
"obj/webrtc/modules/video_coding/codecs/vp8/libwebrtc_vp8.a"
"obj/chromium/src/third_party/libvpx/libvpx.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_mmx.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_sse2.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_ssse3.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_sse4_1.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_avx.a"
"obj/chromium/src/third_party/libvpx/libvpx_intrinsics_avx2.a"
"obj/webrtc/modules/video_coding/codecs/vp9/libwebrtc_vp9.a"
"obj/webrtc/system_wrappers/libmetrics_default.a"
"obj/webrtc/libjingle/xmllite/librtc_xmllite.a"
"obj/webrtc/base/librtc_base.a"
"obj/chromium/src/third_party/boringssl/libboringssl.a"
"obj/chromium/src/third_party/boringssl/libboringssl_asm.a"
"obj/webrtc/libjingle/xmpp/librtc_xmpp.a"
"obj/webrtc/p2p/librtc_p2p.a"
"obj/chromium/src/third_party/usrsctp/libusrsctplib.a"
"obj/webrtc/modules/libvideo_capture_module_internal_impl.a"
"obj/webrtc/pc/librtc_pc.a"
"obj/chromium/src/third_party/libsrtp/libsrtp.a"
)
else (MSVC)
message(FATAL_ERROR "Unknown environment. \n")
endif (MSVC)
foreach (lib ${_WEBRTC_LIB_NAMES})
unset(_WEBRTC_LIB_PATH CACHE)
separate_arguments(lib)
@ -166,12 +327,11 @@ foreach (lib ${_WEBRTC_LIB_NAMES})
NAMES ${lib}
PATHS
${WEBRTC_LIBRARY_DIR}
)
)
if (_WEBRTC_LIB_PATH)
list(APPEND
WEBRTC_LIBRARIES
optimized ${_WEBRTC_LIB_PATH}
)
list(APPEND WEBRTC_LIBRARIES_INTERNAL_RELEASE ${_WEBRTC_LIB_PATH})
list(APPEND WEBRTC_LIBRARIES_INTERNAL optimized ${_WEBRTC_LIB_PATH})
else(_WEBRTC_LIB_PATH)
message("\nCurrent WEBRTC_ROOT_DIR is '${WEBRTC_ROOT_DIR}'")
message("Current WEBRTC_LIBRARY_DIR is '${WEBRTC_LIBRARY_DIR}'\n")
@ -190,80 +350,50 @@ foreach (lib ${_WEBRTC_LIB_NAMES})
${WEBRTC_LIBRARY_DIR_DEBUG}
)
if (_WEBRTC_LIB_PATH)
list(APPEND
WEBRTC_LIBRARIES
debug ${_WEBRTC_LIB_PATH}
)
list(APPEND WEBRTC_LIBRARIES_INTERNAL_DEBUG ${_WEBRTC_LIB_PATH})
list(APPEND WEBRTC_LIBRARIES_INTERNAL debug ${_WEBRTC_LIB_PATH})
endif()
endforeach()
if(WIN32 AND MSVC)
list(APPEND
WEBRTC_LIBRARIES
Secur32.lib Winmm.lib msdmo.lib dmoguids.lib wmcodecdspuuid.lib
wininet.lib dnsapi.lib version.lib ws2_32.lib Strmiids.lib
)
set(_WEBRTC_EXTERNAL_LIBRARIES
Secur32.lib Winmm.lib msdmo.lib dmoguids.lib wmcodecdspuuid.lib
wininet.lib dnsapi.lib version.lib ws2_32.lib Strmiids.lib)
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${_WEBRTC_EXTERNAL_LIBRARIES})
# list(APPEND WEBRTC_LIBRARIES ${_WEBRTC_EXTERNAL_LIBRARIES})
elseif (APPLE)
find_library(FOUNDATION_LIBRARY Foundation)
find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
find_library(CORE_SERVICES_LIBRARY CoreServices)
find_library(CORE_AUDIO_LIBRARY CoreAudio)
find_library(CORE_AUDIO_TOOLBOX_LIBRARY AudioToolBox)
find_library(CORE_GRAPHICSLIBRARY CoreGraphics)
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${FOUNDATION_LIBRARY})
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${CORE_FOUNDATION_LIBRARY})
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${CORE_SERVICES_LIBRARY})
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${CORE_AUDIO_LIBRARY})
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${CORE_AUDIO_TOOLBOX_LIBRARY})
list(APPEND WEBRTC_LIBRARIES_EXTERNAL ${CORE_GRAPHICSLIBRARY})
elseif (UNIX)
find_package(Threads REQUIRED)
find_library(X11_LIBRARY NAMES X11)
# find_package(X11_LIBRARY X11 REQUIRED)
list(APPEND WEBRTC_LIBRARIES_EXTERNAL
${CMAKE_THREAD_LIBS_INIT}
${X11_LIBRARY}
# ${X11_LIBRARIES}
${CMAKE_DL_LIBS})
endif()
if(UNIX)
find_package (Threads REQUIRED)
if (APPLE)
find_library(FOUNDATION_LIBRARY Foundation)
find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
find_library(CORE_SERVICES_LIBRARY CoreServices)
endif()
list(APPEND WEBRTC_LIBRARIES
${CMAKE_THREAD_LIBS_INIT}
${FOUNDATION_LIBRARY}
${CORE_FOUNDATION_LIBRARY}
${CORE_SERVICES_LIBRARY}
)
endif()
# BoringSSL
find_library(_WEBRTC_BORING_SSL_LIBRARY
NAMES boringssl
PATHS
${WEBRTC_LIBRARY_DIR}
${WEBRTC_LIBRARY_DIR}/obj/third_party/boringssl
)
if (_WEBRTC_BORING_SSL_LIBRARY)
list(APPEND WEBRTC_BORING_SSL_LIBRARIES ${_WEBRTC_BORING_SSL_LIBRARY})
else()
message(FATAL_ERROR "BoringSSL library not found in WebRTC")
endif()
find_library(_WEBRTC_BORING_SSL_ASM_LIBRARY
NAMES boringssl_asm
PATHS
${WEBRTC_LIBRARY_DIR}
${WEBRTC_LIBRARY_DIR}/obj/third_party/boringssl
)
if (_WEBRTC_BORING_SSL_ASM_LIBRARY)
list(APPEND WEBRTC_BORING_SSL_LIBRARIES ${_WEBRTC_BORING_SSL_ASM_LIBRARY})
else()
message(FATAL_ERROR "BoringSSL asm library not found in WebRTC")
endif()
find_path(WEBRTC_BORING_SSL_INCLUDE
NAMES
openssl/ssl.h
PATHS
${WEBRTC_ROOT_DIR}/third_party/boringssl/src/include
)
# ============================================================================
# Definitions
# ============================================================================
if (MSVC)
set(WEBRTC_DEFINES
# from peerconnection_client.ninja
-DV8_DEPRECATION_WARNINGS
-DNOMINMAX -DPSAPI_VERSION=1 -D_CRT_RAND_S
-DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -DWIN32_LEAN_AND_MEAN
@ -286,7 +416,7 @@ if (MSVC)
-D_CRT_NONSTDC_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
-DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DALLOCATOR_SHIM -D_UNICODE
-DUNICODE
# Removed from origianl peerconnection_client.ninja
# Skipped from origianl peerconnection_client.ninja
# -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00
# -DWIN32 -D_WINDOWS
# -DCR_CLANG_REVISION=268813-1
@ -294,35 +424,66 @@ if (MSVC)
# -D_USING_V110_SDK71_
# -DNDEBUG
)
elseif(UNIX)
list(APPEND WEBRTC_DEFINES
-DWEBRTC_POSIX
-DCARBON_DEPRECATED=YES
-DDISABLE_DYNAMIC_CAST -D_REENTRANT
-DUSE_BROWSER_SPELLCHECKER=1
)
elseif (APPLE)
# from peerconnection_client.ninja
set(WEBRTC_DEFINES
-DV8_DEPRECATION_WARNINGS
-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 -DCHROMIUM_BUILD
-DUSE_LIBJPEG_TURBO=1 -DENABLE_WEBRTC=1
-DENABLE_MEDIA_ROUTER=1 -DENABLE_PEPPER_CDMS -DENABLE_NOTIFICATIONS
-DENABLE_TOPCHROME_MD=1 -DFIELDTRIAL_TESTING_ENABLED
-DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1
-DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PLUGINS=1
-DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_PRINTING=1
-DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1
-DENABLE_SPELLCHECK=1 -DUSE_BROWSER_SPELLCHECKER=1
-DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1
-DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1
-DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA
-DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL
-DWEBRTC_MAC -DCARBON_DEPRECATED=YES -DHASH_NAMESPACE=__gnu_cxx
-DWEBRTC_POSIX -DDISABLE_DYNAMIC_CAST -D_REENTRANT -DUSE_LIBPCI=1
-DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0
if(APPLE)
list(APPEND WEBRTC_DEFINES
-DWEBRTC_MAC
# -DCR_CLANG_REVISION=268813-1
# -DNDEBUG
)
else()
list(APPEND WEBRTC_DEFINES
-DWEBRTC_LINUX
-DDUI_COMPOSITOR_IMAGE_TRANSPORT
-DUSE_PANGO=1 -DUSE_CAIRO=1
-DUSE_X11=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1
)
endif()
endif()
elseif (UNIX)
set(WEBRTC_DEFINES
# from peerconnection_client.ninja
-DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD
-DUI_COMPOSITOR_IMAGE_TRANSPORT
-DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1
-DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1
-DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DENABLE_PEPPER_CDMS
-DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 -DUSE_UDEV
-DFIELDTRIAL_TESTING_ENABLED -DENABLE_TASK_MANAGER=1
-DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1
-DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_PRINTING=1
-DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1
-DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1
-DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1
-DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1
-DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD
-DSAFE_BROWSING_DB_LOCAL -DWEBRTC_LINUX -DHASH_NAMESPACE=__gnu_cxx
-DWEBRTC_POSIX -DDISABLE_DYNAMIC_CAST -D_REENTRANT -DUSE_LIBPCI=1
-DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DNVALGRIND
-DDYNAMIC_ANNOTATIONS_ENABLED=0
# Skipped from origianl peerconnection_client.ninja
# -DCR_CLANG_REVISION=268813-1
# -DNDEBUG
)
endif (MSVC)
# ============================================================================
# Validation
# ============================================================================
if (WEBRTC_INCLUDE_DIR AND _WEBRTC_LIB_PATH)
if (WEBRTC_INCLUDE_DIR)
message("Found WebRTC library successfully.")
set(WEBRTC_FOUND 1)
else()

View File

@ -0,0 +1,35 @@
macro (MERGE_STATIC_LIBRARIES TARGET LIBRARIES LIBRARIES_DEBUG)
if("${CMAKE_CFG_INTDIR}" STREQUAL ".")
set(multiconfig FALSE)
else()
set(multiconfig TRUE)
endif()
if ("${LIBRARIES_DEBUG}" STREQUAL "")
set(LIBRARIES_DEBUG ${LIBRARIES})
endif()
if (WIN32)
# On Windows you must add aditional formatting to the LIBRARIES variable as a single string for the windows libtool
# with each library path wrapped in "" in case it contains spaces
string (REPLACE ";" "\" \"" LIBS "${LIBRARIES}")
string (REPLACE ";" "\" \"" LIBS_DEBUG "${LIBRARIES_DEBUG}")
set (LIBS \"${LIBS}\")
set (LIBS_DEBUG \"${LIBS_DEBUG}\")
foreach(CONFIG_TYPE ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${CONFIG_TYPE}" _CONFIG_TYPE)
string(TOUPPER "STATIC_LIBRARY_FLAGS_${CONFIG_TYPE}" PROPNAME)
if ("${_CONFIG_TYPE}" STREQUAL "DEBUG")
set_property (TARGET ${TARGET} APPEND PROPERTY ${PROPNAME} "${LIBS_DEBUG}")
else()
set_property (TARGET ${TARGET} APPEND PROPERTY ${PROPNAME} "${LIBS}")
endif()
endforeach()
endif (WIN32)
endmacro (MERGE_STATIC_LIBRARIES)