[target.'cfg(all(any(target_arch = "riscv32", target_arch = "xtensa"), target_os = "none"))']
runner = "espflash flash --monitor"
# runner = "probe-rs run --chip esp32s3 --preverify"

[build]
target = "xtensa-esp32s3-none-elf"
rustflags = [
  # Exploit mitigations.
  "-Zstack-protector=all",

  # Other unsupported exploit mitigations from:
  # https://doc.rust-lang.org/beta/rustc/exploit-mitigations.html#exploit-mitigations-1
  # "-Zsanitizer=cfi,shadow-call-stack,safestack"

  # Required to obtain backtraces on riscv (e.g. when using the "esp-backtrace" crate.)
  # "-C", "force-frame-pointers",
]

[env] # These must be kept in sync with /.zed/settings.json
EXPLICITLY_INCLUDE_DEFAULT_DIRS = "true"
XKBCOMMON_BUILD_DIR = "../libxkbcommon/build-esp32s3"
SPECTRE_API_BUILD_DIR = "../spectre-api-c/build-esp32s3"
SODIUM_INSTALL_DIR = "../libsodium/install"
XKBCOMMON_BUILD_DIR_NAME = "build-esp32s3"
SPECTRE_API_BUILD_DIR_NAME = "build-esp32s3"
SODIUM_INSTALL_DIR_NAME = "install"
SPECTRE_API_SYS_CC = "xtensa-esp32s3-elf-cc.exe"
ESP_LOG = "warn"
ESP_BACKTRACE_CONFIG_BACKTRACE_FRAMES = "20"
# This is overkill, but we can afford it.
SLINT_FONT_SIZES = "8,11,10,12,13,14,15,16,18,20,22,24,32"

# Xtensa only:
# Needed for nightly, until llvm upstream has support for Rust Xtensa.
# This can be substituted with a `-Zbuild-std="core,alloc"` cargo flag.
[unstable]
build-std = ["alloc", "core"]
