# 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("//garnet/lib/magma/gnbuild/magma.gni")

package("magma-tools") {
  deps = [
    ":tools",
  ]
  binaries = [
      {
        name = "magma_info"
      },
  ]
  meta = [
      {
        path = rebase_path("meta/magma-tools.cmx")
        dest = "magma-tools.cmx"
      },
    ]
}

package("vkcube") {
  if (have_libvulkan || use_vulkan_loader_for_tests) {
    deps = [
      "//garnet/lib/magma/tests/vkcube",
    ]

    binary = "vkcube"

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

# This config allows inclusion of headers via relative paths from src
config("magma_src_include_config") {
  include_dirs = [ "src" ]
}

# This config allows inclusion of headers via relative paths from tests
config("magma_tests_include_config") {
  include_dirs = [ "tests" ]
}

group("tools") {
  public_deps = [
    "src/tools",
  ]
}
