Link fewer X11-related libraries

Use an explicit list and don't add X11 dependency to rtc_base.

Allow skipping code that depends on rarer extensions such as Xdamage, Xfixes.

Bug: None
Change-Id: Icb8d20a267358f5cd3f1ff2af31a669e0670d2f6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140865
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28204}
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index e6797bf..59f4ab0 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -366,7 +366,7 @@
     ]
   }
 
-  if (rtc_use_x11 || rtc_use_pipewire) {
+  if (rtc_use_x11_extensions || rtc_use_pipewire) {
     sources += [
       "mouse_cursor_monitor_linux.cc",
       "screen_capturer_linux.cc",
@@ -378,7 +378,7 @@
     }
   }
 
-  if (rtc_use_x11) {
+  if (rtc_use_x11_extensions) {
     sources += [
       "linux/mouse_cursor_monitor_x11.cc",
       "linux/mouse_cursor_monitor_x11.h",
@@ -401,7 +401,14 @@
       "linux/x_window_property.cc",
       "linux/x_window_property.h",
     ]
-    configs += [ "//build/config/linux:x11" ]
+    libs = [
+      "X11",
+      "Xcomposite",
+      "Xdamage",
+      "Xext",
+      "Xfixes",
+      "Xrender",
+    ]
 
     if (build_with_mozilla) {
       sources += [
@@ -414,7 +421,7 @@
     }
   }
 
-  if (!is_win && !is_mac && !rtc_use_x11 && !rtc_use_pipewire) {
+  if (!is_win && !is_mac && !rtc_use_x11_extensions && !rtc_use_pipewire) {
     sources += [
       "mouse_cursor_monitor_null.cc",
       "screen_capturer_null.cc",
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index a3dd22e..86dee93 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -950,17 +950,6 @@
     deps += [ "system:cocoa_threading" ]
   }
 
-  if (rtc_use_x11) {
-    libs += [
-      "dl",
-      "rt",
-      "Xext",
-      "X11",
-      "Xcomposite",
-      "Xrender",
-    ]
-  }
-
   if (is_linux) {
     libs += [
       "dl",
diff --git a/webrtc.gni b/webrtc.gni
index 6ba8d0a..3a8592d 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -242,6 +242,10 @@
 
   # Include tests in standalone checkout.
   rtc_include_tests = !build_with_chromium && !build_with_mozilla
+
+  # Set this to false to skip building code that also requires X11 extensions
+  # such as Xdamage, Xfixes.
+  rtc_use_x11_extensions = rtc_use_x11
 }
 
 # Make it possible to provide custom locations for some libraries (move these
@@ -250,8 +254,9 @@
 rtc_opus_dir = "//third_party/opus"
 
 # Desktop capturer is supported only on Windows, OSX and Linux.
-rtc_desktop_capture_supported = (is_win && current_os != "winuwp") || is_mac ||
-                                (is_linux && (rtc_use_x11 || rtc_use_pipewire))
+rtc_desktop_capture_supported =
+    (is_win && current_os != "winuwp") || is_mac ||
+    (is_linux && (rtc_use_x11_extensions || rtc_use_pipewire))
 
 ###############################################################################
 # Templates