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

#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
# Here to enable an unstable feature? All unstable features require special
# approval because they create risk and may have stable alternatives that better
# fit our needs. See the "Unstable features" section for more information.

import("//build/board.gni")
import("//build/images/filesystem_limits.gni")
import("//build/rust/config.gni")
import("//build/toolchain/rbe.gni")

declare_args() {
  # Controls whether the rust compiler uses v0 symbol mangling scheme
  # (see https://github.com/rust-lang/rfcs/blob/HEAD/text/2603-rust-symbol-name-mangling-v0.md).
  rust_v0_symbol_mangling = true

  # Enable incremental rust compilation. Takes a path to the directory to use
  # as the cache.
  rust_incremental = ""

  # Enable debug assertions, e.g. for overflow checking.
  rust_debug_assertions = is_debug

  # Enable the rust parallel front-end with N threads
  rust_parallel_frontend_threads = false
}

# Turns on the rust compilation analysis generator. This will produce a
# directory $OUT/save-analysis-temp, which will dump all the source analysis
# that the compiler collected while analyzing the source.  This config is
# included conditionally, see //build/config/BUILDCONFIG.gn for details.
config("analysis") {
  rustflags = [ "-Zsave-analysis" ]
}

config("self-profile") {
  rustflags = [
    "-Zself-profile",
    "-Zself-profile-events=default,args",
  ]
}

config("time-passes") {
  rustflags = [ "-Ztime-passes" ]
}

config("edition_2021") {
  rustflags = [ "--edition=2021" ]
}

config("edition_2018") {
  rustflags = [ "--edition=2018" ]
}

config("edition_2015") {
  rustflags = [ "--edition=2015" ]
}

config("no_features") {
  rustflags = [ "-Zallow-features=" ]
}

config("incremental") {
  if (rust_incremental != "") {
    if (rust_rbe_enable) {
      # Hide incremental mode from remote execution; do not attempt to
      # use any local incremental cache state (which would surely
      # result in a cache miss).
      # Caveat: Local and remote outputs may no longer be bit-identical
      # when adding such local-only options.  Use with care.
      rustflags = [ "--local-only=-Cincremental=" + rust_incremental ]
    } else {
      rustflags = [ "-Cincremental=" + rust_incremental ]
    }
  }
}

config("one_codegen_unit") {
  # Disable codegen parallelism.
  # Trades incremental rebuild speed for smaller code size.
  # See: https://fxbug.dev/42154118, https://fxbug.dev/42160867
  if (rust_incremental == "") {
    rustflags = [ "-Ccodegen-units=1" ]
  }
}

config("codegen_units_16") {
  # Enable default codegen parallelism (rustc default).
  # This will increase code size over `:one_codegen_unit` above.
  #
  # Used without any lto option, this will also enable thin-local lto.
  # https://doc.rust-lang.org/rustc/codegen-options/index.html#lto
  if (rust_incremental == "") {
    rustflags = [ "-Ccodegen-units=16" ]
  }
}

config("parallel_frontend_threads") {
  if (rust_parallel_frontend_threads != false) {
    # Use the parallel front-end with up to N threads, set by the
    # rust_parallel_frontend_threads GN arg.
    rustflags = [
      "-Z",
      "threads=${rust_parallel_frontend_threads}",
    ]
  }
}

config("debug_assertions") {
  rustflags = [ "-Cdebug-assertions=yes" ]
}

config("no_debug_assertions") {
  rustflags = [ "-Cdebug-assertions=no" ]
}

config("default_debug_assertions") {
  if (rust_debug_assertions) {
    configs = [ ":debug_assertions" ]
  } else {
    configs = [ ":no_debug_assertions" ]
  }
}

# Enables linker plugin LTO.
#
# If an rlib is only ever going to get used later with a -Clto compilation then
# you can pass -Clinker-plugin-lto to speed up compilation and avoid generating
# object files that aren't used.
#
# See
# https://doc.rust-lang.org/rustc/codegen-options/index.html#linker-plugin-lto
# for details.
config("linker_plugin_lto") {
  rustflags = [
    "-Clinker-plugin-lto",
    "-Zsplit-lto-unit",
  ]
}

