This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push:
new 840c2f30d apps/rust: Add dependencies for Rust cargo in make builds
840c2f30d is described below
commit 840c2f30db650d23a53f75c46a49b74d06f699f2
Author: Shoji Tokunaga <[email protected]>
AuthorDate: Sat May 30 02:03:08 2026 +0900
apps/rust: Add dependencies for Rust cargo in make builds
Add a Rust make helper that collects crate input files, and use it for
the Rust hello and slint examples.
This makes the generated Rust static libraries depend on the crate
sources, manifests, build scripts. Hook the libraries into both context
and all, so re-running make after editing Rust inputs rebuilds the crate.
Signed-off-by: Shoji Tokunaga <[email protected]>
---
examples/rust/hello/Makefile | 9 ++++++++-
examples/rust/slint/Makefile | 9 ++++++++-
tools/Rust.mk | 15 +++++++++++++++
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/examples/rust/hello/Makefile b/examples/rust/hello/Makefile
index 2c638eb3c..c5af98671 100644
--- a/examples/rust/hello/Makefile
+++ b/examples/rust/hello/Makefile
@@ -27,9 +27,16 @@ PRIORITY = $(CONFIG_EXAMPLES_HELLO_RUST_CARGO_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_HELLO_RUST_CARGO_STACKSIZE)
MODULE = $(CONFIG_EXAMPLES_HELLO_RUST_CARGO)
-context::
+RUST_LIB := $(call RUST_GET_BINDIR,hello,$(APPDIR)/examples/rust)
+RUST_SRCS := $(call RUST_CARGO_SRCS,hello,$(APPDIR)/examples/rust)
+
+$(RUST_LIB): $(RUST_SRCS)
$(call RUST_CARGO_BUILD,hello,$(APPDIR)/examples/rust)
+context:: $(RUST_LIB)
+
+all:: $(RUST_LIB)
+
clean::
$(call RUST_CARGO_CLEAN,hello,$(APPDIR)/examples/rust)
diff --git a/examples/rust/slint/Makefile b/examples/rust/slint/Makefile
index 34b444e9d..747f8960b 100644
--- a/examples/rust/slint/Makefile
+++ b/examples/rust/slint/Makefile
@@ -25,9 +25,16 @@ PRIORITY = $(CONFIG_EXAMPLES_RUST_SLINT_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_RUST_SLINT_STACKSIZE)
MODULE = $(CONFIG_EXAMPLES_RUST_SLINT)
-context::
+RUST_LIB := $(call RUST_GET_BINDIR,slint,$(APPDIR)/examples/rust)
+RUST_SRCS := $(call RUST_CARGO_SRCS,slint,$(APPDIR)/examples/rust)
+
+$(RUST_LIB): $(RUST_SRCS)
$(call RUST_CARGO_BUILD,slint,$(APPDIR)/examples/rust)
+context:: $(RUST_LIB)
+
+all:: $(RUST_LIB)
+
clean::
$(call RUST_CARGO_CLEAN,slint,$(APPDIR)/examples/rust)
diff --git a/tools/Rust.mk b/tools/Rust.mk
index 90f3615a2..80abe2970 100644
--- a/tools/Rust.mk
+++ b/tools/Rust.mk
@@ -144,3 +144,18 @@ $(2)/$(1)/target/$(strip $(if $(findstring .json,$(call
RUST_TARGET_TRIPLE)), \
$(basename $(notdir $(call RUST_TARGET_TRIPLE))), \
$(call RUST_TARGET_TRIPLE)))/$(if
$(CONFIG_DEBUG_FULLOPT),release,debug)/lib$(1).a
endef
+
+# Collect crate input files for a crate
+#
+# Usage: $(call RUST_CARGO_SRCS,cratename,prefix)
+#
+# Inputs:
+# cratename - Name of the Rust crate (e.g. hello)
+# prefix - Path prefix to the crate (e.g. path/to/project)
+#
+# Output:
+# List of crate input files (excluding the cargo target directory)
+
+define RUST_CARGO_SRCS
+$(shell find $(2)/$(1) -type f -not -path '$(2)/$(1)/target/*' 2>/dev/null)
+endef