mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
makefiles/rust: Remove CARGO_CHANNEL special casing
Back when specific control of the Rust version used with RIOT was needed, CARGO_CHANNEL was added to explicitly set the Rust version with consideration for CI special cases. Rust's mechansims of selecting a toolchain can be used instead now.
This commit is contained in:
parent
e98d3a5d3a
commit
6724884b93
@ -108,19 +108,17 @@ To install the necessary Rust components, it is easiest use [**rustup**, install
|
||||
|
||||
Using Rust on RIOT needs the latest stable version of Rust.
|
||||
|
||||
Make sure you have the stable **toolchain**
|
||||
and the core library for the CPU (**target**) of your choice available:
|
||||
Make sure you have the core library for the CPU (**target**) of your choice available:
|
||||
|
||||
```
|
||||
$ rustup toolchain add stable
|
||||
$ rustup target add thumbv7m-none-eabi --toolchain stable
|
||||
$ rustup target add thumbv7m-none-eabi
|
||||
```
|
||||
|
||||
Substitute thumbv7m-none-eabi with the value of `RUST_TARGET`
|
||||
in the output of `make info-build` of an application that has your current board selected
|
||||
(or just add it later whenever the Rust compiler complains about not finding the core library for a given target).
|
||||
Using a beta or nightly will work just as well,
|
||||
but you may need to set `CARGO_CHANNEL=nightly` on your shell or in your Makefiles.
|
||||
Using the beta or nightly toolchains will work just as well
|
||||
if they are selected through rustup's override mechanism.
|
||||
|
||||
|
||||
While Rust comes with its own [cargo] dependency tracker for any Rust code,
|
||||
|
@ -41,8 +41,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module
|
||||
|
||||
FEATURES_REQUIRED += rust_target
|
||||
|
||||
CARGO_CHANNEL ?= stable
|
||||
|
||||
# Currently unknown, something related to the LED_PORT definition that doesn't
|
||||
# pass C2Rust's transpilation
|
||||
BOARD_BLACKLIST := ek-lm4f120xl
|
||||
|
@ -21,11 +21,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module
|
||||
|
||||
FEATURES_REQUIRED += rust_target
|
||||
|
||||
# All Rust components RIOT uses work on stable Rust. If any extra libraries
|
||||
# were to require a more recent version, switch to `CARGO_CHANNEL =
|
||||
# $(CARGO_CHANNEL_NIGHTLY)` to use whichever nightly version is available.
|
||||
CARGO_CHANNEL ?= stable
|
||||
|
||||
# Currently unknown, something related to the LED_PORT definition that doesn't
|
||||
# pass C2Rust's transpilation
|
||||
BOARD_BLACKLIST := ek-lm4f120xl
|
||||
|
@ -4,28 +4,6 @@
|
||||
# binary is derived from this.
|
||||
CARGO_PROFILE ?= release
|
||||
|
||||
# Value for CARGO_CHANNEL when using nightly
|
||||
#
|
||||
# As different environments have different versions of nightly installed, but
|
||||
# rustup / cargo does not take "the latest installed nightly" for a toolchain,
|
||||
# a good value is determined dynamically. Typical values this takes are
|
||||
# `nightly` (on regular installations) and `nightly-2022-03-08` (or whichever
|
||||
# date it is currently pinned to) in riotbuild.
|
||||
#
|
||||
# Workaround-For: https://github.com/rust-lang/rustup/issues/3015
|
||||
#
|
||||
# This does not get evaluated unless actually used; if rustup is not installed,
|
||||
# the default value will likely not be usable but at least set the user on the
|
||||
# right track.
|
||||
CARGO_CHANNEL_NIGHTLY = $(shell rustup toolchain list | sed 's/ .*//' |grep nightly | tail -n1 || echo nightly)
|
||||
|
||||
# The Rust version to use.
|
||||
#
|
||||
# Examples should set this to either `stable` or `$(CARGO_CHANNEL_NIGHTLY)`.
|
||||
# The default is empty, which is suitable for applications that select their
|
||||
# version through a `rust-toolchain.yaml` file.
|
||||
CARGO_CHANNEL ?=
|
||||
|
||||
# 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.
|
||||
|
@ -55,15 +55,15 @@ $(CARGO_LIB): $(RIOTBUILD_CONFIG_HEADER_C) $(BUILDDEPS) $(CARGO_COMPILE_COMMANDS
|
||||
$(Q)# If distribution installed cargos ever grow the capacity to build RIOT, this absence of `rustup` might be OK. But that'd need them to both have cross tools around and cross core libs, none of which is currently the case.
|
||||
$(Q)# Ad grepping for "std": We're not *actually* checking for std but more for core -- but rust-stc-$TARGET is the name of any standard libraries that'd be available for that target.
|
||||
$(Q)[ x"$(findstring build-std,$(CARGO_OPTIONS))" != x"" ] || \
|
||||
(rustup component list $(patsubst %,--toolchain %,$(CARGO_CHANNEL)) --installed | grep 'rust-std-$(RUST_TARGET)$$' -q) || \
|
||||
(rustup component list --installed | grep 'rust-std-$(RUST_TARGET)$$' -q) || \
|
||||
($(COLOR_ECHO) \
|
||||
'$(COLOR_RED)Error: No Rust libraries are installed for the board'"'"'s CPU.$(COLOR_RESET) Run\n $(COLOR_GREEN)$$$(COLOR_RESET) rustup target add $(RUST_TARGET) $(patsubst %,--toolchain %,$(CARGO_CHANNEL))\nor set `CARGO_OPTIONS=-Zbuild-std=core`.'; \
|
||||
'$(COLOR_RED)Error: No Rust libraries are installed for the board'"'"'s CPU.$(COLOR_RESET) Run\n $(COLOR_GREEN)$$$(COLOR_RESET) rustup target add $(RUST_TARGET)\nor set `CARGO_OPTIONS=-Zbuild-std=core`.'; \
|
||||
exit 1)
|
||||
$(Q)# finally call out to cargo. mind the "+" to pass down make's jobserver.
|
||||
$(Q)+ CC= CFLAGS= CPPFLAGS= CXXFLAGS= \
|
||||
RIOT_COMPILE_COMMANDS_JSON="$(CARGO_COMPILE_COMMANDS)" \
|
||||
RIOT_USEMODULE="$(USEMODULE)" \
|
||||
cargo $(patsubst +,,+${CARGO_CHANNEL}) \
|
||||
cargo \
|
||||
build \
|
||||
--target $(RUST_TARGET) \
|
||||
--profile $(CARGO_PROFILE) \
|
||||
|
@ -90,7 +90,6 @@ info-build:
|
||||
@echo -e 'CXXEXFLAGS:$(patsubst %, \n\t%, $(CXXEXFLAGS))'
|
||||
@echo ''
|
||||
@echo 'RUST_TARGET: $(RUST_TARGET)'
|
||||
@echo 'CARGO_CHANNEL: $(CARGO_CHANNEL)'
|
||||
@echo 'CARGO_PROFILE: $(CARGO_PROFILE)'
|
||||
@echo 'CARGO_OPTIONS: $(CARGO_OPTIONS)'
|
||||
@echo ''
|
||||
@ -250,5 +249,5 @@ info-programmers-supported:
|
||||
@echo $(sort $(PROGRAMMERS_SUPPORTED))
|
||||
|
||||
info-rust:
|
||||
cargo $(patsubst +,,+${CARGO_CHANNEL}) version
|
||||
cargo version
|
||||
c2rust --version
|
||||
|
@ -5,10 +5,6 @@ USEMODULE += shell_democommands
|
||||
|
||||
FEATURES_REQUIRED += rust_target
|
||||
|
||||
# Testing on stable to ensure that no nightly features are needed when Rust is
|
||||
# pulled in through modules.
|
||||
CARGO_CHANNEL = stable
|
||||
|
||||
# Currently unknown, something related to the LED_PORT definition that doesn't
|
||||
# pass C2Rust's transpilation
|
||||
BOARD_BLACKLIST := ek-lm4f120xl
|
||||
|
@ -5,10 +5,6 @@ BASELIBS += $(APPLICATION_RUST_MODULE).module
|
||||
|
||||
FEATURES_REQUIRED += rust_target
|
||||
|
||||
# Testing on stable to ensure that no nightly features are needed for basic
|
||||
# Rust usage.
|
||||
CARGO_CHANNEL = stable
|
||||
|
||||
# Currently unknown, something related to the LED_PORT definition that doesn't
|
||||
# pass C2Rust's transpilation
|
||||
BOARD_BLACKLIST := ek-lm4f120xl
|
||||
|
Loading…
Reference in New Issue
Block a user