# 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.

# Calculation of the default job concurrency has been moved to a separate gni
# file that is only imported where the below pools are defined, as the rest of
# the tree doesn't need access to that, and other toolchains shouldn't wait to
# calculate that value within their own toolchain, as it won't be used.

concurrent_jobs = {
  # Configuration for tools that run remotely, and consume negligible local CPU
  # or memory, e.g. Goma or RBE.
  remote = {
    # Unconstrained by GN, and left up other constraints like ninja -j.
  }

  # Configuration for tools that must run locally
  local = {
    pool = "//build/config:local($default_toolchain)"
  }

  # Configuration for exceptionally memory-intensive jobs.
  highmem = {
    pool = "//build/config:highmem($default_toolchain)"
  }
}
