Skip to content

build: add pass/fail summary after make all #1287

Description

@nerdCopter

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:

  1. 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.
  2. 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.
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions