# 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")

group("sketchy") {
  testonly = true
  deps = [
    ":bin",
    ":sketchy_service",
  ]
}

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 = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/ui/scenic/cpp",
    "//sdk/fidl/fuchsia.ui.sketchy",
    "//src/ui/lib/escher",
    "//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
}
