2024-01-31 11:31:18 +01:00
|
|
|
# The profile with which to build Rust usually `release` or `dev`.
|
|
|
|
#
|
|
|
|
# This needs to be known to the build scripts because the path of the produced
|
|
|
|
# binary is derived from this.
|
2021-04-02 19:01:19 +02:00
|
|
|
CARGO_PROFILE ?= release
|
|
|
|
|
|
|
|
# Note that if we did not set this explicitly, CARGO_LIB would have to
|
|
|
|
# understand which value cargo uses in absence of CARGO_TARGET_DIR, which would
|
|
|
|
# be $(APPDIR)/target.
|
|
|
|
#
|
|
|
|
# For many cases, it would be beneficial to base this on BINDIRBASE rather than
|
|
|
|
# BINDIR, for that would allow different boards using the same CPU to share
|
|
|
|
# compiled code (unless they they build conditionally on environment variables,
|
|
|
|
# like riot-sys does). This is not done for two reasons:
|
|
|
|
#
|
|
|
|
# * Overriding BINDIR (like is done in Murdock) would not take effect,
|
|
|
|
# requiring additional overrides to enable out-of-tree building.
|
|
|
|
#
|
|
|
|
# * Switching back and forth between two boards of the same CPU requires
|
|
|
|
# riot-sys rebuilds. (On its own, this would be outweighed by the shared
|
|
|
|
# compilation of other modules).
|
|
|
|
CARGO_TARGET_DIR = $(BINDIR)/target
|
|
|
|
|
|
|
|
# The single Rust library to be built.
|
2024-01-31 11:31:18 +01:00
|
|
|
#
|
|
|
|
# The dev->debug and bench->release substitutions represent a historical
|
|
|
|
# peculiarity in cargo: "For historical reasons, the `dev` and `test` profiles
|
|
|
|
# are stored in the `debug` directory, and the `release` and `bench` profiles
|
|
|
|
# are stored in the `release` directory. User-defined profiles are stored in a
|
|
|
|
# directory with the same name as the profile".
|
|
|
|
CARGO_LIB = $(CARGO_TARGET_DIR)/$(RUST_TARGET)/$(patsubst test,debug,$(patsubst dev,debug,$(patsubst bench,release,${CARGO_PROFILE})))/lib$(APPLICATION_RUST_MODULE).a
|
2024-01-31 12:19:08 +01:00
|
|
|
|
2024-08-21 21:51:02 +02:00
|
|
|
# Options passed into the Cargo build command.
|
2024-01-31 12:19:08 +01:00
|
|
|
#
|
|
|
|
# Most of these are populated by RIOT modules that are backed by Rust. Popular
|
|
|
|
# options added by the user are `-Zbuild-std=core` (only available on nightly)
|
|
|
|
# to apply LTO and profile configuration to the core library.
|
2024-01-31 12:23:16 +01:00
|
|
|
CARGO_OPTIONS ?=
|