@@ -205,7 +205,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "DEBUG")
205
205
set (RUST_PROFILE "debug" )
206
206
else ()
207
207
set (RUST_PROFILE "release" )
208
- set (RUST_CARGO_FLAG "--release" )
208
+ set (RUST_CARGO_FLAGS "--release" )
209
209
# For binary reproducibility, strip path prefixes that can be different depending on environment (e.g. /home/<user>, etc.).
210
210
set (RUSTFLAGS "--remap-path-prefix=${CMAKE_CURRENT_SOURCE_DIR} /rust=src --remap-path-prefix=$ENV{HOME} =" )
211
211
endif ()
@@ -231,6 +231,7 @@ if(CMAKE_CROSSCOMPILING)
231
231
set (RUST_TARGET_ARCH thumbv7em-none-eabi)
232
232
set (RUST_TARGET_ARCH_DIR ${RUST_TARGET_ARCH} )
233
233
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)
234
235
else ()
235
236
set (RUST_TARGET_ARCH_DIR .)
236
237
endif ()
@@ -436,7 +437,7 @@ if(NOT CMAKE_CROSSCOMPILING)
436
437
CMAKE_CURRENT_BINARY_DIR =${CMAKE_CURRENT_BINARY_DIR}
437
438
FIRMWARE_VERSION_SHORT=${FIRMWARE_VERSION}
438
439
# 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
440
441
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /rust/
441
442
)
442
443
add_dependencies (rust-test bitbox_merged generate-protobufs)
@@ -518,7 +519,8 @@ foreach(type ${RUST_LIBS})
518
519
RUSTFLAGS=${RUSTFLAGS}
519
520
FIRMWARE_VERSION_SHORT=${FIRMWARE_VERSION}
520
521
$<$<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}
522
524
COMMAND
523
525
${CMAKE_COMMAND} -E copy_if_different ${lib} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} /lib${type} _rust_c.a
524
526
# DEPFILES are only supported with the Ninja build tool
@@ -544,7 +546,7 @@ if(CMAKE_CROSSCOMPILING)
544
546
CMAKE_CURRENT_BINARY_DIR =${CMAKE_CURRENT_BINARY_DIR}
545
547
SYSROOT=${CMAKE_SYSROOT}
546
548
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
548
550
COMMAND
549
551
${CMAKE_COMMAND} -E echo "See docs at file://${CMAKE_BINARY_DIR} /docs-rust/thumbv7em-none-eabi/doc/bitbox02_rust/index.html"
550
552
WORKING_DIRECTORY ${LIBBITBOX02_RUST_SOURCE_DIR}
0 commit comments