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