Build-system fixes: multi-TFM dedup, clean fix, loader strip, sk_renderer auto-detect - #6
Merged
Merged
Conversation
austinbhale
force-pushed
the
build-dedup-and-fixes
branch
2 times, most recently
from
July 24, 2026 18:35
e8503ec to
1b2c788
Compare
…ld project Delegating the cmake configure/build and the clean's directory removal to BuildStereoKitNative.proj lets MSBuild collapse concurrent identical requests from parallel TFM/project builds into a single execution instead of racing. The clean also switches to 'cmake -E rm -rf', which handles the read-only git objects under _deps that RemoveDir refuses to delete. Design-time builds skip the native build entirely.
Stripping the loader's actual build output on every StereoKitC post-build destroyed debug symbols in the build tree and rewrote the file each build. Strip to a .stripped side file in the binary dir and point the distribute copy at it; distribute output is unchanged, the build tree keeps symbols.
… dir SK_LOCAL_SK_RENDERER now defaults ON when a sibling ../sk_renderer clone exists. The local add_subdirectory also moves its binary dir into CMAKE_BINARY_DIR so each preset (MSVC, NDK) gets its own build tree instead of colliding in a shared ../sk_renderer/build.
FORCE stomped the cache on every configure, making it impossible to opt in to glslang from the command line when SK_USE_SVSL is on. Without FORCE the defaults are unchanged, but an explicit -DSKSHADERC_ENABLE_GLSLANG=ON wins.
austinbhale
force-pushed
the
build-dedup-and-fixes
branch
from
July 24, 2026 18:38
1b2c788 to
1e48cbc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1.
fix: dedup native build/clean across multi-TFM builds via inner MSBuild projectMulti-TFM builds (e.g.
net10.0+net10.0-windows) and multi-project solutions each ran their owncmake --buildof the same preset concurrently — racing on the same intermediate dir, and doing the same work twice. The cmake configure/build and the clean's directory removal now route through a newBuildStereoKitNative.projvia the<MSBuild>task, so MSBuild collapses identical concurrent requests into a single execution. Also:cmake -E rm -rf, which handles the read-only git objects under_depsthatRemoveDirfails on (MSB3231).2.
fix: strip openxr_loader to a side file instead of in placeThe distribute step stripped the loader's actual build output on every StereoKitC post-build — destroying debug symbols in the build tree and rewriting the file each build. Now strips to a
.strippedside file in the binary dir and points the distribute copy at it. Distribute output unchanged; build tree keeps symbols.3.
feat: auto-detect sibling sk_renderer checkout, use per-preset binary dirSK_LOCAL_SK_RENDERERdefaults ON when a sibling../sk_rendererclone exists. The localadd_subdirectorybinary dir moves intoCMAKE_BINARY_DIRso each preset (MSVC, NDK) gets its own build tree instead of colliding in a shared../sk_renderer/build.4.
fix: drop FORCE from SKSHADERC_ENABLE_GLSLANG so -D overrides workFORCEstomped the cache on every configure, making it impossible to opt in to glslang from the command line whenSK_USE_SVSLis on. Defaults unchanged; an explicit-DSKSHADERC_ENABLE_GLSLANG=ONnow wins.