Files
rt-thread/components/rust/core/SConscript
2025-12-08 18:34:25 +08:00

72 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from building import *
cwd = GetCurrentDir()
sys.path.append(os.path.join(cwd, '../tools'))
from build_support import (
detect_rust_target,
make_rustflags,
collect_features,
verify_rust_toolchain,
ensure_rust_target_installed,
cargo_build_staticlib,
clean_rust_build,
)
def _has(sym: str) -> bool:
try:
return bool(GetDepend([sym]))
except Exception:
return bool(GetDepend(sym))
# Source files MSH command glue
src = ['rust_cmd.c']
LIBS = []
LIBPATH = []
if GetOption('clean'):
# Register Rust artifacts for cleaning
rust_build_dir = clean_rust_build(Dir('#').abspath)
if os.path.exists(rust_build_dir):
print(f'Registering {rust_build_dir} for cleanup')
Clean('.', rust_build_dir)
else:
print('No rust build artifacts to clean')
else:
if verify_rust_toolchain():
import rtconfig
target = detect_rust_target(_has, rtconfig)
if not target:
print('Error: Unable to detect Rust target; please check configuration')
else:
print(f'Detected Rust target: {target}')
# Optional hint if target missing
ensure_rust_target_installed(target)
# Build mode and features
debug = bool(_has('RUST_DEBUG_BUILD'))
features = collect_features(_has)
rustflags = make_rustflags(rtconfig, target)
rust_lib = cargo_build_staticlib(
rust_dir=cwd, target=target, features=features, debug=debug, rustflags=rustflags
)
if rust_lib:
LIBS = ['rt_rust']
LIBPATH = [os.path.dirname(rust_lib)]
print('Rust library linked successfully')
else:
print('Warning: Failed to build Rust library')
else:
print('Warning: Rust toolchain not found')
print('Please install Rust from https://rustup.rs')
# Define component group for SCons
group = DefineGroup('rust', src, depend=['RT_USING_RUST'], LIBS=LIBS, LIBPATH=LIBPATH)
Return('group')