Merge dependent static library to single throughnet static library
parent
e0d9e63914
commit
cb327e67d8
136
CMakeLists.txt
136
CMakeLists.txt
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
Loading…
Reference in New Issue