commit 79334dba3e5be4a7bb17a22b2fde70933991d6f4
Author: Christoph Moench-Tegeder <cmt@FreeBSD.org>

    enable pipewire on bsd

diff --git third_party/chromium/build/config/BUILDCONFIG.gn third_party/chromium/build/config/BUILDCONFIG.gn
index 889bdb9235..1566833175 100644
--- third_party/chromium/build/config/BUILDCONFIG.gn
+++ third_party/chromium/build/config/BUILDCONFIG.gn
@@ -132,6 +132,7 @@ declare_args() {
 
   # Set to true when compiling with the Clang compiler.
   is_clang = current_os != "linux" || current_os == "openbsd" ||
+              current_os != "freebsd" ||
              (current_cpu != "s390x" && current_cpu != "s390" &&
               current_cpu != "ppc64" && current_cpu != "ppc" &&
               current_cpu != "mips" && current_cpu != "mips64" &&
@@ -184,7 +185,7 @@ if (host_toolchain == "") {
   # TODO(dpranke): Add some sort of assert here that verifies that
   # no toolchain omitted host_toolchain from its toolchain_args().
 
-  if (host_os == "linux" || host_os == "openbsd") {
+  if (host_os == "linux" || host_os == "openbsd" || host_os == "freebsd") {
     if (target_os != "linux") {
       host_toolchain = "//chromium/build/toolchain/linux:clang_$host_cpu"
     } else if (is_clang) {
@@ -222,7 +223,7 @@ if (target_os == "android") {
   assert(host_os == "linux" || host_os == "mac",
          "Android builds are only supported on Linux and Mac hosts.")
   _default_toolchain = "//chromium/build/toolchain/android:android_clang_$target_cpu"
-} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd") {
+} else if (target_os == "chromeos" || target_os == "linux" || target_os == "openbsd" || target_os == "freebsd") {
   # See comments in build/toolchain/cros/BUILD.gn about board compiles.
   if (is_clang) {
     _default_toolchain = "//chromium/build/toolchain/linux:clang_$target_cpu"
@@ -288,7 +289,7 @@ is_chromeos = current_os == "chromeos"
 is_fuchsia = current_os == "fuchsia"
 is_ios = current_os == "ios"
 is_linux = current_os == "linux"
-is_bsd = current_os == "openbsd"
+is_bsd = current_os == "openbsd" || current_os == "freebsd"
 is_mac = current_os == "mac"
 is_nacl = current_os == "nacl"
 is_win = current_os == "win" || current_os == "winuwp"
diff --git third_party/libwebrtc/BUILD.gn third_party/libwebrtc/BUILD.gn
index 14c47ef2be..31a86a41c0 100644
--- third_party/libwebrtc/BUILD.gn
+++ third_party/libwebrtc/BUILD.gn
@@ -110,7 +110,7 @@ if (!build_with_chromium && !build_with_mozilla) {
           "tools_webrtc/perf:webrtc_dashboard_upload",
         ]
       }
-      if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+      if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
         deps += [ "modules/desktop_capture:shared_screencast_stream_test" ]
       }
     }
diff --git third_party/libwebrtc/modules/desktop_capture/BUILD.gn third_party/libwebrtc/modules/desktop_capture/BUILD.gn
index 2f99e3f75f..7dc6c36aab 100644
--- third_party/libwebrtc/modules/desktop_capture/BUILD.gn
+++ third_party/libwebrtc/modules/desktop_capture/BUILD.gn
@@ -74,7 +74,7 @@ if (rtc_include_tests) {
         "window_finder_unittest.cc",
       ]
 
-      if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+      if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
         configs += [ "../portal:gio" ]
       }
 
@@ -86,7 +86,7 @@ if (rtc_include_tests) {
     }
   }
 
-  if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+  if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
     rtc_test("shared_screencast_stream_test") {
       testonly = true
 
@@ -145,7 +145,7 @@ if (rtc_include_tests) {
       "test_utils_unittest.cc",
     ]
 
-    if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+    if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
       configs += [ "../portal:gio" ]
     }
 
@@ -267,7 +267,7 @@ if (rtc_include_tests) {
 }
 
 # TODO(bugs.webrtc.org/14187): remove when all users are gone
-if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
   config("pipewire_config") {
     configs = [ "../portal:pipewire_config" ]
   }
@@ -329,7 +329,7 @@ rtc_library("desktop_capture") {
     "window_finder.cc",
     "window_finder.h",
   ]
-  if (is_linux && !is_castos && rtc_use_pipewire) {
+  if ((is_linux || is_bsd) && !is_castos && rtc_use_pipewire) {
     sources += [ "desktop_capture_metadata.h" ]
   }
   if (is_mac) {
diff --git third_party/libwebrtc/modules/portal/BUILD.gn third_party/libwebrtc/modules/portal/BUILD.gn
index 6828388b31..7e1857d861 100644
--- third_party/libwebrtc/modules/portal/BUILD.gn
+++ third_party/libwebrtc/modules/portal/BUILD.gn
@@ -10,7 +10,7 @@ import("//chromium/build/config/linux/pkg_config.gni")
 import("//tools/generate_stubs/rules.gni")
 import("../../webrtc.gni")
 
-if ((is_linux || is_chromeos) && rtc_use_pipewire) {
+if ((is_linux || is_chromeos || is_bsd) && rtc_use_pipewire) {
 if (!build_with_mozilla) {
   pkg_config("gio") {
     packages = [
diff --git third_party/libwebrtc/webrtc.gni third_party/libwebrtc/webrtc.gni
index 7155b1db72..22ed06166a 100644
--- third_party/libwebrtc/webrtc.gni
+++ third_party/libwebrtc/webrtc.gni
@@ -151,7 +151,7 @@ declare_args() {
   # By default it's only enabled on desktop Linux (excludes ChromeOS) and
   # only when using the sysroot as PipeWire is not available in older and
   # supported Ubuntu and Debian distributions.
-  rtc_use_pipewire = is_linux && use_sysroot
+  rtc_use_pipewire = (is_linux || is_bsd) && use_sysroot
 
   # Set this to link PipeWire and required libraries directly instead of using the dlopen.
   rtc_link_pipewire = false
