# 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/jumbo.gni")
import("//build/config/ui.gni")
import("//ui/ozone/ozone.gni")

jumbo_source_set("xkb") {
  sources = [
    "keyboard_code_conversion_xkb.cc",
    "keyboard_code_conversion_xkb.h",
    "scoped_xkb.h",
    "xkb_keysym.h",
  ]

  public_deps = [
    "//ui/base:buildflags",
  ]

  deps = [
    "//base",
    "//ui/events:dom_keycode_converter",
  ]
}

if (use_x11 || ozone_platform_x11) {
  jumbo_component("x11") {
    output_name = "keycodes_x11"

    sources = [
      "keyboard_code_conversion_x.cc",
      "keyboard_code_conversion_x.h",
      "keycodes_x_export.h",
      "keysym_to_unicode.cc",
      "keysym_to_unicode.h",
    ]

    defines = [ "KEYCODES_X_IMPLEMENTATION" ]

    deps = [
      ":xkb",
      "//base",
      "//ui/events:dom_keycode_converter",
      "//ui/gfx/x",
    ]

    configs += [ "//build/config/linux:x11" ]
  }
}
