# Copyright 2019 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/config/clang/clang.gni")

# This adds the runtime deps for C++ for usage when cross compiling.
group("c++-runtime-deps") {
  data_deps = [
    ":clang-runtime-libs",
  ]
}

copy("clang-runtime-libs") {
  if (target_cpu == "arm64") {
    arch = "aarch64"
  } else if (target_cpu == "x64") {
    arch = "x86_64"
  }
  vendor = "unknown"

  sys = target_os
  sources = [
    "${clang_base_path}/lib/${arch}-${vendor}-${sys}/c++/libc++.so.2.0",
    "${clang_base_path}/lib/${arch}-${vendor}-${sys}/c++/libc++abi.so.1.0",
    "${clang_base_path}/lib/${arch}-${vendor}-${sys}/c++/libunwind.so.1.0",
  ]
  outputs = [
    "${root_out_dir}/lib/{{source_name_part}}",
  ]
}
