# Copyright 2014 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/ui.gni")

assert(use_x11)

component("x11") {
  output_name = "x11_events_platform"

  sources = [
    "x11_event_source.cc",
    "x11_event_source.h",
    "x11_event_source_glib.cc",
    "x11_event_source_libevent.cc",
    "x11_hotplug_event_handler.cc",
    "x11_hotplug_event_handler.h",
  ]

  defines = [ "EVENTS_IMPLEMENTATION" ]

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

  public_deps = [
    "//ui/events",
    "//ui/events:events_base",
    "//ui/events/devices",
    "//ui/events/platform",
    "//ui/gfx/x",
  ]

  deps = [
    "//base",
  ]

  if (is_linux) {
    sources -= [ "x11_event_source_libevent.cc" ]

    configs += [ "//build/config/linux:glib" ]
  } else {
    sources -= [ "x11_event_source_glib.cc" ]
  }
}
