refactor(make): proper per-file dependency tracking for ASM programs - #711
Merged
Merged
Conversation
Replace the shell for-loop in compile-programs-asm with a pattern rule so make tracks each .s → .elf pair individually and only recompiles files whose source changed. Remove the *-no-compile targets (test-asm-no-compile, test-rust-no-compile, test-no-compile) that existed solely to skip the unconditional loop rebuild; test-asm, test-rust, and test-executor now inline their cargo commands after their compile prerequisites.
…es (#713) 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.
MauroToscano
approved these changes
Jun 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
forloop incompile-programs-asmwith a pattern rule$(ASM_ARTIFACTS_DIR)/%.elf: $(ASM_PROGRAMS_DIR)/%.s, so make tracks each.s → .elfpair individually and skips files that haven't changedASM_ARTIFACTScomputed viapatsubst, consistent with howRUST_ARTIFACTSandBENCH_ARTIFACTSare already defined| $(ASM_ARTIFACTS_DIR)) so the output directory is created once, not on every file buildtest-asm-no-compile,test-rust-no-compile, andtest-no-compile— these existed solely to bypass the unconditional loop rebuild;test-asm,test-rust, andtest-executornow inline theircargo testcommands directlyTest plan
make compile-programs-asmcompiles all 212.sfiles on a clean buildmake compile-programs-asmwith no source changes prints nothing (all up to date).sfile recompiles only that filemake test-asm,make test-rust,make test-executorwork end-to-end