# Copyright 2021 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_cpu.gni")

# The `current_target_tuple` is the compiler-specific tuple matching the
# binaries generated by the current toolchain, recognized by both GCC
# and Clang.
if (is_fuchsia) {
  current_target_tuple = "${clang_cpu}-unknown-fuchsia"
} else if (is_linux) {
  current_target_tuple = "${clang_cpu}-unknown-linux-gnu"
} else if (is_mac) {
  current_target_tuple = "${clang_cpu}-apple-darwin"
} else if (current_cpu == "wasm32" && current_os == "unknown") {
  current_target_tuple = "${clang_cpu}-unknown-unknown"
} else if (current_os == "win") {
  current_target_tuple = "${clang_cpu}-pc-windows-msvc"
} else {
  assert(false,
         "OS not supported current_os=${current_os} current_cpu=${current_cpu}")
}
