Skip to content
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

Consume libraries that we vendor fully by building separately and using a custom prefix path #113176

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

jkoritzinsky
Copy link
Member

Today, we consume 2 libraries that we "fully vendor" (ie we build the libraries using their build infrastructure and don't just extract some files out to build): zlib-ng and brotli.

These projects we currently include using CMake's FetchContent module, which effectively adds them into the existing build tree. This works pretty well as we get a lot of control to poke and prod at the build to make it work in our repo. It also means that we don't need to build any projects ourselves.

However, it also means that we can't use any of CMake's logic around how it discovers dependencies, requiring some special handling for ie system zlib vs our zlib.

Additionally, it means that we can only build each dependency project once per our build. We need to build two copies of the static libraries when we're building CoreCLR: no-IPO for NativeAOT, and with-IPO for the single-file host.

The new approach has us manually building each of our vendored projects one time per required configuration and installing them into a fake "sysroot"-style layout, which we pass to CMake as a way for it to find the packages. This way, we can build multiple copies and we can remove custom logic around "use system x" vs "use vendored x".

Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-io-compression
See info in area-owners.md if you want to be subscribed.

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

Successfully merging this pull request may close these issues.

1 participant