# 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/gtk3 to use GTKv3. 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("gtk3_internal_config") {
  # Gtk requires gmodule, but it does not list it as a dependency in some
  # misconfigured systems.
  packages = [
    "gmodule-2.0",
    "gtk+-3.0",
    "gthread-2.0",
  ]
}

# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
# parts that explicitly need GTK3 are whitelisted on this target.
group("gtk3") {
  visibility = [
    "//build/config/linux/gtk",
    "//chrome/browser/ui/libgtkui:*",
  ]
  public_configs = [ ":gtk3_internal_config" ]
}

# Depend on "gtkprint3" to get this.
pkg_config("gtkprint3_internal_config") {
  packages = [ "gtk+-unix-print-3.0" ]
}

group("gtkprint3") {
  visibility = [ "//chrome/browser/ui/libgtkui:libgtk3ui" ]
  public_configs = [ ":gtkprint3_internal_config" ]
}
