# 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/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/config/ui.gni")

# TODO(crbug.com/1171629): Change this back to is_chromeos.
# CrOS doesn't install GTK or any gnome packages.
assert(!is_chromeos_ash)

# These packages should _only_ be expected when building for a target.
assert(current_toolchain == default_toolchain)

if (use_atk) {
  assert(use_glib, "use_atk=true requires that use_glib=true")
}

pkg_config("atk") {
  packages = [
    "atk",
    "atk-bridge-2.0",
  ]
  atk_lib_dir = exec_script(pkg_config_script,
                            pkg_config_args + [
                                  "--libdir",
                                  "atk",
                                ],
                            "string")
  defines = [
    "ATK_LIB_DIR=\"$atk_lib_dir\"",
    "USE_ATK_BRIDGE",
  ]
}
