# Copyright 2016 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("//src/lib/vulkan/compact_image.gni")
import("//src/lib/vulkan/layers.gni")

group("examples") {
  public_deps = [
    ":bouncing_ball",
    ":direct_input",
    ":direct_input_child",
    ":embedder",
    ":frame-compression",
    ":pose_buffer_presenter",
    ":scenic_dev_app",
    ":shadertoy_client",
    ":shadertoy_service",
    ":simplest_app",
    ":simplest_embedder",
    ":spinning_square_view",
    ":standalone_app",
    ":tile_view",
    ":yuv_to_image_pipe",
  ]
}

package("bouncing_ball") {
  deps = [ "bouncing_ball" ]

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

package("embedder") {
  deps = [
    "embedder",
    "embedder:subview",
  ]

  binaries = [
    {
      name = "embedder"
    },
    {
      name = "subview"
    },
  ]

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

package("frame-compression") {
  deps = [ "frame-compression" ]

  binaries = [
    {
      name = "frame-compression"
    },
  ]
  meta = [
    {
      path = rebase_path("frame-compression/meta/frame-compression.cmx")
      dest = "frame-compression.cmx"
    },
  ]

  public_deps = vulkan_validation_layers.public_deps + compact_image.public_deps
  loadable_modules =
      vulkan_validation_layers.loadable_modules + compact_image.loadable_modules
  resources = vulkan_validation_layers.resources + compact_image.resources
}

package("direct_input") {
  deps = [ "lab/direct_input" ]

  binaries = [
    {
      name = "direct_input"
    },
  ]
  meta = [
    {
      path = rebase_path("lab/direct_input/meta/direct_input.cmx")
      dest = "direct_input.cmx"
    },
  ]
}

package("direct_input_child") {
  deps = [ "lab/direct_input/child" ]

  binaries = [
    {
      name = "direct_input_child"
    },
  ]
  meta = [
    {
      path = rebase_path("lab/direct_input/meta/direct_input_child.cmx")
      dest = "direct_input_child.cmx"
    },
  ]
}

package("pose_buffer_presenter") {
  deps = [ "lab/pose_buffer_presenter" ]

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

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

package("scenic_dev_app") {
  deps = [ "lab/scenic_dev_app" ]

  binaries = [
    {
      name = "scenic_dev_app"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "scenic_dev_app.cmx"
    },
  ]
}

package("shadertoy_client") {
  deps = [ "shadertoy/client" ]

  binaries = [
    {
      name = "shadertoy_client"
    },
  ]
  meta = [
    {
      path = rebase_path("shadertoy/client/meta/shadertoy_client.cmx")
      dest = "shadertoy_client.cmx"
    },
  ]
}

package("shadertoy_service") {
  deps = [ "shadertoy/service" ]

  binaries = [
    {
      name = "shadertoy_service"
    },
  ]
  meta = [
    {
      path = rebase_path("shadertoy/service/meta/shadertoy_service.cmx")
      dest = "shadertoy_service.cmx"
    },
  ]

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

package("simplest_app") {
  deps = [ "simplest_app" ]

  binaries = [
    {
      name = "simplest_app"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "simplest_app.cmx"
    },
  ]
}

# NOTE: this depends on the shadertoy_client example, which is launched by
# the simplest_embedder binary.
package("simplest_embedder") {
  deps = [
    "shadertoy/client",
    "simplest_embedder",
  ]

  binaries = [
    {
      name = "simplest_embedder"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "simplest_embedder.cmx"
    },
  ]
}

package("spinning_square_view") {
  deps = [ "spinning_square" ]

  binaries = [
    {
      name = "spinning_square_view"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "spinning_square_view.cmx"
    },
  ]
}

package("standalone_app") {
  deps = [ "standalone_app" ]

  binaries = [
    {
      name = "standalone_app"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "standalone_app.cmx"
    },
  ]
}

package("tile_view") {
  deps = [ "tile" ]

  binaries = [
    {
      name = "tile_view"
      dest = "ui_example"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/ui_example.cmx")
      dest = "tile_view.cmx"
    },
  ]
}

package("yuv_to_image_pipe") {
  deps = [ "yuv_to_image_pipe" ]

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