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

import("//build/config/lto/config.gni")
import("//build/toolchain/goma.gni")

_script = "get_concurrent_jobs.py"
_args = [
  "-S",  # https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=62771
  rebase_path(_script, root_build_dir),
  "--reserve-memory=1GB",
]
if (use_thinlto) {
  _args += [
    "--memory-per-job",
    "local=2GB",
  ]
} else if (use_lto) {
  _args += [
    "--memory-per-job",
    "local=4GB",
  ]
} else {
  _args += [
    "--memory-per-job",
    "local=1GB",
  ]
}
_args += [
  "--memory-per-job",
  "dart=1GB",
]
default_concurrent_jobs =
    exec_script(python_exe_src, _args, "json", [ _script ])

concurrent_jobs = {
  # Specific configuration for tools that run on Goma
  goma = {
    if (!use_goma) {
      # Without Goma, these tools resort to running locally
      pool = "//build/config:local($default_toolchain)"
    }
  }

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