Refactor desktop_capture build.
This CL removes the split of "desktop_capture" in 2 build targets (one for C++ and one for Obj-C++) by moving the C++ part to "desktop_capture" itself and keeping the Obj-C++ variant but allowing it to include .h files that are also part of "desktop_capture". This removes the build cycle between the two targets (which conceptually are the same target). Clients should never depend on "desktop_capture_objc", which will be linked by "desktop_capture" when needed. Bug: b/36882554 Change-Id: Id219a15e549275870c54375c07f00cfe704ab7cb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/266743 Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Oleh Prypin <oprypin@google.com> Cr-Commit-Position: refs/heads/main@{#37337}
This commit is contained in:
parent
ad52e04d49
commit
bf0da440ea
@ -57,6 +57,7 @@ if (rtc_include_tests) {
|
||||
defines = []
|
||||
sources = []
|
||||
deps = [
|
||||
":desktop_capture",
|
||||
"../../api:function_view",
|
||||
"../../api:scoped_refptr",
|
||||
"../../rtc_base:checks",
|
||||
@ -171,8 +172,6 @@ if (rtc_include_tests) {
|
||||
rtc_library("screen_drawer") {
|
||||
testonly = true
|
||||
|
||||
public_deps = [ ":desktop_capture" ] # no-presubmit-check TODO(webrtc:8603)
|
||||
|
||||
sources = [
|
||||
"screen_drawer.cc",
|
||||
"screen_drawer.h",
|
||||
@ -191,6 +190,7 @@ if (rtc_include_tests) {
|
||||
}
|
||||
|
||||
deps = [
|
||||
":desktop_capture",
|
||||
":primitives",
|
||||
"../../api:scoped_refptr",
|
||||
"../../rtc_base:checks",
|
||||
@ -209,14 +209,13 @@ if (rtc_include_tests) {
|
||||
rtc_library("desktop_capture_mock") {
|
||||
testonly = true
|
||||
|
||||
public_deps = [ ":desktop_capture" ] # no-presubmit-check TODO(webrtc:8603)
|
||||
|
||||
sources = [
|
||||
"mock_desktop_capturer_callback.cc",
|
||||
"mock_desktop_capturer_callback.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
":desktop_capture",
|
||||
":primitives",
|
||||
"../../test:test_support",
|
||||
]
|
||||
@ -294,62 +293,31 @@ if (is_linux || is_chromeos) {
|
||||
}
|
||||
}
|
||||
|
||||
rtc_source_set("desktop_capture") {
|
||||
visibility = [ "*" ]
|
||||
public_deps = # no-presubmit-check TODO(webrtc:8603)
|
||||
[ ":desktop_capture_generic" ]
|
||||
if (is_mac) {
|
||||
public_deps += [ ":desktop_capture_objc" ]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
rtc_library("desktop_capture_objc") {
|
||||
visibility = [ ":desktop_capture" ]
|
||||
sources = [
|
||||
"mac/desktop_configuration.mm",
|
||||
"mac/desktop_frame_cgimage.h",
|
||||
"mac/desktop_frame_cgimage.mm",
|
||||
"mac/desktop_frame_iosurface.h",
|
||||
"mac/desktop_frame_iosurface.mm",
|
||||
"mac/desktop_frame_provider.h",
|
||||
"mac/desktop_frame_provider.mm",
|
||||
"mac/screen_capturer_mac.h",
|
||||
"mac/screen_capturer_mac.mm",
|
||||
"mouse_cursor_monitor_mac.mm",
|
||||
"screen_capturer_darwin.mm",
|
||||
"window_capturer_mac.mm",
|
||||
"window_finder_mac.h",
|
||||
"window_finder_mac.mm",
|
||||
]
|
||||
deps = [
|
||||
":desktop_capture_generic",
|
||||
":primitives",
|
||||
"../../api:scoped_refptr",
|
||||
"../../api:sequence_checker",
|
||||
"../../rtc_base",
|
||||
"../../rtc_base:checks",
|
||||
"../../rtc_base:event_tracer",
|
||||
"../../rtc_base:logging",
|
||||
"../../rtc_base:timeutils",
|
||||
"../../rtc_base/system:rtc_export",
|
||||
"../../sdk:helpers_objc",
|
||||
]
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
"IOKit.framework",
|
||||
"IOSurface.framework",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_library("desktop_capture_generic") {
|
||||
defines = []
|
||||
public_configs = [ ":x11_config" ]
|
||||
visibility = [
|
||||
# TODO(mbonadei): Just for backwards compatibility, remove.
|
||||
rtc_source_set("desktop_capture_generic") {
|
||||
deps = [
|
||||
":desktop_capture",
|
||||
":desktop_capture_objc",
|
||||
":primitives",
|
||||
"../../api:scoped_refptr",
|
||||
"../../rtc_base/system:rtc_export",
|
||||
]
|
||||
sources = [
|
||||
"desktop_capture_options.h",
|
||||
"desktop_capturer.h",
|
||||
"desktop_frame_generator.h",
|
||||
"fake_desktop_capturer.h",
|
||||
]
|
||||
if (rtc_use_x11_extensions) {
|
||||
sources += [ "linux/x11/shared_x_display.h" ]
|
||||
deps += [ "../../api:refcountedbase" ]
|
||||
}
|
||||
}
|
||||
|
||||
rtc_library("desktop_capture") {
|
||||
visibility = [ "*" ]
|
||||
defines = []
|
||||
deps = []
|
||||
public_configs = [ ":x11_config" ]
|
||||
sources = [
|
||||
"blank_detector_desktop_capturer_wrapper.cc",
|
||||
"blank_detector_desktop_capturer_wrapper.h",
|
||||
@ -409,6 +377,7 @@ rtc_library("desktop_capture_generic") {
|
||||
"mac/window_list_utils.cc",
|
||||
"mac/window_list_utils.h",
|
||||
]
|
||||
deps += [ ":desktop_capture_objc" ]
|
||||
}
|
||||
|
||||
if (build_with_mozilla) {
|
||||
@ -487,14 +456,13 @@ rtc_library("desktop_capture_generic") {
|
||||
]
|
||||
}
|
||||
|
||||
deps = [
|
||||
deps += [
|
||||
":primitives",
|
||||
"../../api:function_view",
|
||||
"../../api:make_ref_counted",
|
||||
"../../api:refcountedbase",
|
||||
"../../api:scoped_refptr",
|
||||
"../../api:sequence_checker",
|
||||
"../../rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
|
||||
"../../rtc_base:checks",
|
||||
"../../rtc_base:event_tracer",
|
||||
"../../rtc_base:logging",
|
||||
@ -673,6 +641,71 @@ rtc_library("desktop_capture_generic") {
|
||||
}
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
rtc_library("desktop_capture_objc") {
|
||||
# This target, needs to be separated from ":desktop_capture" because
|
||||
# that is the C++ part of the target while this one is the Obj-C++ part.
|
||||
# Aside from this, both represent a "desktop_capture" target.
|
||||
# This target separation based on programming languages introduces a
|
||||
# dependency cycle between ":desktop_capture" and
|
||||
# ":desktop_capture_objc".
|
||||
# To break this, ":desktop_capture_objc" shares some .h files with
|
||||
# ":desktop_capture" but when external targets need one of these
|
||||
# headers, they should depend on ":desktop_capture" and consider
|
||||
# this target as private.
|
||||
visibility = [ ":desktop_capture" ]
|
||||
sources = [
|
||||
"desktop_capture_options.h",
|
||||
"desktop_capturer.h",
|
||||
"full_screen_application_handler.h",
|
||||
"full_screen_window_detector.h",
|
||||
"mac/desktop_configuration.h",
|
||||
"mac/desktop_configuration.mm",
|
||||
"mac/desktop_configuration_monitor.h",
|
||||
"mac/desktop_frame_cgimage.h",
|
||||
"mac/desktop_frame_cgimage.mm",
|
||||
"mac/desktop_frame_iosurface.h",
|
||||
"mac/desktop_frame_iosurface.mm",
|
||||
"mac/desktop_frame_provider.h",
|
||||
"mac/desktop_frame_provider.mm",
|
||||
"mac/screen_capturer_mac.h",
|
||||
"mac/screen_capturer_mac.mm",
|
||||
"mac/window_list_utils.h",
|
||||
"mouse_cursor.h",
|
||||
"mouse_cursor_monitor.h",
|
||||
"mouse_cursor_monitor_mac.mm",
|
||||
"screen_capture_frame_queue.h",
|
||||
"screen_capturer_darwin.mm",
|
||||
"screen_capturer_helper.h",
|
||||
"window_capturer_mac.mm",
|
||||
"window_finder.h",
|
||||
"window_finder_mac.h",
|
||||
"window_finder_mac.mm",
|
||||
]
|
||||
deps = [
|
||||
":primitives",
|
||||
"../../api:function_view",
|
||||
"../../api:refcountedbase",
|
||||
"../../api:scoped_refptr",
|
||||
"../../api:sequence_checker",
|
||||
"../../rtc_base",
|
||||
"../../rtc_base:checks",
|
||||
"../../rtc_base:event_tracer",
|
||||
"../../rtc_base:logging",
|
||||
"../../rtc_base:macromagic",
|
||||
"../../rtc_base:timeutils",
|
||||
"../../rtc_base/synchronization:mutex",
|
||||
"../../rtc_base/system:rtc_export",
|
||||
"../../sdk:helpers_objc",
|
||||
]
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
"IOKit.framework",
|
||||
"IOSurface.framework",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (use_desktop_capture_differ_sse2) {
|
||||
# Have to be compiled as a separate target because it needs to be compiled
|
||||
# with SSE2 enabled.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user