Repository navigation
[cmake] Remove the find_package() override for builtin_clang - #23612
Conversation
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
left a comment
There was a problem hiding this comment.
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.|
@ferdymercury, can you maybe also confirm that your setup still works? |
|
Yep, I'll check |
ferdymercury
left a comment
There was a problem hiding this comment.
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?
Can you share your grep output? |
On a clean build folder, just running configure with Debian-testing and master, I get: No output. With your patch, I get this output: 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: 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. |
|
Thanks for the details. The grep seems to compare rules for targets nobody builds, not what ROOT produces. What matters is On making 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. |
|
Thanks a lot for the clarification! LGTM.
Yep, it was a workaround due to the build failures with the LLVM22/cppinterop upgrade, now solved thanks to f51e6e8 as Jonas said |
|
The failures seem unrelated. |
|
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? |
Yes, it was removed here: |
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.