# 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.

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 (use_glib) {
    sources -= [ "x11_event_source_libevent.cc" ]

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