[CMake] Don't override find_package() for builtins#22604
Merged
Conversation
find_package() for builtins
Test Results 21 files 21 suites 3d 11h 13m 41s ⏱️ For more details on these failures, see this check. Results for commit cbcfc58. ♻️ This comment has been updated with latest results. |
ferdymercury
approved these changes
Jun 14, 2026
ferdymercury
left a comment
Collaborator
There was a problem hiding this comment.
Thanks, just a minor nitpick
hageboeck
reviewed
Jun 16, 2026
builtins/zstd defined the imported ZSTD::ZSTD target but never tied it to the BUILTIN_ZSTD ExternalProject that actually produces libzstd.a. As a result a parallel or targeted build (e.g. building only the Core target) could try to link the archive before it exists. Add the dependency edge, consistent with what builtins/zlib already does for BUILTIN_ZLIB. 🤖 Done by AI.
ROOT redefined the global find_package() command to no-op for its builtins, so that sub-projects added later (notably the bundled LLVM) and transitive find modules (e.g. FindPNG -> find_package(ZLIB)) would reuse ROOT's builtin imported targets instead of re-discovering a system copy. This relied on undocumented CMake behaviour and recursed infinitely under tools that override find_package() themselves, such as vcpkg (root-project#8633). The override only ever did real work for ZLIB and zstd: every other name in ROOT_BUILTINS was unnecessary (no find_package() consumer downstream). Both are now handled directly, so the override and the ROOT_BUILTINS list can be removed. This makes ROOT compatible with vcpkg and other dependency providers without changing behaviour: in builtin builds LLVM is still built without zlib/zstd, and a system build is unaffected since find_package() is no longer shadowed. Closes root-project#8633. 🤖 Done with the help of AI, which suggested an initial solution that I refined.
hageboeck
approved these changes
Jun 17, 2026
hageboeck
left a comment
Member
There was a problem hiding this comment.
What happens to llvm if zlib is disabled? Does it have any consequences?
Contributor
Author
|
Good question! I assumed it's unable to compress modules then, for example. Maybe @hahnjo knows? |
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.
Targeted changes to make the
find_packageoverride unnecessary (more detail in inline comments and commit messages).Closes #8633.
🤖 Done with the help of AI, which suggested an initial solution that I refined.