# Copyright 2015 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/pkg_config.gni")

assert(is_linux, "This file should only be referenced on Linux")

# Depend on //build/config/linux/gtk2 to use GTKv2.
#
# 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("gtk2_internal_config") {
  # Gtk requires gmodule, but it does not list it as a dependency in some
  # misconfigured systems.
  packages = [
    "gmodule-2.0",
    "gtk+-2.0",
    "gthread-2.0",
  ]
}

# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
# parts that explicitly need GTK are whitelisted on this target.
group("gtk2") {
  visibility = [
    "//chrome/browser/ui/libgtk2ui",
    "//gpu/gles2_conform_support:gles2_conform_test_windowless",
    "//remoting/host",
    "//remoting/host/it2me:remote_assistance_host",
    "//remoting/host:remoting_me2me_host_static",
  ]
  public_configs = [ ":gtk2_internal_config" ]
}

# Depend on "gtkprint" to get this.
pkg_config("gtkprint2_internal_config") {
  packages = [ "gtk+-unix-print-2.0" ]
}

group("gtkprint2") {
  visibility = [ "//chrome/browser/ui/libgtk2ui" ]
  public_configs = [ ":gtkprint2_internal_config" ]
}
