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

assert(use_x11 || ozone_platform_x11)

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

  deps = [
    "//base",
    "//skia",
    "//ui/events",
    "//ui/events/devices",
    "//ui/events/devices/x11",
    "//ui/events/platform",
    "//ui/events/platform/x11",
    "//ui/gfx/x",
    "//ui/platform_window",
  ]

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

  defines = [ "X11_WINDOW_IMPLEMENTATION" ]

  sources = [
    "x11_window_base.cc",
    "x11_window_base.h",
    "x11_window_export.h",
  ]

  if (ozone_platform_x11) {
    sources += [
      "x11_cursor_ozone.cc",
      "x11_cursor_ozone.h",
      "x11_window_manager_ozone.cc",
      "x11_window_manager_ozone.h",
      "x11_window_ozone.cc",
      "x11_window_ozone.h",
    ]
    deps += [
      "//ui/base",
      "//ui/base/x",
    ]
  } else if (use_x11) {
    sources += [
      "x11_window.cc",
      "x11_window.h",
    ]
  }
}
