xref: /aosp_15_r20/external/webrtc/modules/portal/BUILD.gn (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2022 The WebRTC project authors. All Rights Reserved.
2*d9f75844SAndroid Build Coastguard Worker#
3*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license
4*d9f75844SAndroid Build Coastguard Worker# that can be found in the LICENSE file in the root of the source
5*d9f75844SAndroid Build Coastguard Worker# tree. An additional intellectual property rights grant can be found
6*d9f75844SAndroid Build Coastguard Worker# in the file PATENTS.  All contributing project authors may
7*d9f75844SAndroid Build Coastguard Worker# be found in the AUTHORS file in the root of the source tree.
8*d9f75844SAndroid Build Coastguard Worker
9*d9f75844SAndroid Build Coastguard Workerimport("//build/config/linux/pkg_config.gni")
10*d9f75844SAndroid Build Coastguard Workerimport("//tools/generate_stubs/rules.gni")
11*d9f75844SAndroid Build Coastguard Workerimport("../../webrtc.gni")
12*d9f75844SAndroid Build Coastguard Worker
13*d9f75844SAndroid Build Coastguard Workerif ((is_linux || is_chromeos) && rtc_use_pipewire) {
14*d9f75844SAndroid Build Coastguard Worker  pkg_config("gio") {
15*d9f75844SAndroid Build Coastguard Worker    packages = [
16*d9f75844SAndroid Build Coastguard Worker      "gio-2.0",
17*d9f75844SAndroid Build Coastguard Worker      "gio-unix-2.0",
18*d9f75844SAndroid Build Coastguard Worker    ]
19*d9f75844SAndroid Build Coastguard Worker  }
20*d9f75844SAndroid Build Coastguard Worker
21*d9f75844SAndroid Build Coastguard Worker  pkg_config("pipewire") {
22*d9f75844SAndroid Build Coastguard Worker    packages = [ "libpipewire-0.3" ]
23*d9f75844SAndroid Build Coastguard Worker    if (!rtc_link_pipewire) {
24*d9f75844SAndroid Build Coastguard Worker      ignore_libs = true
25*d9f75844SAndroid Build Coastguard Worker    }
26*d9f75844SAndroid Build Coastguard Worker  }
27*d9f75844SAndroid Build Coastguard Worker
28*d9f75844SAndroid Build Coastguard Worker  pkg_config("gbm") {
29*d9f75844SAndroid Build Coastguard Worker    packages = [ "gbm" ]
30*d9f75844SAndroid Build Coastguard Worker  }
31*d9f75844SAndroid Build Coastguard Worker  pkg_config("egl") {
32*d9f75844SAndroid Build Coastguard Worker    packages = [ "egl" ]
33*d9f75844SAndroid Build Coastguard Worker  }
34*d9f75844SAndroid Build Coastguard Worker  pkg_config("epoxy") {
35*d9f75844SAndroid Build Coastguard Worker    packages = [ "epoxy" ]
36*d9f75844SAndroid Build Coastguard Worker    ignore_libs = true
37*d9f75844SAndroid Build Coastguard Worker  }
38*d9f75844SAndroid Build Coastguard Worker  pkg_config("libdrm") {
39*d9f75844SAndroid Build Coastguard Worker    packages = [ "libdrm" ]
40*d9f75844SAndroid Build Coastguard Worker  }
41*d9f75844SAndroid Build Coastguard Worker
42*d9f75844SAndroid Build Coastguard Worker  if (!rtc_link_pipewire) {
43*d9f75844SAndroid Build Coastguard Worker    # When libpipewire is not directly linked, use stubs to allow for dlopening of
44*d9f75844SAndroid Build Coastguard Worker    # the binary.
45*d9f75844SAndroid Build Coastguard Worker    generate_stubs("pipewire_stubs") {
46*d9f75844SAndroid Build Coastguard Worker      configs = [
47*d9f75844SAndroid Build Coastguard Worker        "../../:common_config",
48*d9f75844SAndroid Build Coastguard Worker        ":pipewire",
49*d9f75844SAndroid Build Coastguard Worker      ]
50*d9f75844SAndroid Build Coastguard Worker      deps = [ "../../rtc_base" ]
51*d9f75844SAndroid Build Coastguard Worker      extra_header = "pipewire_stub_header.fragment"
52*d9f75844SAndroid Build Coastguard Worker      logging_function = "RTC_LOG(LS_VERBOSE)"
53*d9f75844SAndroid Build Coastguard Worker      logging_include = "rtc_base/logging.h"
54*d9f75844SAndroid Build Coastguard Worker      output_name = "pipewire_stubs"
55*d9f75844SAndroid Build Coastguard Worker      path_from_source = "modules/portal"
56*d9f75844SAndroid Build Coastguard Worker      sigs = [ "pipewire.sigs" ]
57*d9f75844SAndroid Build Coastguard Worker      if (!build_with_chromium) {
58*d9f75844SAndroid Build Coastguard Worker        macro_include = "rtc_base/system/no_cfi_icall.h"
59*d9f75844SAndroid Build Coastguard Worker        macro_deps = [ "../../rtc_base/system:no_cfi_icall" ]
60*d9f75844SAndroid Build Coastguard Worker      }
61*d9f75844SAndroid Build Coastguard Worker    }
62*d9f75844SAndroid Build Coastguard Worker  }
63*d9f75844SAndroid Build Coastguard Worker
64*d9f75844SAndroid Build Coastguard Worker  config("pipewire_base") {
65*d9f75844SAndroid Build Coastguard Worker    configs = [
66*d9f75844SAndroid Build Coastguard Worker      ":gio",
67*d9f75844SAndroid Build Coastguard Worker      ":pipewire",
68*d9f75844SAndroid Build Coastguard Worker    ]
69*d9f75844SAndroid Build Coastguard Worker  }
70*d9f75844SAndroid Build Coastguard Worker
71*d9f75844SAndroid Build Coastguard Worker  config("pipewire_all") {
72*d9f75844SAndroid Build Coastguard Worker    configs = [
73*d9f75844SAndroid Build Coastguard Worker      ":pipewire_base",
74*d9f75844SAndroid Build Coastguard Worker      ":gbm",
75*d9f75844SAndroid Build Coastguard Worker      ":egl",
76*d9f75844SAndroid Build Coastguard Worker      ":epoxy",
77*d9f75844SAndroid Build Coastguard Worker      ":libdrm",
78*d9f75844SAndroid Build Coastguard Worker    ]
79*d9f75844SAndroid Build Coastguard Worker  }
80*d9f75844SAndroid Build Coastguard Worker
81*d9f75844SAndroid Build Coastguard Worker  config("pipewire_config") {
82*d9f75844SAndroid Build Coastguard Worker    defines = [ "WEBRTC_USE_PIPEWIRE" ]
83*d9f75844SAndroid Build Coastguard Worker
84*d9f75844SAndroid Build Coastguard Worker    # Chromecast build config overrides `WEBRTC_USE_PIPEWIRE` even when
85*d9f75844SAndroid Build Coastguard Worker    # `rtc_use_pipewire` is not set, which causes pipewire_config to not be
86*d9f75844SAndroid Build Coastguard Worker    # included in targets. More details in: webrtc:13898
87*d9f75844SAndroid Build Coastguard Worker    if (is_linux && !is_castos) {
88*d9f75844SAndroid Build Coastguard Worker      defines += [ "WEBRTC_USE_GIO" ]
89*d9f75844SAndroid Build Coastguard Worker    }
90*d9f75844SAndroid Build Coastguard Worker  }
91*d9f75844SAndroid Build Coastguard Worker
92*d9f75844SAndroid Build Coastguard Worker  rtc_library("portal") {
93*d9f75844SAndroid Build Coastguard Worker    sources = [
94*d9f75844SAndroid Build Coastguard Worker      "pipewire_utils.cc",
95*d9f75844SAndroid Build Coastguard Worker      "pipewire_utils.h",
96*d9f75844SAndroid Build Coastguard Worker      "portal_request_response.h",
97*d9f75844SAndroid Build Coastguard Worker      "scoped_glib.cc",
98*d9f75844SAndroid Build Coastguard Worker      "scoped_glib.h",
99*d9f75844SAndroid Build Coastguard Worker      "xdg_desktop_portal_utils.cc",
100*d9f75844SAndroid Build Coastguard Worker      "xdg_desktop_portal_utils.h",
101*d9f75844SAndroid Build Coastguard Worker      "xdg_session_details.h",
102*d9f75844SAndroid Build Coastguard Worker    ]
103*d9f75844SAndroid Build Coastguard Worker
104*d9f75844SAndroid Build Coastguard Worker    configs += [
105*d9f75844SAndroid Build Coastguard Worker      ":gio",
106*d9f75844SAndroid Build Coastguard Worker      ":pipewire",
107*d9f75844SAndroid Build Coastguard Worker      ":pipewire_config",
108*d9f75844SAndroid Build Coastguard Worker    ]
109*d9f75844SAndroid Build Coastguard Worker
110*d9f75844SAndroid Build Coastguard Worker    deps = [
111*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:checks",
112*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:logging",
113*d9f75844SAndroid Build Coastguard Worker      "../../rtc_base:sanitizer",
114*d9f75844SAndroid Build Coastguard Worker    ]
115*d9f75844SAndroid Build Coastguard Worker    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
116*d9f75844SAndroid Build Coastguard Worker
117*d9f75844SAndroid Build Coastguard Worker    if (!rtc_link_pipewire) {
118*d9f75844SAndroid Build Coastguard Worker      defines = [ "WEBRTC_DLOPEN_PIPEWIRE" ]
119*d9f75844SAndroid Build Coastguard Worker
120*d9f75844SAndroid Build Coastguard Worker      deps += [ ":pipewire_stubs" ]
121*d9f75844SAndroid Build Coastguard Worker    }
122*d9f75844SAndroid Build Coastguard Worker  }
123*d9f75844SAndroid Build Coastguard Worker}
124