Skip to content

[cmake] Remove the find_package() override for builtin_clang - #23612

Merged
vgvassilev merged 1 commit into
root-project:masterfrom
vgvassilev:root-rework-clang-find_package
Oct 12, 2026
Merged

vgvassilev merged 1 commit into
root-project:masterfrom
vgvassilev:root-rework-clang-find_package

Conversation

@vgvassilev

Copy link
Copy Markdown
Member

With builtin_llvm=OFF and builtin_clang=ON, interpreter/CMakeLists.txt sets LLVM_LINK_LLVM_DYLIB to OFF and redefines find_package(), so that Clang's find_package(LLVM) cannot set it back to ON from a distribution's LLVMConfig.cmake. Commands defined with macro() are global, so every later find_package() in ROOT's configuration goes through the override, and a second override anywhere would send find_package() into endless recursion. Nor is the override what keeps libCling static: add_cling_library() passes
DISABLE_LLVM_LINK_LLVM_DYLIB, and CppInterOp maps the Clang targets back to static LLVM components.

Remove it, but keep CLANG_LINK_CLANG_DYLIB defaulting to OFF as before. Clang derives that default from LLVM_LINK_LLVM_DYLIB, so a build directory first configured with ON could no longer go back to a tree with the override. The option only affects Clang's tools, which ROOT does not build.

With builtin_llvm=OFF and builtin_clang=ON, interpreter/CMakeLists.txt
sets LLVM_LINK_LLVM_DYLIB to OFF and redefines find_package(), so that
Clang's find_package(LLVM) cannot set it back to ON from a
distribution's LLVMConfig.cmake. Commands defined with macro() are
global, so every later find_package() in ROOT's configuration goes
through the override, and a second override anywhere would send
find_package() into endless recursion. Nor is the override what keeps
libCling static: add_cling_library() passes
DISABLE_LLVM_LINK_LLVM_DYLIB, and CppInterOp maps the Clang targets
back to static LLVM components.

Remove it, but keep CLANG_LINK_CLANG_DYLIB defaulting to OFF as before.
Clang derives that default from LLVM_LINK_LLVM_DYLIB, so a build
directory first configured with ON could no longer go back to a tree
with the override. The option only affects Clang's tools, which ROOT
does not build.

@guitargeek guitargeek left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

This also reverts the workaround from #23371, which is possible because the underlying problem wes fixed in compiler-research/CppInterOp@261bebb (made it into ROOT through f51e6e8)

Without that CppInterOp commit, one would get errors for builtin_llvm=OFF builtin_clang=OFF when applying this PR:

