When using LLVM and Clang as external dependencies (but built using their patched sources), Cling fails to link, showing various missing LLVM symbols.
[ 97%] Building CXX object tools/Jupyter/CMakeFiles/libclingJupyter.dir/Kernel.cpp.o
cd /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter && /gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin/c++ -DCLING_VERSION="1.0~dev" -DGTEST_HAS_RTTI=0 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/tools/Jupyter -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/include -I/tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -w -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -Wno-covered-switch-default -Wno-unused-local-typedef -fno-rtti -O3 -DNDEBUG -fPIC -fvisibility=default -fvisibility-inlines-hidden -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -fexceptions -frtti -o CMakeFiles/libclingJupyter.dir/Kernel.cpp.o -c /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/source/tools/Jupyter/Kernel.cpp
[ 98%] Linking CXX shared library ../../lib/libclingJupyter.so
cd /tmp/guix-build-cling-0.9-1.d78d1a0.drv-0/build/tools/Jupyter && /gnu/store/qixwn3dw6glj848hrr3h8fxm6s7wzxm3-cmake-minimal-3.16.5/bin/cmake -E cmake_link_script CMakeFiles/libclingJupyter.dir/link.txt --verbose=1
/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0/bin/c++ -fPIC -fPIC -fvisibility-inlines-hidden -Werror=date-time -std=c++11 -w -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -Wno-covered-switch-default -Wno-unused-local-typedef -fno-rtti -O3 -DNDEBUG -Wl,-O3 -Wl,-z,defs -Wl,-z,nodelete -shared -Wl,-soname,libclingJupyter.so.9 -o ../../lib/libclingJupyter.so.9 CMakeFiles/libclingJupyter.dir/Kernel.cpp.o -Wl,-rpath,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -lclangAST -lclangBasic -lclangCodeGen -lclangDriver -lclangFrontend -lclangLex -lclangParse -lclangSema -lclangSerialization ../../lib/libclingUserInterface.a ../../lib/libclingMetaProcessor.a -Wl,--whole-archive ../../lib/libclingInterpreter.a -Wl,--no-whole-archive ../../lib/libclingUtils.a -lclangCodeGen -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangRewrite -lclangRewriteFrontend -lclangAST -lclangBasic -lclangLex -lclangSerialization -ldl /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCoroutines.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCoverage.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMLTO.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMOption.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMOrcJIT.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMExecutionEngine.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMRuntimeDyld.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXCodeGen.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMipo.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXDesc.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMNVPTXInfo.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86CodeGen.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMScalarOpts.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMTarget.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMTransformUtils.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMAnalysis.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86AsmParser.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Desc.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMObject.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMCore.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Disassembler.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMMC.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMBinaryFormat.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Info.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMX86Utils.so.9 /gnu/store/1jzp899by0sssssjg75wr78m235xdnha-llvm-9.0.1/lib/libLLVMSupport.so.9
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `llvm::BitstreamCursor::advance(unsigned int)':
(.text._ZN4llvm15BitstreamCursor7advanceEj[_ZN4llvm15BitstreamCursor7advanceEj]+0xa7): undefined reference to `llvm::BitstreamCursor::ReadAbbrevRecord()'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTRecordReader::readRecord(llvm::BitstreamCursor&, unsigned int)':
(.text._ZN5clang15ASTRecordReader10readRecordERN4llvm15BitstreamCursorEj+0x22): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadBlockAbbrevs(llvm::BitstreamCursor&, unsigned int)':
(.text._ZN5clang9ASTReader16ReadBlockAbbrevsERN4llvm15BitstreamCursorEj+0x1e): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader16ReadBlockAbbrevsERN4llvm15BitstreamCursorEj+0xe8): undefined reference to `llvm::BitstreamCursor::ReadAbbrevRecord()'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `SkipCursorToBlock(llvm::BitstreamCursor&, unsigned int)':
(.text._ZL17SkipCursorToBlockRN4llvm15BitstreamCursorEj+0x5d): undefined reference to `llvm::BitstreamCursor::skipRecord(unsigned int)'
ld: (.text._ZL17SkipCursorToBlockRN4llvm15BitstreamCursorEj+0x20b): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `readASTFileSignature(llvm::StringRef)':
(.text._ZL20readASTFileSignatureN4llvm9StringRefE+0x1b9): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::readUnhashedControlBlockImpl(clang::serialization::ModuleFile*, llvm::StringRef, unsigned int, bool, clang::ASTReaderListener*, bool)':
(.text._ZN5clang9ASTReader28readUnhashedControlBlockImplEPNS_13serialization10ModuleFileEN4llvm9StringRefEjbPNS_17ASTReaderListenerEb+0x237): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::readInputFileInfo(clang::serialization::ModuleFile&, unsigned int)':
(.text._ZN5clang9ASTReader17readInputFileInfoERNS_13serialization10ModuleFileEj+0x143): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::getOriginalSourceFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, clang::FileManager&, clang::PCHContainerReader const&, clang::DiagnosticsEngine&)':
(.text._ZN5clang9ASTReader21getOriginalSourceFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_11FileManagerERKNS_18PCHContainerReaderERNS_17DiagnosticsEngineE+0x472): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadSLocEntry(int)::{lambda(llvm::BitstreamCursor&, llvm::StringRef)#1}::operator()(llvm::BitstreamCursor&, llvm::StringRef) const':
(.text._ZZN5clang9ASTReader13ReadSLocEntryEiENKUlRN4llvm15BitstreamCursorENS1_9StringRefEE_clES3_S4_+0x98): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadSourceManagerBlock(clang::serialization::ModuleFile&)':
(.text._ZN5clang9ASTReader22ReadSourceManagerBlockERNS_13serialization10ModuleFileE+0xb0): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader22ReadSourceManagerBlockERNS_13serialization10ModuleFileE+0x14c): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadExtensionBlock(clang::serialization::ModuleFile&)':
(.text._ZN5clang9ASTReader18ReadExtensionBlockERNS_13serialization10ModuleFileE+0xce): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadOptionsBlock(llvm::BitstreamCursor&, unsigned int, bool, clang::ASTReaderListener&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
(.text._ZN5clang9ASTReader16ReadOptionsBlockERN4llvm15BitstreamCursorEjbRNS_17ASTReaderListenerERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x37): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
ld: (.text._ZN5clang9ASTReader16ReadOptionsBlockERN4llvm15BitstreamCursorEjbRNS_17ASTReaderListenerERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x117): undefined reference to `llvm::BitstreamCursor::readRecord(unsigned int, llvm::SmallVectorImpl<unsigned long>&, llvm::StringRef*)'
ld: /gnu/store/cdphqx9ifjzcqrxbmq5ijg6pq3frm9gn-clang-9.0.1/lib/libclangSerialization.a(ASTReader.cpp.o): in function `clang::ASTReader::ReadControlBlock(clang::serialization::ModuleFile&, llvm::SmallVectorImpl<clang::ASTReader::ImportedModule>&, clang::serialization::ModuleFile const*, unsigned int)':
(.text._ZN5clang9ASTReader16ReadControlBlockERNS_13serialization10ModuleFileERN4llvm15SmallVectorImplINS0_14ImportedModuleEEEPKS2_j+0x48): undefined reference to `llvm::BitstreamCursor::EnterSubBlock(unsigned int, unsigned int*)'
[...]
Cling should build successfully.
Describe the bug
When using LLVM and Clang as external dependencies (but built using their patched sources), Cling fails to link, showing various missing LLVM symbols.
See ba63aikq9ym2n7gjs13m56hxa77q25-cling-0.9-1.d78d1a0.drv.txt for the complete build log.
Expected behavior
Cling should build successfully.
To Reproduce
./pre-inst-env guix build clingSetup