fix: source espup env for linker, add build-all, fix Ctrl+C handling

- Source ~/export-esp.sh in Justfile for xtensa builds (provides GCC)
- Add build-all target for producing firmware
- Trap SIGINT in build-all/check-all so Ctrl+C stops immediately
- Add .cargo/config.toml to .gitignore (may be generated)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
swaitsandClaude Opus 4.6 committed 2026-03-29 20:42:54 -06:00
1 parent c37b63fa18
commit 78827155b5
1 file changed
+23 -4
+23 -4
View File
@@ -12,12 +12,25 @@ firmware_dir := "firmware"
# All known boards # All known boards
boards := "heltec_v3 heltec_v4 rak_wisblock_4631" boards := "heltec_v3 heltec_v4 rak_wisblock_4631"
# Build release firmware for all boards with available toolchains
build-all:
@trap 'exit 130' INT; \
for board in {{boards}}; do \
if just _can_build $board 2>/dev/null; then \
echo "── building $board ──"; \
just build $board || exit $?; \
else \
echo "── skipping $board (toolchain not available) ──"; \
fi; \
done
# Check all boards that can build with the available toolchain # Check all boards that can build with the available toolchain
check-all: check-all:
@for board in {{boards}}; do \ @trap 'exit 130' INT; \
for board in {{boards}}; do \
if just _can_build $board 2>/dev/null; then \ if just _can_build $board 2>/dev/null; then \
echo "── checking $board ──"; \ echo "── checking $board ──"; \
just check $board; \ just check $board || exit $?; \
else \ else \
echo "── skipping $board (toolchain not available) ──"; \ echo "── skipping $board (toolchain not available) ──"; \
fi; \ fi; \
@@ -31,7 +44,10 @@ check board:
clippy board: clippy board:
@read -r feat target chip <<< "$(just _info {{board}})"; \ @read -r feat target chip <<< "$(just _info {{board}})"; \
env=""; extra=""; \ env=""; extra=""; \
case "$target" in xtensa-*) env="RUSTC=$(rustup which rustc --toolchain esp)"; extra="+nightly -Zbuild-std=core";; esac; \ case "$target" in xtensa-*) \
[ -f "$HOME/export-esp.sh" ] && . "$HOME/export-esp.sh"; \
env="RUSTC=$(rustup which rustc --toolchain esp)"; extra="+nightly -Zbuild-std=core";; \
esac; \
eval $env cargo $extra clippy --target $target --features $feat -- -D warnings eval $env cargo $extra clippy --target $target --features $feat -- -D warnings
# Build release firmware and copy to firmware/ with a readable name # Build release firmware and copy to firmware/ with a readable name
@@ -57,7 +73,10 @@ size board:
_cargo board cmd: _cargo board cmd:
@read -r feat target chip <<< "$(just _info {{board}})"; \ @read -r feat target chip <<< "$(just _info {{board}})"; \
env=""; extra=""; \ env=""; extra=""; \
case "$target" in xtensa-*) env="RUSTC=$(rustup which rustc --toolchain esp)"; extra="+nightly -Zbuild-std=core";; esac; \ case "$target" in xtensa-*) \
[ -f "$HOME/export-esp.sh" ] && . "$HOME/export-esp.sh"; \
env="RUSTC=$(rustup which rustc --toolchain esp)"; extra="+nightly -Zbuild-std=core";; \
esac; \
eval $env cargo $extra {{cmd}} --target $target --features $feat eval $env cargo $extra {{cmd}} --target $target --features $feat
# Check if a board's toolchain is available # Check if a board's toolchain is available