blob: d5e62e0f80d3d52de89e7f8e0f7283e3a54dce09 [file] [log] [blame]
# Copyright 2020 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/unification/global_variables.gni")
# The `linker` global variable indicates which linker is used to build
# binaries, the following values are supported:
#
# - "lld": For the Clang linker
# - "gold": For the Gold linker, used when building with GCC.
# - "": For the default linker associated with the current compiler, e.g.
# this will be the BFD linker when using GCC.
#
if (current_os == "mac") {
# Only the native host linker works for macOS.
linker = ""
} else if (is_gcc) {
# Assume ld.gold is available for any native Linux host, and for any ELF
# cross-compile target. Use Gold for userland, and BFD ld for kernel.
if (current_os == "linux" ||
((current_cpu != host_cpu || current_os != host_os) && !is_kernel &&
current_os != "win")) {
linker = "gold"
} else {
# For GCC on non-ELF hosts, use the system default linker.
linker = ""
}
} else {
# Always use lld with Clang.
linker = "lld"
}