# 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. Depend on
# //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags.
#
# 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 GTK2 are whitelisted on this target.
group("gtk2") {
  visibility = [
    "//build/config/linux/gtk",
    "//chrome/browser/ui/libgtkui:*",
  ]
  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/libgtkui:libgtk2ui" ]
  public_configs = [ ":gtkprint2_internal_config" ]
}
