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

assert(is_fuchsia)

import("//gpu/vulkan/features.gni")

visibility = [ "//ui/ozone/*" ]

source_set("scenic") {
  sources = [
    "client_native_pixmap_factory_scenic.cc",
    "client_native_pixmap_factory_scenic.h",
    "ozone_platform_scenic.cc",
    "ozone_platform_scenic.h",
    "scenic_gpu_host.cc",
    "scenic_gpu_host.h",
    "scenic_gpu_service.cc",
    "scenic_gpu_service.h",
    "scenic_screen.cc",
    "scenic_screen.h",
    "scenic_surface.cc",
    "scenic_surface.h",
    "scenic_surface_factory.cc",
    "scenic_surface_factory.h",
    "scenic_window.cc",
    "scenic_window.h",
    "scenic_window_canvas.cc",
    "scenic_window_canvas.h",
    "scenic_window_manager.cc",
    "scenic_window_manager.h",
  ]

  defines = [ "OZONE_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//mojo/public/cpp/system",
    "//services/service_manager/public/cpp",
    "//skia",
    "//third_party/fuchsia-sdk/sdk:images",
    "//third_party/fuchsia-sdk/sdk:mem",
    "//third_party/fuchsia-sdk/sdk:scenic_cpp",
    "//third_party/fuchsia-sdk/sdk:ui_gfx",
    "//third_party/fuchsia-sdk/sdk:ui_scenic",
    "//third_party/fuchsia-sdk/sdk:ui_viewsv1",
    "//third_party/fuchsia-sdk/sdk:ui_viewsv1token",
    "//ui/base",
    "//ui/display/manager",
    "//ui/events:dom_keycode_converter",
    "//ui/events/ozone:events_ozone_layout",
    "//ui/gfx/geometry",
    "//ui/ozone:ozone_base",
    "//ui/ozone/common",
    "//ui/ozone/public/interfaces",
    "//ui/platform_window",
  ]

  if (enable_vulkan) {
    sources += [
      "vulkan_implementation_scenic.cc",
      "vulkan_implementation_scenic.h",
      "vulkan_magma.h",
    ]
    defines += [ "VK_USE_PLATFORM_MAGMA_KHR" ]
  }
}