FAILED: [code=1] interpreter/CppInterOp/unittests/CppInterOp/bin/RelWithDebInfo/CppInterOpTests
: && /nix/store/mn2y6cydn5phwf2hxgfc3n7zjf48d5xg-clang-wrapper-21.1.8/bin/clang++ -fno-omit-frame-pointer -Wno-nonnull -Wno-unused-command-line-argument -march=native -Wc++11-narrowing -Wsign-compare -Wsometimes-uninitialized -Wconditional-uninitialized -Wheader-guard -Warray-bounds -Wcomment -Wtautological-compare -Wstrncat-size -Wloop-analysis -Wbool-conversion -pipe  -Wall -W -Woverloaded-virtual -fsigned-char -fsized-deallocation -pthread -fno-semantic-interposition   -fno-strict-aliasing -Wwrite-strings -Wno-shadow -Wno-unused-parameter -fPIC -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -O2 -g -DNDEBUG -rdynamic -Wl,--export-dynamic -rdynamic interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CAPITestC.dir/CAPITestC.c.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/CAPITest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/CommentReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/CppInterOpThunksTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/DiagnosticTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/EnumReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/FunctionReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/HandleTypesTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/InterpreterTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/JitTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/ResultTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/ScopeReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/TypeReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/Utils.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/VariableReflectionTest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/CUDATest.cpp.o interpreter/CppInterOp/unittests/CppInterOp/CMakeFiles/CppInterOpTests.dir/VTableOverlayTest.cpp.o -o interpreter/CppInterOp/unittests/CppInterOp/bin/RelWithDebInfo/CppInterOpTests  -Wl,-rpath,/run/opengl-driver/lib  /nix/store/5sdsmm8s00hck28yp95fk993rg42mqsp-gtest-1.18.0/lib/libgmock.so.1.18.0  /nix/store/5sdsmm8s00hck28yp95fk993rg42mqsp-gtest-1.18.0/lib/libgtest_main.so.1.18.0  -lpthread  interpreter/llvm-project/llvm/lib/libclangCppInterOp.a  /nix/store/5sdsmm8s00hck28yp95fk993rg42mqsp-gtest-1.18.0/lib/libgtest.so.1.18.0  interpreter/llvm-project/llvm/lib/libclingInterpreter.a  interpreter/llvm-project/llvm/lib/libclingUtils.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangInterpreter.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangFrontendTool.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangExtractAPI.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangInstallAPI.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangRewriteFrontend.a  -ldl  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangCodeGen.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangStaticAnalyzerCore.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangCrossTU.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangDriver.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangIndex.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangFrontend.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangOptions.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangParse.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangSerialization.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangSema.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangEdit.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangAPINotes.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangAnalysisLifetimeSafety.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangAnalysis.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangASTMatchers.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangAST.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangSupport.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangFormat.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangToolingInclusions.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangToolingCore.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangRewrite.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangLex.a  /nix/store/344sqg6mzxvgpqyhdsznpkrrg6aqk62n-clang-root-22-20260925-01/lib/libclangBasic.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64CodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64AsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64Disassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64Desc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64Info.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAArch64Utils.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAMDGPUUtils.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMARMUtils.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAVRCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAVRAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAVRDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAVRDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAVRInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBPFCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBPFAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBPFDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBPFDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBPFInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHexagonCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMIRParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHexagonAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHexagonDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHexagonDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHexagonInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLanaiCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLanaiAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLanaiDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLanaiDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLanaiInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLoongArchCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLoongArchAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLoongArchDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLoongArchDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLoongArchInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMipsCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMipsAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMipsDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMipsDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMipsInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMSP430CodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMSP430AsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMSP430Desc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMSP430Disassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMSP430Info.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMNVPTXCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMNVPTXDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMNVPTXInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPowerPCCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPowerPCAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPowerPCDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPowerPCDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPowerPCInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRISCVCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRISCVAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRISCVDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRISCVDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRISCVInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSparcCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSparcAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSparcDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSparcDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSparcInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSPIRVCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSPIRVAnalysis.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSPIRVDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSPIRVInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSystemZCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSystemZAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSystemZDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSystemZDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSystemZInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVECodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVEAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVEDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVEDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVEInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyUtils.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWebAssemblyInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMX86CodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMX86AsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMX86Desc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMX86Disassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMX86Info.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMXCoreCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAsmPrinter.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMXCoreDesc.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMXCoreDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMCDisassembler.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMXCoreInfo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendDriver.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMOrcDebugging.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMOrcJIT.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMExecutionEngine.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRuntimeDyld.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMWindowsDriver.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMJITLink.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMOrcTargetProcess.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMOrcShared.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCoverage.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLTO.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMExtensions.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libPolly.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPasses.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCoroutines.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMipo.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendOpenMP.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendOffloading.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMObjectYAML.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendAtomic.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendDirective.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCFGuard.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMGlobalISel.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSelectionDAG.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCodeGen.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMScalarOpts.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMTarget.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCGData.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBitWriter.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCodeGenTypes.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMHipStdPar.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMIRPrinter.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMInstrumentation.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMObjCARCOpts.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAggressiveInstCombine.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMVectorize.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSandboxIR.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libPollyISL.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMInstCombine.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMLinker.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMTransformUtils.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAnalysis.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMFrontendHLSL.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMProfileData.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSymbolize.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoGSYM.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoDWARF.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoPDB.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMObject.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMCParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMMC.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoDWARFLowLevel.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMIRReader.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBitReader.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMAsmParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMCore.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMRemarks.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBitstreamReader.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMTextAPI.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMBinaryFormat.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoCodeView.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoMSF.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDebugInfoBTF.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMPlugins.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMOption.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMTargetParser.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a  /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMDemangle.a && :
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::compress(llvm::compression::Params, llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&)':
(.text._ZN4llvm11compression8compressENS0_6ParamsENS_8ArrayRefIhEERNS_15SmallVectorImplIhEE+0x6b): undefined reference to `compressBound'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: (.text._ZN4llvm11compression8compressENS0_6ParamsENS_8ArrayRefIhEERNS_15SmallVectorImplIhEE+0xca): undefined reference to `compress2'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::decompress(llvm::DebugCompressionType, llvm::ArrayRef<unsigned char>, unsigned char*, unsigned long)':
(.text._ZN4llvm11compression10decompressENS_20DebugCompressionTypeENS_8ArrayRefIhEEPhm+0x29): undefined reference to `uncompress'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::decompress(llvm::compression::Format, llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&, unsigned long)':
(.text._ZN4llvm11compression10decompressENS0_6FormatENS_8ArrayRefIhEERNS_15SmallVectorImplIhEEm+0x50): undefined reference to `uncompress'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::decompress(llvm::DebugCompressionType, llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&, unsigned long)':
(.text._ZN4llvm11compression10decompressENS_20DebugCompressionTypeENS_8ArrayRefIhEERNS_15SmallVectorImplIhEEm+0x50): undefined reference to `uncompress'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::zlib::compress(llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&, int)':
(.text._ZN4llvm11compression4zlib8compressENS_8ArrayRefIhEERNS_15SmallVectorImplIhEEi+0x2c): undefined reference to `compressBound'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: (.text._ZN4llvm11compression4zlib8compressENS_8ArrayRefIhEERNS_15SmallVectorImplIhEEi+0x57): undefined reference to `compress2'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::zlib::decompress(llvm::ArrayRef<unsigned char>, unsigned char*, unsigned long&)':
(.text._ZN4llvm11compression4zlib10decompressENS_8ArrayRefIhEEPhRm+0x2a): undefined reference to `uncompress'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(Compression.cpp.o): in function `llvm::compression::zlib::decompress(llvm::ArrayRef<unsigned char>, llvm::SmallVectorImpl<unsigned char>&, unsigned long)':
(.text._ZN4llvm11compression4zlib10decompressENS_8ArrayRefIhEERNS_15SmallVectorImplIhEEm+0x52): undefined reference to `uncompress'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(CRC.cpp.o): in function `llvm::crc32(unsigned int, llvm::ArrayRef<unsigned char>)':
(.text._ZN4llvm5crc32EjNS_8ArrayRefIhEE+0x37): undefined reference to `crc32'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(CRC.cpp.o): in function `llvm::crc32(llvm::ArrayRef<unsigned char>)':
(.text._ZN4llvm5crc32ENS_8ArrayRefIhEE+0x37): undefined reference to `crc32'
/nix/store/31gnwsgag5qa14hfblqi5hyn71pyx7py-binutils-2.46/bin/ld.bfd: /nix/store/xkz4wxn7n58g7nx9ik57jif3nmjmrjbk-llvm-22.1.8-lib/lib/libLLVMSupport.a(CRC.cpp.o): in function `llvm::JamCRC::update(llvm::ArrayRef<unsigned char>)':
(.text._ZN4llvm6JamCRC6updateENS_8ArrayRefIhEE+0x37): undefined reference to `crc32'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
[49/1725] Building CXX object core/metacling/src/CMakeFiles/MetaCling.dir/TCling.cxx.o
ninja: build stopped: subcommand failed.

@guitargeek

Copy link
Copy Markdown
Contributor

@ferdymercury, can you maybe also confirm that your setup still works?

@ferdymercury

Copy link
Copy Markdown
Collaborator

Yep, I'll check

@ferdymercury ferdymercury left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!! Seems ok on my side.

This introduces a change, before grep LLVM.so in the build directory returned nothing, now several things.

And a related question, why are we here ok to link against shared LLVM, but then we have two places where we explicitly disable that?

interpreter/cling/CMakeLists.txt:346
llvm_add_library(${name} ${ARG_ENABLE_SHARED} DISABLE_LLVM_LINK_LLVM_DYLIB ${ARG_UNPARSED_ARGUMENTS} ${srcs})
interpreter/CppInterOp/lib/CppInterOp/CMakeLists.txt:391
DISABLE_LLVM_LINK_LLVM_DYLIB

Is the hybrid approach intended, meaning some things are shared and others are static?

@vgvassilev

vgvassilev commented Oct 6, 2026 •

Copy link
Copy Markdown
Member Author

With builtin_llvm=OFF and builtin_clang=ON, interpreter/CMakeLists.txt sets LLVM_LINK_LLVM_DYLIB to OFF and redefines find_package(), so that Clang's find_package(LLVM) cannot set it back to ON from a distribution's LLVMConfig.cmake. Commands defined with macro() are global, so every later find_package() in ROOT's configuration goes through the override, and a second override anywhere would send find_package() into endless recursion. Nor is the override what keeps libCling static: add_cling_library() passes DISABLE_LLVM_LINK_LLVM_DYLIB, and CppInterOp maps the Clang targets back to static LLVM components.

Remove it, but keep CLANG_LINK_CLANG_DYLIB defaulting to OFF as before. Clang derives that default from LLVM_LINK_LLVM_DYLIB, so a build directory first configured with ON could no longer go back to a tree with the override. The option only affects Clang's tools, which ROOT does not build.

Can you share your grep output?

@ferdymercury

ferdymercury commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Can you share your grep output?

On a clean build folder, just running configure with Debian-testing and master, I get:

cmake -Dbuiltin_llvm=OFF /opt/root_src
grep -Er 'LLVM\.so' *

No output.

With your patch, I get this output:
grepout.txt

Since this runs very quickly, just configure, no need to build, it could even become a pre-build ctest.

From a naive point of view, I had thought that if linking to shared lib is ok, then there should be also in cling/CMakeLists:

  set(conditional_llvm_link_flags)
  if(NOT LLVM_LINK_LLVM_DYLIB)
    set(conditional_llvm_link_flags DISABLE_LLVM_LINK_LLVM_DYLIB)
  endif()
  llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${conditional_llvm_link_flags} ${ARG_UNPARSED_ARGUMENTS} ${srcs})

to honor what the user / system sets, in a coherent way everywhere. But again I have no understanding if it's intended that some places go via shared and others don't.

@vgvassilev

Copy link
Copy Markdown
Member Author

Thanks for the details. The grep seems to compare rules for targets nobody builds, not what ROOT produces. What matters is ldd of libCling and rootcling. That's also why I wouldn't turn the grep into a test: it would fail on those unbuilt rules. The property we care about is that libCling keeps its LLVM private. #23606 tests exactly that, both on the built libCling and at run time.

On making DISABLE_LLVM_LINK_LLVM_DYLIB in cling conditional: distribution LLVM packages set LLVM_LINK_LLVM_DYLIB to ON in their LLVMConfig.cmake (Debian's and apt.llvm.org's do so unconditionally). So that change would make libCling link libLLVM.so in every distribution build. That's the configuration we must avoid.

So it isn't really a hybrid: everything ROOT builds links LLVM statically. Only Clang's own tools, which ROOT doesn't build, now follow the distribution's setting, as the distribution's own Clang does. The removed override only forced those unbuilt rules static as well, by redefining find_package() for the rest of ROOT's configuration.

@vgvassilev
vgvassilev marked this pull request as ready for review October 6, 2026 08:59
@vgvassilev
vgvassilev requested a review from bellenot as a code owner October 6, 2026 08:59
@vgvassilev vgvassilev changed the title Remove the find_package() override for builtin_clang [cmake] Remove the find_package() override for builtin_clang Oct 6, 2026
@vgvassilev
vgvassilev requested a review from hahnjo October 6, 2026 08:59
@ferdymercury

Copy link
Copy Markdown
Collaborator

Thanks a lot for the clarification! LGTM.

The removed override only forced those unbuilt rules static as well, by redefining find_package() for the rest of ROOT's configuration.

Yep, it was a workaround due to the build failures with the LLVM22/cppinterop upgrade, now solved thanks to f51e6e8 as Jonas said

@vgvassilev

Copy link
Copy Markdown
Member Author

The failures seem unrelated.

@vgvassilev
vgvassilev merged commit 243a58d into root-project:master Oct 12, 2026
28 of 31 checks passed
@vgvassilev
vgvassilev deleted the root-rework-clang-find_package branch October 12, 2026 09:47
@pcanal

pcanal commented Oct 12, 2026

Copy link
Copy Markdown
Member

Once upon a time, (if I recall correctly) this (or something similar) was used to make sure that LLVM was using the same compression libraries than ROOT when we were building them as builtins. Was it verified that this is still working?

@ferdymercury

Copy link
Copy Markdown
Collaborator

this (or something similar)

Yes, it was removed here:

https://github.com/root-project/root/pull/22604/files

See also
#17909
#8633

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.

4 participants