# Copyright 2016 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/linux/gtk/gtk.gni") import("//build/config/linux/pkg_config.gni") assert(is_linux, "This file should only be referenced on Linux") declare_args() { # The (major) version of GTK to build against. A different version may be # loaded at runtime. gtk_version = 3 } # GN doesn't check visibility for configs so we give this an obviously internal # name to discourage random targets from accidentally depending on this and # bypassing the GTK target's visibility. pkg_config("gtk_internal_config") { # Gtk requires gmodule, but it does not list it as a dependency in some # misconfigured systems. packages = [ "gmodule-2.0", "gthread-2.0", ] if (gtk_version == 3) { packages += [ "gtk+-3.0" ] } else { assert(gtk_version == 4) packages += [ "gtk4" ] } } group("gtk") { visibility = [ # This is the only target that can depend on GTK. Do not add more targets # to this list. "//ui/gtk:gtk_stubs", # These are allow-listed for WebRTC builds. "//examples:peerconnection_client", "//remoting/host:common", "//remoting/host:remoting_me2me_host_static", "//remoting/host/file_transfer", "//remoting/host/it2me:common", "//remoting/host/it2me:remote_assistance_host", "//remoting/host/linux", "//remoting/host/remote_open_url:common", "//remoting/test:it2me_standalone_host_main", "//webrtc/examples:peerconnection_client", ] public_configs = [ ":gtk_internal_config" ] } # Depend on "gtkprint" to get this. pkg_config("gtkprint_internal_config") { if (gtk_version == 3) { packages = [ "gtk+-unix-print-3.0" ] } else { assert(gtk_version == 4) packages = [ "gtk4-unix-print" ] } } group("gtkprint") { visibility = [ "//ui/gtk:*" ] public_configs = [ ":gtkprint_internal_config" ] }