summaryrefslogtreecommitdiff
path: root/components/rust/examples/component/SConscript
diff options
context:
space:
mode:
authorzhang san <[email protected]>2025-12-08 18:34:25 +0800
committerGitHub <[email protected]>2025-12-08 18:34:25 +0800
commit69980f8b9d29b38dbd4ddf6373b4b45f3a138409 (patch)
tree21dd9a8ce80e3d30192e9ffa56ea39a199bae309 /components/rust/examples/component/SConscript
parentcd1d47b87c5d47e131730e5506eb3ad77d357653 (diff)
Adding Rust Language Support for RT-Thread #10910
Diffstat (limited to 'components/rust/examples/component/SConscript')
-rw-r--r--components/rust/examples/component/SConscript71
1 files changed, 71 insertions, 0 deletions
diff --git a/components/rust/examples/component/SConscript b/components/rust/examples/component/SConscript
new file mode 100644
index 0000000000..40d11c0446
--- /dev/null
+++ b/components/rust/examples/component/SConscript
@@ -0,0 +1,71 @@
+import os
+import sys
+from building import *
+
+cwd = GetCurrentDir()
+
+# Import component build module and build support
+sys.path.append(os.path.join(cwd, '../../tools'))
+from build_component import build_example_component
+from build_support import clean_rust_build
+
+# Load feature configurations
+try:
+ from feature_config_component import setup_all_component_features
+ setup_all_component_features()
+except ImportError:
+ print("Warning: Could not load component feature configurations")
+
+
+def _has(sym: str) -> bool:
+ """Helper function to check if a configuration symbol is enabled."""
+ try:
+ return bool(GetDepend([sym]))
+ except Exception:
+ return bool(GetDepend(sym))
+
+
+# Early return if Rust or log component is not enabled
+if not _has('RT_USING_RUST'):
+ group = []
+ Return('group')
+
+if not _has('RUST_LOG_COMPONENT'):
+ group = []
+ Return('group')
+
+# Source files – component glue code if needed
+src = []
+LIBS = []
+LIBPATH = []
+LINKFLAGS = ""
+
+# Handle clean operation
+if GetOption('clean'):
+ comp_build_dir = clean_rust_build(Dir('#').abspath, "example_component")
+ if os.path.exists(comp_build_dir):
+ print(f'Registering {comp_build_dir} for cleanup')
+ Clean('.', comp_build_dir)
+ else:
+ print('No example_component build artifacts to clean')
+else:
+ # Build the component using the extracted build module
+ import rtconfig
+ LIBS, LIBPATH, LINKFLAGS = build_example_component(
+ cwd=cwd,
+ has_func=_has,
+ rtconfig=rtconfig,
+ build_root=os.path.join(Dir('#').abspath, "build", "example_component")
+ )
+
+# Define component group for SCons
+group = DefineGroup(
+ 'example_component_log',
+ src,
+ depend=['RT_USING_RUST'],
+ LIBS=LIBS,
+ LIBPATH=LIBPATH,
+ LINKFLAGS=LINKFLAGS
+)
+
+Return('group') \ No newline at end of file