# Copyright 2018 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("resources.gni")

action("build") {
  script = "build.sh"
  args = [ rebase_path(root_out_dir) ]
  deps = [
    "//garnet/public/sdk:zircon_sysroot_export",
    "//third_party/vulkan_loader_and_validation_layers:vulkan",
    "//zircon/public/lib/fdio:fdio_sdk",
    "//zircon/public/lib/launchpad:launchpad_sdk",
  ]

  depfile = "$root_out_dir/build-vulkancts/vulkan-cts.d"
  outputs = [
    "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
  ]
}

copy("copy") {
  sources = [
    "$root_out_dir/build-vulkancts/external/vulkancts/modules/vulkan/deqp-vk",
  ]
  outputs = [
    "$root_build_dir/deqp-vk",
  ]
  deps = [
    ":build",
  ]
}

package("vulkan-cts") {
  deps = [
    ":copy",
  ]
  binary = "deqp-vk"
  meta = [
    {
      path = rebase_path("meta/sandbox")
      dest = "sandbox"
    },
  ]
  resources = cts_resources
}