# Best practices for Rust binaries that go into size-constrained bootfs.
config("bootfs") {
  # Optimize for size.
  # TODO(https://fxbug.dev/42165168): use "z" when resolved.
  rustflags = [ "-Copt-level=s" ]

  if (target_cpu == "arm64" && is_debug) {
    # Debug builds produce large Rust binaries.
    # So large they might not fit in the ZBI.
    # Force ThinLTO to squeeze Rust binaries further.
    # See: https://fxbug.dev/42160867
    # See: https://fxbug.dev/42172876
    configs = [ "//build/config/lto:thinlto" ]

    # Multiple codegen units on vim3 with debug push bootfs over the limit.
    if (board_name == "vim3") {
      configs += [ ":one_codegen_unit" ]
    }
  }

  # Can't dynamically link libstd and libtest for ZBI binaries.
  # TODO(https://fxbug.dev/42163719): reconsider this.
  rustflags += [ "-Cprefer-dynamic=no" ]
}

config("proc_macro_test") {
  rustflags = [
    "--extern",
    "proc_macro",
  ]
}

config("2018_idioms") {
  rustflags = [ "-Wrust-2018-idioms" ]
}

config("target") {
  rustflags = [
    "--target",
    rust_target,
    "--cap-lints=$rust_cap_lints",
  ]
}

config("panic_abort") {
  rustflags = [
    "-Cpanic=abort",
    "-Cforce-unwind-tables=yes",
    "-Zpanic_abort_tests",
  ]
}

config("v0_symbol_mangling") {
  if (rust_v0_symbol_mangling) {
    rustflags = [ "-Csymbol-mangling-version=v0" ]
  }
}

config("allow_unknown_lints") {
  rustflags = [ "-Aunknown-lints" ]
}

# TODO(https://fxbug.dev/42148577) remove this allowance
config("allow_legacy_derive_helpers") {
  rustflags = [ "-Alegacy-derive-helpers" ]
}

config("coverage") {
  rustflags = [ "-Cinstrument-coverage" ]
}

# TODO(https://fxbug.dev/42176241): Eliminate or identify all sources of output dir leaks.
# This option makes it explicit that a particular build action is sensitive
# to the output dir path, and informs remote execution to refrain from
# normalizing the output dir, which improves caching.
# As a goal, we should aim to minimize the need for this config.
config("output_dir_sensitive") {
  if (rust_rbe_enable) {
    # --remote-flag=* is a pseudo flag that is intercepted by
    # build/rbe/rustc_remote_wrapper.py and forwarded to rewrapper (reclient).
    rustflags = [ "--remote-flag=--canonicalize_working_dir=false" ]
  }
}

# On remote-cache miss, execute locally.
# This mode will not attempt any remote execution, and thus,
# not warm the remote cache.
# This may be an attractive option for targets that are large,
# frequently miss the cache, frequently on the critical path and
# thus, benefit from local build speeds.
config("rbe_strategy_local") {
  if (rust_rbe_enable) {
    # --remote-flag=* is a pseudo flag that is intercepted by
    # build/rbe/rustc_remote_wrapper.py and forwarded to rewrapper (reclient).
    rustflags = [ "--remote-flag=--exec_strategy=local" ]
  }
}

# On cache-miss, use whichever succeeds first between local and remote.
# There is a limited number of local execution slots.
# The remote cache is warmed by this mode, so the next time the same
# action is encountered, it will cache hit.
config("rbe_strategy_racing") {
  if (rust_rbe_enable) {
    # --remote-flag=* is a pseudo flag that is intercepted by
    # build/rbe/rustc_remote_wrapper.py and forwarded to rewrapper (reclient).
    rustflags = [ "--remote-flag=--exec_strategy=racing" ]
  }
}

# Disable downloading outputs, and instead write download stubs that can be
# used to fetch remote outputs later as needed.
# Even in this mode, depfiles are always still downloaded.
config("no_download") {
  if (rust_rbe_enable) {
    # --remote-flag=* is a pseudo flag that is intercepted by
    # build/rbe/rustc_remote_wrapper.py and forwarded to rewrapper (reclient).
    rustflags = [ "--remote-flag=--download_outputs=false" ]
  }
}
# Unstable features
#
# These configs enable unstable Rust features. Configs that enable unstable
# features must go through an approval process before they may be added. See:
# https://fuchsia.dev/fuchsia-src/development/languages/rust/unstable#the_process
#
# When adding a new config, make sure to add a TODO with a link to the tracking
# issue.
