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')