mirror of
https://github.com/trezor/trezor-firmware.git
synced 2026-02-20 00:33:30 +01:00
build(core): fix Rust library path in SConscript
[no changelog]
This commit is contained in:
@@ -278,6 +278,7 @@ obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-
|
||||
obj_program += env.Object(source=SOURCE_BOOTLOADER)
|
||||
obj_program += env.Object(source=SOURCE_NANOPB)
|
||||
obj_program += env.Object(source=SOURCE_HAL)
|
||||
obj_program += [rust]
|
||||
|
||||
if 'boot_ucb' in FEATURES_AVAILABLE:
|
||||
obj_program += env.Object(
|
||||
@@ -299,7 +300,6 @@ program_elf = env.Command(
|
||||
)
|
||||
|
||||
env.Depends(program_elf, linkerscript_gen)
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
SUFFIX = '_qa' if BOOTLOADER_QA else ''
|
||||
|
||||
|
||||
@@ -266,6 +266,7 @@ obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-
|
||||
obj_program += env.Object(source=SOURCE_BOOTLOADER)
|
||||
obj_program += env.Object(source=SOURCE_NANOPB)
|
||||
obj_program += env.Object(source=SOURCE_UNIX)
|
||||
obj_program += [rust]
|
||||
|
||||
program_elf = env.Command(
|
||||
target='bootloader.elf',
|
||||
@@ -273,7 +274,5 @@ program_elf = env.Command(
|
||||
action=
|
||||
'$CC -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $LINKFLAGS')
|
||||
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
if CMAKELISTS != 0:
|
||||
env.Depends(program_elf, cmake_gen)
|
||||
|
||||
@@ -904,6 +904,7 @@ rust = tools.add_rust_lib(
|
||||
all_paths=ALLPATHS,
|
||||
build_dir=str(Dir('.').abspath),
|
||||
)
|
||||
obj_program += [rust]
|
||||
|
||||
|
||||
env.Depends(rust, protobuf_blobs)
|
||||
@@ -997,7 +998,6 @@ env.Depends(program_elf, linkerscript_gen)
|
||||
|
||||
if CMAKELISTS != 0:
|
||||
env.Depends(program_elf, cmake_gen)
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
BINARY_NAME = f"build/firmware/firmware-{TREZOR_MODEL}"
|
||||
if not EVERYTHING:
|
||||
|
||||
@@ -444,6 +444,7 @@ rust = tools.add_rust_lib(
|
||||
all_paths=ALLPATHS,
|
||||
build_dir=str(Dir('.').abspath),
|
||||
)
|
||||
obj_program += [rust]
|
||||
|
||||
|
||||
if "secmon_layout" in FEATURES_AVAILABLE:
|
||||
@@ -460,7 +461,6 @@ program_elf = env.Command(
|
||||
)
|
||||
|
||||
env.Depends(program_elf, linkerscript_gen)
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
if CMAKELISTS != 0:
|
||||
env.Depends(program_elf, cmake_gen)
|
||||
|
||||
@@ -338,6 +338,7 @@ rust = tools.add_rust_lib(
|
||||
all_paths=ALLPATHS,
|
||||
build_dir=str(Dir('.').abspath),
|
||||
)
|
||||
obj_program += [rust]
|
||||
|
||||
|
||||
if (vh := ARGUMENTS.get("VENDOR_HEADER", None)):
|
||||
@@ -378,7 +379,6 @@ program_elf = env.Command(
|
||||
)
|
||||
|
||||
env.Depends(program_elf, linkerscript_gen)
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
BINARY_NAME = f"build/prodtest/prodtest-{TREZOR_MODEL}"
|
||||
BINARY_NAME += "-" + tools.get_version('embed/projects/prodtest/version.h')
|
||||
|
||||
@@ -302,6 +302,7 @@ obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-
|
||||
obj_program += env.Object(source=SOURCE_PRODTEST)
|
||||
obj_program += env.Object(source=SOURCE_HAL)
|
||||
obj_program += env.Object(source=SOURCE_MLDSA)
|
||||
obj_program += [rust]
|
||||
|
||||
program_elf = env.Command(
|
||||
target='prodtest.elf',
|
||||
@@ -309,7 +310,5 @@ program_elf = env.Command(
|
||||
action=
|
||||
'$CC -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $LINKFLAGS')
|
||||
|
||||
env.Depends(program_elf, rust)
|
||||
|
||||
if CMAKELISTS != 0:
|
||||
env.Depends(program_elf, cmake_gen)
|
||||
|
||||
@@ -925,7 +925,7 @@ rust = tools.add_rust_lib(
|
||||
all_paths=ALLPATHS,
|
||||
build_dir=str(Dir('.').abspath),
|
||||
)
|
||||
|
||||
obj_program += [rust]
|
||||
|
||||
env.Depends(rust, protobuf_blobs)
|
||||
env.Depends(rust, TRANSLATION_DATA)
|
||||
@@ -938,4 +938,3 @@ program = env.Command(
|
||||
|
||||
if CMAKELISTS != 0:
|
||||
env.Depends(program, cmake_gen)
|
||||
env.Depends(program, rust)
|
||||
|
||||
@@ -151,21 +151,18 @@ def add_rust_lib(*, env, build, profile, features, all_paths, build_dir):
|
||||
RUST_TARGET = env.get("ENV")["RUST_TARGET"]
|
||||
|
||||
# Determine the profile build flags.
|
||||
if profile == "release":
|
||||
profile = "--release"
|
||||
is_debug = False
|
||||
RUST_LIBDIR = f"build/{build}/rust/{RUST_TARGET}/release"
|
||||
else:
|
||||
profile = ""
|
||||
is_debug = True
|
||||
RUST_LIBDIR = f"build/{build}/rust/{RUST_TARGET}/debug"
|
||||
is_debug = {"dev": True, "release": False}[profile]
|
||||
|
||||
# Don't prefix with `build_dir` - the paths below should be relative to it.
|
||||
RUST_LIBDIR = f"rust/{RUST_TARGET}/{'debug' if is_debug else 'release'}"
|
||||
RUST_LIBPATH = f"{RUST_LIBDIR}/lib{RUST_LIB}.a"
|
||||
|
||||
def cargo_build():
|
||||
lib_features = []
|
||||
lib_features.extend(features)
|
||||
|
||||
cargo_opts = [
|
||||
cargo_opts = [] if is_debug else ["--release"]
|
||||
cargo_opts += [
|
||||
f"--target={RUST_TARGET}",
|
||||
f"--target-dir=../../build/{build}/rust",
|
||||
"--no-default-features",
|
||||
@@ -178,7 +175,7 @@ def add_rust_lib(*, env, build, profile, features, all_paths, build_dir):
|
||||
"-Z build-std-features=panic_immediate_abort",
|
||||
]
|
||||
|
||||
build_cmd = f"cargo build {profile} " + " ".join(cargo_opts)
|
||||
build_cmd = "cargo build " + " ".join(cargo_opts)
|
||||
|
||||
unstable_rustc_flags = [
|
||||
# see https://nnethercote.github.io/perf-book/type-sizes.html#measuring-type-sizes for more details
|
||||
@@ -200,13 +197,13 @@ def add_rust_lib(*, env, build, profile, features, all_paths, build_dir):
|
||||
f"cd embed/rust; {build_cmd} > {build_dir}/rust-type-sizes.log"
|
||||
)
|
||||
|
||||
# Target path should be relative to `build_dir`.
|
||||
rust = env.Command(
|
||||
target=RUST_LIBPATH,
|
||||
source="",
|
||||
action=cargo_build(),
|
||||
)
|
||||
|
||||
env.Append(LINKFLAGS=[f"-L{RUST_LIBDIR}"])
|
||||
env.Append(LINKFLAGS=[f"-l{RUST_LIB}"])
|
||||
# TODO: run `cargo` only if needed
|
||||
env.AlwaysBuild(rust)
|
||||
|
||||
return rust
|
||||
|
||||
Reference in New Issue
Block a user