summaryrefslogtreecommitdiff
path: root/components/rust/core/SConscript
diff options
context:
space:
mode:
Diffstat (limited to 'components/rust/core/SConscript')
-rw-r--r--components/rust/core/SConscript71
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')