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

declare_args() {
  # Whether to only warn when an SDK has been modified.
  # If false, any unacknowledged SDK change will cause a build failure.
  warn_on_sdk_changes = false

  # Whether currently building a sub-build (vs. the main build).
  # Can be true for any API level, including the default level.
  sdk_inside_sub_build = false

  # An upper bound on the maximum number of subbuilds that may be running at the
  # same time. A larger number means these good things:
  # - Better parallelization of the inherently single-threaded parts of GN and
  #   ninja.
  # - Better parallelization in the face of "stragglers" in the build -
  #   situations where each subbuild is executing a small number of actions.
  #
  # But also these bad things:
  # - More memory usage, potentially leading to swapping and slowdowns.
  # - More CPU contention when the build process is actually CPU-bound.
  # - Potentially forcing a lower value of `sdk_sub_build_parallelism`, since
  #   the total load is proportional to `sdk_max_simultaneous_sub_builds *
  #   sdk_sub_build_parallelism`.
  #
  # 5 was chosen mostly because it's the number of fingers on each of my hands.
  sdk_max_simultaneous_sub_builds = 5

  # Value of `-j` to pass to ninja during a subbuild. Note that up to
  # `sdk_max_simultaneous_sub_builds` subbuilds may be happening in parallel, so
  # the number of concurrent actions may go as high as this number times the
  # number of concurrent subbuilds. If left blank, the subbuild script will make
  # a guess.
  sdk_sub_build_parallelism = ""

  # Value of `-l` to pass to ninja during a subbuild. If the system load average
  # on the system goes beyond this value, ninja will throttle itself. If left
  # blank, the subbuild script will make a guess.
  sdk_sub_build_max_load_average = ""

  # Set to `true` to enable verbose logging during IDK subbuilds.
  sdk_sub_build_verbose = false
}

# The list of all cpu architectures for the prebuild fuchsia binaries that go
# into the IDK archive.
idk_target_cpus = [
  "arm64",
  "riscv64",
  "x64",
]
