# Copyright 2017 The Chromium 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/toolchain/gcc_toolchain.gni")

# Fuchsia builds using the Clang toolchain, with most parameters common across
# the different target architectures.
template("fuchsia_clang_toolchain") {
  clang_toolchain(target_name) {
    assert(host_os == "linux" || host_os == "mac")
    assert(defined(invoker.toolchain_args),
           "toolchain_args must be defined for fuchsia_clang_toolchain()")

    # We want to build and strip binaries, but retain the unstripped binaries
    # in runtime_deps to make them available for isolates.
    strip = rebase_path("${clang_base_path}/bin/llvm-strip", root_build_dir)
    use_unstripped_as_runtime_outputs = true

    default_shlib_subdir = "/lib"

    toolchain_args = invoker.toolchain_args
    toolchain_args.current_os = "fuchsia"
  }
}

fuchsia_clang_toolchain("x64") {
  toolchain_args = {
    current_cpu = "x64"
  }
}

fuchsia_clang_toolchain("arm64") {
  toolchain_args = {
    current_cpu = "arm64"
  }
}
