# Copyright 2013 The Flutter 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("//flutter/tools/fuchsia/clang.gni")

fuchsia_sdk_base = "//fuchsia/sdk/$host_os/arch/$target_cpu"
fuchsia_sdk_dist = "$fuchsia_sdk_base/dist"
sysroot_lib = "$fuchsia_sdk_base/sysroot/lib"
sysroot_dist_lib = "$fuchsia_sdk_base/sysroot/dist/lib"

ld_so_path = ""
libcxx_so_2_path = "${clang_manifest_json.md5_19df03aecdc9eb27bc8b4038352f2b27}"
libcxx_abi_so_1_path =
    "${clang_manifest_json.md5_6aff1b5f218d4a9278d85d63d0695af8}"
libunwind_so_1_path =
    "${clang_manifest_json.md5_fb2bd871885ef42c2cf3138655f901ed}"
if (is_asan) {
  ld_so_path = "asan/"
  libcxx_so_2_path =
      "${clang_manifest_json.md5_07cbd4a04b921d2ca61badc1b15a3b0b}"
  libcxx_abi_so_1_path =
      "${clang_manifest_json.md5_18f605e8fd52a92c5f9c6fde9be8206c}"
  libunwind_so_1_path =
      "${clang_manifest_json.md5_85b659ccd825be02f123e3479f1bc280}"
  libclang_rt_so_path =
      "${clang_manifest_json.md5_b76b69d6ab2c13408b7a3608f925b0c6}"
}

common_libs = [
  {
    name = "libasync-default.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libtrace-engine.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libfdio.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libmemfs.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libsyslog.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libvulkan.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "libtrace-provider-so.so"
    path = rebase_path("$fuchsia_sdk_dist")
  },
  {
    name = "ld.so.1"
    path = rebase_path("$sysroot_dist_lib/$ld_so_path")
  },
]

# Note, for clang libs we use the md5 hashes here because of gn limitations of
# json parsing.
# This is a hack, and we can migrate to a better way soon.
common_libs += [
  {
    name = "libc++.so.2"
    path = rebase_path("$clang_base/$libcxx_so_2_path")
  },
  {
    name = "libc++abi.so.1"
    path = rebase_path("$clang_base/$libcxx_abi_so_1_path")
  },
  {
    name = "libunwind.so.1"
    path = rebase_path("$clang_base/$libunwind_so_1_path")
  },
]
if (is_asan) {
  common_libs += [
    {
      name = "libclang_rt.asan.so"
      path = rebase_path("$clang_base/$libclang_rt_so_path")
    },
  ]
}

vulkan_dist = "$fuchsia_sdk_base/dist"

# Note that the other validation libraries in the Fuchsia SDK seem to have a bug right
# now causing crashes, so it is only recommended that we use
# VkLayer_khronos_validation.so until we have a confirmation that they are fixed.
vulkan_validation_libs = [
  {
    name = "VkLayer_khronos_validation.so"
    path = rebase_path("$vulkan_dist")
  },
]

vulkan_data_dir =
    "//fuchsia/sdk/$host_os/pkg/vulkan_layers/data/vulkan/explicit_layer.d"

vulkan_icds = [
  {
    path = rebase_path("$vulkan_data_dir/VkLayer_khronos_validation.json")
    dest = "vulkan/explicit_layer.d/VkLayer_khronos_validation.json"
  },
]
