Replace individual Rust crate building with unified library approach through
makefile modifications for better build performance and dependency management.
* Updated Application.mk to include Rust.mk and add unified build targets
* Modified top-level Makefile to integrate RUST_BUILD_UNIFIED in build process
* Added RUST_CLEAN_UNIFIED call to Application.mk clean target
* Updated Makefile distclean target to remove rust_unified_lib directory
* Updated example Makefiles to use nuttx_add_rust registration function
* Removed manual EXTRA_LIBS configurations from Rust example Make.defs files
* Added .rdat registry files and rust_unified_lib to gitignore
* Enhanced tools/Rust.mk with unified build system functions
The unified system builds all registered Rust crates together through
makefile integration, improving compilation efficiency and enabling better
dependency management across the NuttX applications framework.
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
- Add unified Rust library generation tool (generate_rust_unified_lib.py)
- Refactor nuttx_add_rust.cmake to use unified library approach
- Support building multiple Rust crates as a single static library
- Add .config file generation support for unified library
- Update Rust examples to remove duplicate crate-type configuration
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
Summary:
- Added `codegen-units = 1` and `opt-level = 'z'` to the release profile in `Cargo.toml`
- These changes optimize the build for minimal binary size
Impact:
- Reduces the final binary size by ~7% (244316 -> 228380 bytes)
- Improves resource utilization for embedded systems
- No functional changes to the application behavior
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
Build Rust applictions with cargo is the most commn way,
and it's more easy to cooporate with Rust ecosystem.
This example shows how to use cargo to build a simple hello world
application.
And please notice that you need to install nighly version of rustc
to support this feature, any version after https://github.com/rust-lang/rust/pull/127755
is merged, can use NuttX as cargo target directly.
Build
-----
To build hello_rust_cargo application, you can use any target that based
on RISCV32IMAC, for example:
```
cmake -B build -DBOARD_CONFIG=rv-virt:nsh -GNinja .
```
And disable ARCH_FPU in menuconfig, since the hard coded target triple
in this demo is `riscv32imac`.
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>