Skip to content

fix: single-source the Windows runtime source list in a props file - #288

Merged
turinglambdaai merged 1 commit into
mainfrom
fix/windows-runtime-source-props
Oct 19, 2026
Merged

turinglambdaai merged 1 commit into
mainfrom
fix/windows-runtime-source-props

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

Summary

Closes #280.

platform/windows/rivet-runtime-sources.props is now the single author of the
host library's <ClCompile> set:

  • rivet-host.vcxproj imports the props instead of listing 15 sources, so
    Rivet's own build and any downstream consumption of the same list can never
    disagree.
  • Transitional vendored-source hosts (the podlens class, until Host integrations must consume released rivet packages, never compile rivet sources into downstream executables #238 ships
    prebuilt static libraries) import the same props; RivetSourceRoot can be
    overridden when the import happens from a checkout rooted elsewhere.
  • rivet/tests/host-package-linkage.rkt gains the rot guard: every
    rivet_protocol runtime unit in runtime/CMakeLists.txt (minus the chart
    unit that rivet-chart.lib owns) must appear in the props, so adding a
    translation unit without reaching vendored Windows hosts fails in rivet CI
    instead of at a downstream link.
  • platform/windows/README.md documents both consumption contracts
    (ProjectReference primary, props import transitional).
  • platform/windows/obj/ build output is gitignored.

Verification

  • raco test rivet/tests/host-package-linkage.rkt rivet/tests/windows-update-handoff.rkt — 39 passed.
  • Full MSBuild build of rivet-host.vcxproj (Release x64, local VS 18) with
    the props import produced rivet-host.lib — the imported item group
    compiles end to end, including NuGet restore of the Windows App SDK graph.

Downstream hosts that compile Rivet sources directly re-list the
<ClCompile> set by hand, and the list rots: every new runtime translation
unit silently broke every vendored Windows host at link time (the podlens
valid_utf8 LNK2001, issue #280).

platform/windows/rivet-runtime-sources.props is now the single author of
the set. rivet-host.vcxproj imports it, so Rivet's own build and the
transitional vendored-source contract consume one list; a guard test keeps
it in step with runtime/CMakeLists.txt, and platform/windows/README.md
documents both consumption contracts.
@turinglambdaai
turinglambdaai merged commit e481d31 into main Oct 19, 2026
23 checks passed
@turinglambdaai
turinglambdaai deleted the fix/windows-runtime-source-props branch October 19, 2026 04:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

windows: downstream hosts re-list rivet runtime sources by hand — the list rots (podlens LNK2001 case)

1 participant