-
-
Notifications
You must be signed in to change notification settings - Fork 419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[3.0] Cache ClangSharp outputs & use cache if we shouldn't run ClangSharp #1868
Conversation
Oh and this also lets us use Git repos & NuGet packages as ClangSharp inputs, alleviating the need for submodules which have to be manually synchronised. |
Minimum allowed coverage is Generated by 🐒 cobertura-action against 89dcc7a |
I think this is ready for review, I'll do the NUKE/CI stuff in a later PR. The LOC count may seem excessive, but this is because TerraFX has updated and as a result so has our Windows bindings. The bit I'm interested in scrutiny for is the stuff in sources/SilkTouch as this has been written over many sleep-deprived evenings. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good from what I can tell. Didn't really look at the d3d12 code, since I'm assuming that is just raw clangsharp output atm. The actual code for Caching, Sources, and the new AddIncludes looks all pretty sound to me.
The generated OpenGL code also looks a bit better formed.
Thank you all for reviewing and your continued support with the 3.0 effort! |
This introduces a caching mechanism in SilkTouch 3.0 so that we can cache the raw outputs from ClangSharp to allow the rest of the SilkTouch pipeline to be run & developed on platforms other than the ones in which ClangSharp can run. For example, we'd cache raw outputs for the Windows SDK bindings so that if we don't have access to the Windows SDK for example (e.g. we're on macOS), we'd open the cache and feed the cached outputs through the pipeline.
The way I envision this looking is:
This was also how the BuildTools cache was intended to work, but I don't know of a single instance of it working properly and even if it did, the cache was output at a pretty late stage in the pipeline such that the only changes observable without regenerating the cache were pretty much just overloads.