# Copyright 2016 The Chromium Authors
# 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")

# 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 = [
    # These are allow-listed for WebRTC builds.  Nothing in else should depend
    # on GTK.
    "//examples:peerconnection_client",
    "//remoting/host:common",
    "//remoting/host:remoting_me2me_host_static",
    "//remoting/host/file_transfer",
    "//remoting/host/it2me:common",
    "//remoting/host/it2me:main",
    "//remoting/host/linux:platform_impls",
    "//remoting/host/linux:x11_display_utils",
    "//remoting/host/remote_open_url:common",
    "//remoting/test:it2me_standalone_host_main",
    "//webrtc/examples:peerconnection_client",
  ]

  public_configs = [ ":gtk_internal_config" ]
}
