diff options
Diffstat (limited to 'components/rust/core/SConscript')
| -rw-r--r-- | components/rust/core/SConscript | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/components/rust/core/SConscript b/components/rust/core/SConscript new file mode 100644 index 0000000000..880f6bce92 --- /dev/null +++ b/components/rust/core/SConscript @@ -0,0 +1,71 @@ +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') |
