1
0
Fork 0
cmake_helpers/external/webrtc/CMakeLists.txt
2021-09-12 20:58:01 +03:00

122 lines
3.2 KiB
CMake

# This file is part of Desktop App Toolkit,
# a set of libraries for developing nice desktop applications.
#
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL
add_library(external_webrtc INTERFACE IMPORTED GLOBAL)
add_library(desktop-app::external_webrtc ALIAS external_webrtc)
if (DESKTOP_APP_USE_PACKAGED)
find_package(tg_owt REQUIRED)
target_link_libraries(external_webrtc INTERFACE tg_owt::tg_owt)
else()
set(webrtc_loc ${libs_loc}/tg_owt/src)
set(webrtc_build_loc ${libs_loc}/tg_owt/out/$<IF:$<CONFIG:Debug>,Debug,Release>)
target_compile_definitions(external_webrtc
INTERFACE
WEBRTC_ENABLE_PROTOBUF=0
WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE
RTC_ENABLE_VP9
HAVE_SCTP
WEBRTC_USE_H264
WEBRTC_USE_BUILTIN_ISAC_FLOAT
WEBRTC_LIBRARY_IMPL
WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1
ABSL_ALLOCATOR_NOTHROW=1
)
if (WIN32)
set(webrtc_lib_prefix "")
set(webrtc_lib_suffix .lib)
target_compile_definitions(external_webrtc
INTERFACE
WEBRTC_WIN
)
else()
set(webrtc_lib_prefix lib)
set(webrtc_lib_suffix .a)
if (APPLE)
target_compile_definitions(external_webrtc
INTERFACE
WEBRTC_MAC
)
else()
target_compile_definitions(external_webrtc
INTERFACE
WEBRTC_LINUX
WEBRTC_USE_X11
WEBRTC_USE_PIPEWIRE
)
endif()
target_compile_definitions(external_webrtc
INTERFACE
WEBRTC_POSIX
)
endif()
target_include_directories(external_webrtc SYSTEM
INTERFACE
${webrtc_loc}
${webrtc_loc}/third_party/abseil-cpp
${webrtc_loc}/third_party/libyuv/include
)
set(webrtc_libs
${webrtc_lib_prefix}tg_owt
)
if (APPLE)
target_include_directories(external_webrtc SYSTEM
INTERFACE
${webrtc_loc}/sdk/objc
${webrtc_loc}/sdk/objc/base
${webrtc_loc}/sdk/objc/components/video_codec
)
endif()
foreach (lib ${webrtc_libs})
list(APPEND webrtc_libs_list "${webrtc_build_loc}/${lib}${webrtc_lib_suffix}")
endforeach()
target_link_libraries(external_webrtc
INTERFACE
${webrtc_libs_list}
desktop-app::external_openssl
desktop-app::external_jpeg
desktop-app::external_opus
)
if (WIN32)
target_link_libraries(external_webrtc
INTERFACE
Secur32.lib # Required for rtc_base/http_common.cc
)
elseif (APPLE)
target_link_libraries(external_webrtc
INTERFACE
-ObjC
)
else()
# Required for desktop_capture
target_link_static_libraries(external_webrtc
INTERFACE
Xcomposite
Xdamage
Xext
Xfixes
Xrandr
Xrender
Xtst
)
target_link_libraries(external_webrtc
INTERFACE
X11
gio-2.0
gobject-2.0
glib-2.0
)
endif()
endif()