Use cargo feature instead of conditional compilation hacks

This commit is contained in:
Henrik Tjäder 2020-06-10 12:07:23 +00:00
parent 0b3cc87f2d
commit 5f61f7b75f
4 changed files with 40 additions and 29 deletions

View file

@ -90,7 +90,7 @@ jobs:
with: with:
use-cross: false use-cross: false
command: check command: check
args: --examples --target=${{ matrix.target }} args: --examples --target=${{ matrix.target }} --features __min_r1_43
- name: cargo check -p homogeneous - name: cargo check -p homogeneous
uses: actions-rs/cargo@v1 uses: actions-rs/cargo@v1

View file

@ -38,6 +38,10 @@ required-features = ["__v7"]
name = "t-cfg" name = "t-cfg"
required-features = ["__v7"] required-features = ["__v7"]
[[example]]
name = "t-cfg-resources"
required-features = ["__min_r1_43"]
[[example]] [[example]]
name = "t-schedule" name = "t-schedule"
required-features = ["__v7"] required-features = ["__v7"]
@ -77,6 +81,7 @@ heterogeneous = ["cortex-m-rtfm-macros/heterogeneous", "microamp"]
homogeneous = ["cortex-m-rtfm-macros/homogeneous"] homogeneous = ["cortex-m-rtfm-macros/homogeneous"]
# used for testing this crate; do not use in applications # used for testing this crate; do not use in applications
__v7 =[] __v7 =[]
__min_r1_43 =[]
[profile.release] [profile.release]
codegen-units = 1 codegen-units = 1

View file

@ -96,8 +96,18 @@ main() {
if [ $TARGET = thumbv6m-none-eabi ]; then if [ $TARGET = thumbv6m-none-eabi ]; then
cargo check --target $T --examples cargo check --target $T --examples
# Check examples with specific features not compatible with MSRV
if [[ $TRAVIS_RUST_VERSION != 1.*.* ]]; then
cargo check --target $T --examples --features __min_r1_43
fi
else else
cargo check --target $T --examples --features __v7 cargo check --target $T --examples --features __v7
# Check examples with specific features not compatible with MSRV
if [[ $TRAVIS_RUST_VERSION != 1.*.* ]]; then
cargo check --target $T --examples --features __v7,__min_r1_43
fi
fi fi
cargo check -p homogeneous --target $T --examples cargo check -p homogeneous --target $T --examples

View file

@ -5,36 +5,32 @@
use panic_halt as _; use panic_halt as _;
#[cfg(rustc_is_nightly)] #[rtfm::app(device = lm3s6965)]
mod example { const APP: () = {
struct Resources {
// A resource
#[init(0)]
shared: u32,
#[rtfm::app(device = lm3s6965)] // A conditionally compiled resource behind feature_x
const APP: () = { #[cfg(feature = "feature_x")]
struct Resources { x: u32,
// A resource
#[init(0)]
shared: u32,
// A conditionally compiled resource behind feature_x dummy: (),
}
#[init]
fn init(_: init::Context) -> init::LateResources {
init::LateResources {
// The feature needs to be applied everywhere x is defined or used
#[cfg(feature = "feature_x")] #[cfg(feature = "feature_x")]
x: u32, x: 0,
dummy: (), // dummy such that we have at least one late resource
dummy: (),
} }
}
#[init] #[idle]
fn init(_: init::Context) -> init::LateResources { fn idle(_cx: idle::Context) -> ! {
init::LateResources { loop {}
// The feature needs to be applied everywhere x is defined or used }
#[cfg(feature = "feature_x")] };
x: 0,
dummy: (), // dummy such that we have at least one late resource
}
}
#[idle]
fn idle(_cx: idle::Context) -> ! {
loop {}
}
};
}