# 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")

# The target in this file will automatically reference GTK2 or GTK3 depending
# on the state of the build flag. Some builds reference both 2 and 3, and some
# builds reference neither, so both need to be available but in different
# directories so pkg-config is only run when necessary.

# Basically no parts of Chrome should depend on GTK. To prevent accidents, the
# parts that explicitly need GTK are whitelisted on this target.
group("gtk") {
  visibility = [
    "//chrome/test:interactive_ui_tests",
    "//examples:peerconnection_client",
    "//gpu/gles2_conform_support:gles2_conform_test_windowless",
    "//remoting/host",
    "//remoting/host/linux",
    "//remoting/host/it2me:common",
    "//remoting/host/it2me:remote_assistance_host",
    "//remoting/host:remoting_me2me_host_static",
    "//remoting/test:it2me_standalone_host_main",
    "//webrtc/examples:peerconnection_client",
  ]

  if (use_gtk3) {
    public_deps = [
      "//build/config/linux/gtk3",
    ]
  } else {
    public_deps = [
      "//build/config/linux/gtk2",
    ]
  }
}
