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_