Skip to content
This repository was archived by the owner on Aug 18, 2026. It is now read-only.
This repository was archived by the owner on Aug 18, 2026. It is now read-only.

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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