Skip to content

Provenance: replace or isolate matching-target libultra implementation sources #9

Description

@akratch

Problem

The public tree no longer tracks proprietary SDK notice text and the native CMake play target no longer compiles historical libultra/Rare libaudio implementation sources. The remaining conservative provenance risk is narrower now: SDK/libultra-lineage compatibility material is still present for the in-progress N64 matching target, mostly under include/PR/, src/libultra/{gu,io,libc,os}/, and src/libultrare/{io,libc,os}/.

This is documented in THIRD_PARTY.md, ROADMAP.md, and docs/STATUS.md, but it is still not accurate to describe the repository as fully clean-room while that matching-target surface remains in-tree.

Current state

  • Proprietary SDK notice text: 0 tracked paths per ./scripts/ci/check_release_ready.sh.
  • Native CMake target: compiles zero src/libultra/audio/*.c and zero src/libultrare/audio/*.c; tools/check_native_sdk_surface.py guards against reintroducing the removed audio/native SDK surface.
  • Matching libaudio path: routes through src/libultra/audio/clean_compat.c, a notice-free wrapper around the shared project-owned src/platform/audio_compat.c implementation.
  • Removed from public tree: obsolete top-level compatibility headers, several unused include/PR/* headers, include/PR/ultraerror.h, and the unbuilt split libaudio helper/wrapper sources that had increased the public SDK surface.
  • Remaining matching-target surface: 162 tracked paths under include/PR, src/libultra, and src/libultrare, including SDK-shaped headers plus GU/IO/libc/OS implementation files used by src/libultrare/Makefile.libultrare and the N64 linker scripts.
  • Matching target also requires local user-supplied SGI IDO/IRIX compiler files under tools/irix/root and separate data-table link work tracked by the N64 byte-matching data-table issue.

Desired end state

Pick one deliberate policy and implement it consistently:

  1. Replace matching-target SDK/libultra implementation files with clean-room equivalents where practical; or
  2. Move matching-target-only SDK implementation source out of the default public branch/release archive while keeping native play and public docs honest; or
  3. Keep a minimal, explicit, documented matching-target exception inventory with provenance rationale and make the release guard hard-fail outside that list.

Do not simply strip provenance/comments from SDK-lineage implementation files without replacing, isolating, or explicitly documenting the implementation.

Validation

./scripts/ci/check_release_ready.sh
python3 tools/check_native_sdk_surface.py --repo-root .
cmake --build build --parallel 4
ctest --test-dir build --output-on-failure

If touching matching-target behavior, document and run the relevant make/COMPARE flow or explain the current blocker.

Metadata

Metadata

Assignees

No one assigned

    Labels

    matchingN64 byte-matching and ROM rebuild workprovenanceLicense, SDK cleanup, asset hygiene, and copyright-safety work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions