From 52454811d1bc2810c277cb61208daaf8b44035cf Mon Sep 17 00:00:00 2001 From: MauroFab Date: Thu, 25 Jun 2026 15:45:40 -0300 Subject: [PATCH] refactor(make): use order-only dir prereqs for Rust/Bench pattern rules Move `mkdir -p` out of the Rust and Bench recipe bodies and into dedicated directory targets with order-only prerequisites, matching the pattern already used for ASM artifacts in this branch. --- Makefile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index be1bce15c..81bc03a8c 100644 --- a/Makefile +++ b/Makefile @@ -136,14 +136,19 @@ compile-bench: prepare-sysroot $(BENCH_ARTIFACTS) compile-programs: compile-programs-asm compile-programs-rust compile-bench +$(RUST_ARTIFACTS_DIR): + mkdir -p $@ + +$(BENCH_ARTIFACTS_DIR): + mkdir -p $@ + # Compile rust (64-bit) # Order-only `| prepare-sysroot` so a direct `make .../foo.elf` provisions the sysroot # first (the aggregate compile-programs-rust/compile-bench targets already do, but a # bare pattern-rule invocation like `make -B .../ethrex.elf` would otherwise skip it # and fail to compile guest C dependencies). Order-only because prepare-sysroot is # .PHONY — a normal prereq would force a rebuild every time; its recipe is idempotent. -$(RUST_ARTIFACTS_DIR)/%.elf: $(RUST_PROGRAMS_DIR)/%/Cargo.toml | prepare-sysroot - @mkdir -p $(RUST_ARTIFACTS_DIR) +$(RUST_ARTIFACTS_DIR)/%.elf: $(RUST_PROGRAMS_DIR)/%/Cargo.toml | prepare-sysroot $(RUST_ARTIFACTS_DIR) cd $(RUST_PROGRAMS_DIR)/$* && \ CARGO_TARGET_DIR=$(abspath $(SHARED_TARGET_DIR)) \ CFLAGS_riscv64im_lambda_vm_elf="$(SYSROOT_CFLAGS)" \ @@ -155,8 +160,7 @@ $(RUST_ARTIFACTS_DIR)/%.elf: $(RUST_PROGRAMS_DIR)/%/Cargo.toml | prepare-sysroot cp $(SHARED_TARGET_DIR)/riscv64im-lambda-vm-elf/release/$* $@ # Compile rust benches (64-bit) -$(BENCH_ARTIFACTS_DIR)/%.elf: $(BENCH_PROGRAMS_DIR)/%/Cargo.toml | prepare-sysroot - @mkdir -p $(BENCH_ARTIFACTS_DIR) +$(BENCH_ARTIFACTS_DIR)/%.elf: $(BENCH_PROGRAMS_DIR)/%/Cargo.toml | prepare-sysroot $(BENCH_ARTIFACTS_DIR) cd $(BENCH_PROGRAMS_DIR)/$* && \ CARGO_TARGET_DIR=$(abspath $(SHARED_TARGET_DIR)) \ CFLAGS_riscv64im_lambda_vm_elf="$(SYSROOT_CFLAGS)" \