# 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/graphics/lib/vulkan/layers.gni")

group("ui") {
  public_deps = [
    "bouncing_ball",
    "embedder",
    "lab/direct_input",
    "lab/direct_input/child",
    "lab/pose_buffer_presenter",
    "lab/scenic_dev_app",
    "shadertoy/client",
    "shadertoy/service",
    "simplest_app",
    "simplest_embedder",
    "spinning_square",
    "standalone_app",
    "tile",
    "yuv_to_image_pipe",
  ]
}

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

  binary = "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("direct_input") {
  deps = [
    "lab/direct_input",
  ]

  binary = "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",
  ]

  binary = "direct_input_child"

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

package("pose_buffer_presenter") {
  deps = [
    "lab/pose_buffer_presenter",
    "//src/graphics/lib/vulkan:validation_layers",
  ]

  binary = "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",
  ]

  binary = "scenic_dev_app"

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

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

  binary = "shadertoy_client"

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

package("shadertoy_service") {
  deps = [
    "shadertoy/service",
    "//src/graphics/lib/vulkan:validation_layers",
  ]

  binary = "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",
  ]

  binary = "simplest_app"

  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",
  ]

  binary = "simplest_embedder"

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

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

  binary = "spinning_square_view"

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

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

  binary = "standalone_app"

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

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

  binary = "tile_view"

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

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

  binary = "yuv_to_image_pipe"

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