AI Generated issue-ticket
Summary
When running `make all` (or `make all -k -j$(nproc)`) across all 459 supported targets, there is no final summary of how many targets succeeded and how many failed. The build output scrolls by and the user must grep logs or count hex files manually to determine the outcome.
Proposed Change
Modify `Makefile` and/or `make/targets.mk` to:
- Change the `$(VALID_TARGETS)` recipe from an `&&` chain to an `if/else` that writes the target name to `obj/.build_passed` or `obj/.build_failed` on success/failure respectively.
- Add a `build_summary` phony target that depends on `$(SUPPORTED_TARGETS)`, counts the marker files, prints a final summary line, and exits non-zero if any target failed.
- Make `all` and `supported` depend on `build_summary` instead of directly on `$(SUPPORTED_TARGETS)`.
The `if/else` shell construct absorbs per-target failures so the build continues naturally without requiring `-k`. The marker files live inside `obj/` and are cleaned by the normal `make clean` workflow. `echo "NAME" >> file` with O_APPEND is atomic on Linux for writes under PIPE_BUF, so no `flock` is needed with `-j`.
Example Output
```
Building ZEUSF722_AIO succeeded.
Building ZEEZWHOOP succeeded.
=== Build summary: 457 succeeded, 2 failed ===
Failed targets:
FOOBARF4
WIDGETF7
```
Non-goals
- Warning/error counting (requires per-target log capture; separate effort)
- Changes to group targets or CI matrix targets
AI Generated issue-ticket
Summary
When running `make all` (or `make all -k -j$(nproc)`) across all 459 supported targets, there is no final summary of how many targets succeeded and how many failed. The build output scrolls by and the user must grep logs or count hex files manually to determine the outcome.
Proposed Change
Modify `Makefile` and/or `make/targets.mk` to:
The `if/else` shell construct absorbs per-target failures so the build continues naturally without requiring `-k`. The marker files live inside `obj/` and are cleaned by the normal `make clean` workflow. `echo "NAME" >> file` with O_APPEND is atomic on Linux for writes under PIPE_BUF, so no `flock` is needed with `-j`.
Example Output
```
Building ZEUSF722_AIO succeeded.
Building ZEEZWHOOP succeeded.
=== Build summary: 457 succeeded, 2 failed ===
Failed targets:
FOOBARF4
WIDGETF7
```
Non-goals