Use generate_stubs without //base dependency
For this I added a header called no_cfi_icall.h and use it.
Also, some files use the gio header, but if the //base dependency is
not used, compilation errors occur. So I added an explicit dependency
on gio.
Bug: webrtc:13662
Change-Id: If732ede202dd413be6702bf06bf024cd203fdae2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267340
Commit-Queue: Daniel.L (Byoungchan) Lee <daniel.l@hpcnt.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37395}
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index a3fb138..3cc5c07 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -82,6 +82,11 @@
"screen_drawer_unittest.cc",
"window_finder_unittest.cc",
]
+
+ if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ configs += [ ":gio" ]
+ }
+
public_configs = [ ":x11_config" ]
if (is_win) {
@@ -111,6 +116,11 @@
"test_utils.h",
"test_utils_unittest.cc",
]
+
+ if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ configs += [ ":gio" ]
+ }
+
deps = [
":desktop_capture",
":desktop_capture_mock",
@@ -215,6 +225,10 @@
"mock_desktop_capturer_callback.h",
]
+ if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+ configs += [ ":gio" ]
+ }
+
deps = [
":desktop_capture",
":primitives",
@@ -275,6 +289,10 @@
"linux/wayland/pipewire.sigs",
"linux/wayland/drm.sigs",
]
+ if (!build_with_chromium) {
+ macro_include = "rtc_base/system/no_cfi_icall.h"
+ macro_deps = [ "../../rtc_base/system:no_cfi_icall" ]
+ }
}
}
diff --git a/rtc_base/system/BUILD.gn b/rtc_base/system/BUILD.gn
index a34a151..77f5139 100644
--- a/rtc_base/system/BUILD.gn
+++ b/rtc_base/system/BUILD.gn
@@ -73,6 +73,12 @@
sources = [ "no_unique_address.h" ]
}
+rtc_source_set("no_cfi_icall") {
+ sources = [ "no_cfi_icall.h" ]
+
+ deps = [ "..:sanitizer" ]
+}
+
if (is_mac || is_ios) {
rtc_library("cocoa_threading") {
sources = [
diff --git a/rtc_base/system/no_cfi_icall.h b/rtc_base/system/no_cfi_icall.h
new file mode 100644
index 0000000..42d6c9c
--- /dev/null
+++ b/rtc_base/system/no_cfi_icall.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef RTC_BASE_SYSTEM_NO_CFI_ICALL_H_
+#define RTC_BASE_SYSTEM_NO_CFI_ICALL_H_
+
+#include "rtc_base/sanitizer.h"
+
+// DISABLE_CFI_ICALL -- Disable Control Flow Integrity indirect call checks.
+// Note that the same macro is defined in "base/compiler_specific.h".
+// Only use this when building standalone WebRTC.
+#if !defined(WEBRTC_CHROMIUM_BUILD)
+#if !defined(DISABLE_CFI_ICALL)
+#if defined(WEBRTC_WIN)
+// Windows also needs __declspec(guard(nocf)).
+#define DISABLE_CFI_ICALL RTC_NO_SANITIZE("cfi-icall") __declspec(guard(nocf))
+#else
+#define DISABLE_CFI_ICALL RTC_NO_SANITIZE("cfi-icall")
+#endif // defined(WEBRTC_WIN)
+#endif // !defined(DISABLE_CFI_ICALL)
+#if !defined(DISABLE_CFI_ICALL)
+#define DISABLE_CFI_ICALL
+#endif
+#endif // !defined(WEBRTC_CHROMIUM_BUILD)
+
+#endif // RTC_BASE_SYSTEM_NO_CFI_ICALL_H_