@@ -205,7 +205,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "DEBUG")
205205 set (RUST_PROFILE "debug" )
206206else ()
207207 set (RUST_PROFILE "release" )
208- set (RUST_CARGO_FLAG "--release" )
208+ set (RUST_CARGO_FLAGS "--release" )
209209 # For binary reproducibility, strip path prefixes that can be different depending on environment (e.g. /home/<user>, etc.).
210210 set (RUSTFLAGS "--remap-path-prefix=${CMAKE_CURRENT_SOURCE_DIR} /rust=src --remap-path-prefix=$ENV{HOME} =" )
211211endif ()
@@ -231,6 +231,7 @@ if(CMAKE_CROSSCOMPILING)
231231 set (RUST_TARGET_ARCH thumbv7em-none-eabi)
232232 set (RUST_TARGET_ARCH_DIR ${RUST_TARGET_ARCH} )
233233 set (RUST_TARGET_ARCH_ARG --target ${RUST_TARGET_ARCH} )
234+ set (RUST_CARGO_FLAGS ${RUST_CARGO_FLAGS} -Zbuild-std=core,alloc -Zbuild-std-features=panic_immediate_abort,optimize_for_size)
234235else ()
235236 set (RUST_TARGET_ARCH_DIR .)
236237endif ()
@@ -436,7 +437,7 @@ if(NOT CMAKE_CROSSCOMPILING)
436437 CMAKE_CURRENT_BINARY_DIR =${CMAKE_CURRENT_BINARY_DIR}
437438 FIRMWARE_VERSION_SHORT=${FIRMWARE_VERSION}
438439 # only one test thread because of unsafe concurrent access to `SafeData`, `mock_sd()` and `mock_memory()`. Using mutexes instead leads to mutex poisoning and very messy output in case of a unit test failure.
439- ${CARGO} test $<$<BOOL :${CMAKE_VERBOSE_MAKEFILE} >:-v> --all -features --target -dir ${RUST_BINARY_DIR} /all -features ${RUST_CARGO_FLAG } -- --nocapture --test -threads 1
440+ ${CARGO} test $<$<BOOL :${CMAKE_VERBOSE_MAKEFILE} >:-v> --all -features --target -dir ${RUST_BINARY_DIR} /all -features ${RUST_CARGO_FLAGS } -- --nocapture --test -threads 1
440441 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /rust/
441442 )
442443 add_dependencies (rust-test bitbox_merged generate-protobufs)
@@ -518,7 +519,8 @@ foreach(type ${RUST_LIBS})
518519 RUSTFLAGS=${RUSTFLAGS}
519520 FIRMWARE_VERSION_SHORT=${FIRMWARE_VERSION}
520521 $<$<BOOL :${SCCACHE_PROGRAM} >:RUSTC_WRAPPER=${SCCACHE_PROGRAM} >
521- ${CARGO} build $<$<BOOL :${CMAKE_VERBOSE_MAKEFILE} >:-vv> --offline --features target -${type} --target -dir ${RUST_BINARY_DIR} /feature-${type} ${RUST_CARGO_FLAG} ${RUST_TARGET_ARCH_ARG}
522+ RUSTC_BOOTSTRAP=1
523+ ${CARGO} build $<$<BOOL :${CMAKE_VERBOSE_MAKEFILE} >:-vv> --offline --features target -${type} --target -dir ${RUST_BINARY_DIR} /feature-${type} ${RUST_CARGO_FLAGS} ${RUST_TARGET_ARCH_ARG}
522524 COMMAND
523525 ${CMAKE_COMMAND} -E copy_if_different ${lib} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /lib${type} _rust_c.a
524526 # DEPFILES are only supported with the Ninja build tool
@@ -544,7 +546,7 @@ if(CMAKE_CROSSCOMPILING)
544546 CMAKE_CURRENT_BINARY_DIR =${CMAKE_CURRENT_BINARY_DIR}
545547 SYSROOT=${CMAKE_SYSROOT}
546548 INCLUDES="${RUST_INCLUDES} "
547- ${CARGO} doc --document-private -items --target -dir ${CMAKE_BINARY_DIR} /docs-rust ${RUST_CARGO_FLAG} --target thumbv7em-none-eabi
549+ ${CARGO} doc --document-private -items --target -dir ${CMAKE_BINARY_DIR} /docs-rust --target thumbv7em-none-eabi
548550 COMMAND
549551 ${CMAKE_COMMAND} -E echo "See docs at file://${CMAKE_BINARY_DIR} /docs-rust/thumbv7em-none-eabi/doc/bitbox02_rust/index.html"
550552 WORKING_DIRECTORY ${LIBBITBOX02_RUST_SOURCE_DIR}
0 commit comments