# Copyright 2017 The Fuchsia 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/package.gni")
import("//third_party/vulkan_loader_and_validation_layers/layers/layers.gni")

executable("bin") {
  output_name = "sketchy_service"

  sources = [
    "app.cc",
    "app.h",
    "buffer/appendable_buffer.cc",
    "buffer/appendable_buffer.h",
    "buffer/mesh_buffer.cc",
    "buffer/mesh_buffer.h",
    "buffer/shared_buffer.cc",
    "buffer/shared_buffer.h",
    "buffer/shared_buffer_pool.cc",
    "buffer/shared_buffer_pool.h",
    "canvas.cc",
    "canvas.h",
    "frame.cc",
    "frame.h",
    "main.cc",
    "resources/import_node.cc",
    "resources/import_node.h",
    "resources/resource.cc",
    "resources/resource.h",
    "resources/resource_map.cc",
    "resources/resource_map.h",
    "resources/stroke.cc",
    "resources/stroke.h",
    "resources/stroke_group.cc",
    "resources/stroke_group.h",
    "resources/types.h",
    "stroke/cubic_bezier.cc",
    "stroke/cubic_bezier.h",
    "stroke/divided_stroke_path.cc",
    "stroke/divided_stroke_path.h",
    "stroke/stroke_fitter.cc",
    "stroke/stroke_fitter.h",
    "stroke/stroke_manager.cc",
    "stroke/stroke_manager.h",
    "stroke/stroke_path.cc",
    "stroke/stroke_path.h",
    "stroke/stroke_tessellator.cc",
    "stroke/stroke_tessellator.h",
    "util/glm_types.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.ui.sketchy",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/escher",
    "//garnet/public/lib/ui/scenic/cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]

  include_dirs = [ "//third_party/glm" ]
}

package("sketchy_service") {
  deps = [
    ":bin",
  ]

  binaries = [
    {
      name = "sketchy_service"
    },
  ]

  meta = [
    {
      path = rebase_path("meta/sketchy_service.cmx")
      dest = "sketchy_service.cmx"
    },
  ]

  public_deps = vulkan_validation_layers.public_deps
  loadable_modules = vulkan_validation_layers.loadable_modules
  resources = vulkan_validation_layers.resources
}
