# Copyright 2016 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/toolchain/clang_toolchain.gni")
import("//build/toolchain/concurrent_jobs.gni")

declare_args() {
  # Maximum number of concurrent link jobs.
  #
  # We often want to run fewer links at once than we do compiles, because
  # linking is memory-intensive. The default to use varies by platform and by
  # the amount of memory available, so we call out to a script to get the right
  # value.
  concurrent_link_jobs = default_concurrent_jobs.link
}

pool("link") {
  depth = concurrent_link_jobs
}

clang_host_toolchain_suite("host_${host_cpu}") {
}

clang_toolchain_suite("linux_x64") {
  toolchain_cpu = "x64"
  toolchain_os = "linux"
  use_strip = true
  with_shared = true
}

clang_toolchain_suite("linux_arm64") {
  toolchain_cpu = "arm64"
  toolchain_os = "linux"
  use_strip = true
  with_shared = true
}
