## What changed
- Add an x64 and ARM64 MSVC runtime preparer that uses `dumpbin` to validate
PE32+ DLL metadata, selects the declared GStreamer plugins and dependency
closure, and copies them unchanged into a private `bin/` directory.
- Reject malformed or unsupported PE metadata, path-bearing imports, delayed
imports, managed DLLs, forwarded exports, undeclared dependencies, and
case-insensitive DLL identity conflicts.
- Keep `third_party/voice/sources.json` line endings stable across Windows
checkouts so native build receipts remain valid.
## Testing
Add native Windows tests for relocated DLL loading with a restricted search
path, receipt and digest failures, duplicate identities, malformed PE headers,
unsupported loader features, and cleanup after failed preparation.
GitOrigin-RevId: 5375f21fc54f5d597f3d4e5f8fbca3df307fa2a8
## Why
Native voice libraries need package-relative loader paths so a prepared runtime
can be moved without retaining references to its build prefix.
## What changed
- Configure CMake and GNU Linux Meson builds with relative runtime paths, while
also setting relocatable install names and paths for CMake libraries on macOS.
- Add a GNU Linux runtime preparer for x64 and ARM64 that validates bounded ELF64
metadata, selects the declared GStreamer plugins and dependency closure, and
preserves the `lib/gstreamer-1.0/` layout.
- Reject malformed ELF metadata, path-bearing imports, unsupported loader
dependencies, and native outputs that still contain incompatible runtime
paths.
## Testing
Add native tests for relative build paths, relocated library loading, dependency
and digest failures, malformed ELF inputs, and cleanup after failed preparation.
GitOrigin-RevId: ed94819b07d20214b56363446b64f765e08d75fa
## What changed
- Add a shared runtime preparer that validates native build receipts, source and
file digests, dependency closure, and output containment before copying the
required voice plugins and libraries.
- Add macOS-specific Mach-O inspection and relocation that removes build-time
runpaths, rewrites non-system dependencies relative to each loader, applies
development ad-hoc signatures, and records the resulting payload in
`runtime.json`.
- Close the state runtime explicitly in the clear-memories CLI test.
## Testing
- Add macOS tests covering relocation after the source prefix is removed and
fail-closed handling of invalid receipts, changed inputs, unsafe paths,
dependency conflicts, malformed Mach-O metadata, and failed transforms.
GitOrigin-RevId: 3be7a6fabf0135a57036cbb0a9a3e597096930fd
## Why
Windows builds combine Cygwin build tools with native MSVC outputs. On ARM64,
Cygwin can run under x64 emulation, so inferred host details and untranslated
paths can select the wrong target or leak POSIX paths into native metadata.
## What changed
- Convert libffi source, prefix, and shell paths with `cygpath`, preserve
`USERPROFILE`, and pass explicit build and host targets.
- Configure libffi's MSVC and libtool environment to produce and install its
shared library and import library, including across recursive make calls.
- Reject libffi pkg-config output containing `/cygdrive/` paths and enable
Opus NEON support for `aarch64-pc-windows-msvc`.
- Document the additional Windows build prerequisites.
## Testing
- Extend `test_build_native.py` with Windows path conversion, x64 and ARM64
target configuration, recursive make flag propagation, pkg-config, and Opus
coverage.
GitOrigin-RevId: 12eb4ff83e141aa069abd68af4839f06e4c45b8f
## Why
The pinned voice source inputs can be prepared but do not yet provide compiled
native libraries for downstream integration.
## What changed
- Add `build_native.py` to build a shared-library prefix for the supported voice
dependencies on native x64 and ARM64 GNU/Linux, macOS, and Windows MSVC hosts.
- Require explicit toolchain inputs, isolate dependency discovery to the output
prefix, and record command logs and build state for provenance and failures.
- Expose the recipe and source inputs through `//third_party/voice:build_inputs`
and document its prerequisites, outputs, and integration boundaries.
## Testing
- `PYTHONSAFEPATH=1 python3 -m unittest discover -s third_party/voice -p 'test_build_native.py'`
GitOrigin-RevId: 132d93561a8e1bb178518f1248cf87d031060aae
## What changed
- Pin the GStreamer, codec, native library, and build-tool archives needed by
the native voice runtime, including their SHA-256 digests.
- Add lazy Bazel repositories and a manual `//third_party/voice:sources` target
for fetching and unpacking the pinned archives.
- Add an offline Python adapter that verifies archive identity and extraction
bounds, refuses existing output directories, cleans up failed preparations,
and records a completion receipt.
- Document that this stage prepares source inputs only; it does not compile or
link the libraries or enable voice.
## Testing
- Add unit coverage for digest failures, unsafe links, expansion limits,
cleanup after extraction failures, existing-output preservation, and systems
where archive links cannot be created.
GitOrigin-RevId: 42a71d7b6b91d49b3954a40932033c44f9861f04