Skip to content

enable-llvm-link-shared produces static llvm #142994

Open
@ZuseZ4

Description

@ZuseZ4

Summary

I am currently on a Linux server where I can build LLVM+LLD from source, but fail to do so as part of rust's bootstrap. I gave both commands below. When diffing the CMakeCache.txt files between both builds, I see one obvious differences, which is the
BUILD_SHARED_LIBS variable, which is on when building manually, and off if I check
rust/build/x86_64_unknown-linux-gnu/llvm/build/CMakeCache.txt

The failure happens when building LLD, where rust bootstrap process failes due to a missing file.
So there likely is a bug in LLVM's CMake. However, digging deeper I wonder why I get a static llvm build.

Command used

configure-args = ['--enable-llvm-link-shared', '--enable-llvm-plugins', '--enable-llvm-enzyme', '--release-channel=nightly', '--enable-llvm-assertions', '--enable-clang', '--enable-lld', '--enable-option-checking', '--enable-ninja', '--disable-docs']
./x.py build --stage 1 library

Expected behaviour

I see a libLLVM.so

Actual behaviour

 ls build/x86_64-unknown-linux-gnu/llvm/lib
clang					  libclangToolingCore.a		     libLLVMBPFInfo.a		    libLLVMFuzzerCLI.a		    libLLVMMSP430Desc.a				libLLVMSymbolize.a
cmake					  libclangToolingInclusions.a	     libLLVMCFGuard.a		    libLLVMFuzzMutate.a		    libLLVMMSP430Disassembler.a			libLLVMSystemZAsmParser.a
libclangAnalysis.a			  libclangToolingInclusionsStdlib.a  libLLVMCFIVerify.a		    libLLVMGlobalISel.a		    libLLVMMSP430Info.a				libLLVMSystemZCodeGen.a
libclangAnalysisFlowSensitive.a		  libclangToolingRefactoring.a	     libLLVMCGData.a		    libLLVMHexagonAsmParser.a	    libLLVMNVPTXCodeGen.a			libLLVMSystemZDesc.a
libclangAnalysisFlowSensitiveModels.a	  libclangToolingSyntax.a	     libLLVMCodeGen.a		    libLLVMHexagonCodeGen.a	    libLLVMNVPTXDesc.a				libLLVMSystemZDisassembler.a
libclangAPINotes.a			  libclangTransformer.a		     libLLVMCodeGenTypes.a	    libLLVMHexagonDesc.a	    libLLVMNVPTXInfo.a				libLLVMSystemZInfo.a
libclangARCMigrate.a			  libear			     libLLVMCore.a		    libLLVMHexagonDisassembler.a    libLLVMObjCARCOpts.a			libLLVMTableGen.a
libclangAST.a				  libLLVM-20-rust-1.89.0-nightly.so  libLLVMCoroutines.a	    libLLVMHexagonInfo.a	    libLLVMObjCopy.a				libLLVMTableGenBasic.a
libclangASTMatchers.a			  libLLVMAArch64AsmParser.a	     libLLVMCoverage.a		    libLLVMHipStdPar.a		    libLLVMObject.a				libLLVMTableGenCommon.a
libclangBasic.a				  libLLVMAArch64CodeGen.a	     libLLVMCSKYAsmParser.a	    libLLVMInstCombine.a	    libLLVMObjectYAML.a				libLLVMTarget.a
libclangCodeGen.a			  libLLVMAArch64Desc.a		     libLLVMCSKYCodeGen.a	    libLLVMInstrumentation.a	    libLLVMOffload.so				libLLVMTargetParser.a
libclang-cpp.so				  libLLVMAArch64Disassembler.a	     libLLVMCSKYDesc.a		    libLLVMInterfaceStub.a	    libLLVMOffload.so.20.1-rust-1.89.0-nightly	libLLVMTelemetry.a
libclang-cpp.so.20.1-rust-1.89.0-nightly  libLLVMAArch64Info.a		     libLLVMCSKYDisassembler.a	    libLLVMInterpreter.a	    libLLVMOptDriver.a				libLLVMTextAPI.a
libclangCrossTU.a			  libLLVMAArch64Utils.a		     libLLVMCSKYInfo.a		    libLLVMipo.a		    libLLVMOption.a				libLLVMTextAPIBinaryReader.a
libclangDependencyScanning.a		  libLLVMAggressiveInstCombine.a     libLLVMDebugInfoBTF.a	    libLLVMIRPrinter.a		    libLLVMOrcDebugging.a			libLLVMTransformUtils.a
libclangDirectoryWatcher.a		  libLLVMAMDGPUAsmParser.a	     libLLVMDebugInfoCodeView.a     libLLVMIRReader.a		    libLLVMOrcJIT.a				libLLVMVectorize.a
libclangDriver.a			  libLLVMAMDGPUCodeGen.a	     libLLVMDebuginfod.a	    libLLVMJITLink.a		    libLLVMOrcShared.a				libLLVMWebAssemblyAsmParser.a
libclangDynamicASTMatchers.a		  libLLVMAMDGPUDesc.a		     libLLVMDebugInfoDWARF.a	    libLLVMLibDriver.a		    libLLVMOrcTargetProcess.a			libLLVMWebAssemblyCodeGen.a
libclangEdit.a				  libLLVMAMDGPUDisassembler.a	     libLLVMDebugInfoGSYM.a	    libLLVMLineEditor.a		    libLLVMPasses.a				libLLVMWebAssemblyDesc.a
libclangExtractAPI.a			  libLLVMAMDGPUInfo.a		     libLLVMDebugInfoLogicalView.a  libLLVMLinker.a		    libLLVMPowerPCAsmParser.a			libLLVMWebAssemblyDisassembler.a
libclangFormat.a			  libLLVMAMDGPUTargetMCA.a	     libLLVMDebugInfoMSF.a	    libLLVMLoongArchAsmParser.a     libLLVMPowerPCCodeGen.a			libLLVMWebAssemblyInfo.a
libclangFrontend.a			  libLLVMAMDGPUUtils.a		     libLLVMDebugInfoPDB.a	    libLLVMLoongArchCodeGen.a	    libLLVMPowerPCDesc.a			libLLVMWebAssemblyUtils.a
libclangFrontendTool.a			  libLLVMAnalysis.a		     libLLVMDemangle.a		    libLLVMLoongArchDesc.a	    libLLVMPowerPCDisassembler.a		libLLVMWindowsDriver.a
libclangHandleCXX.a			  libLLVMARMAsmParser.a		     libLLVMDiff.a		    libLLVMLoongArchDisassembler.a  libLLVMPowerPCInfo.a			libLLVMWindowsManifest.a
libclangHandleLLVM.a			  libLLVMARMCodeGen.a		     libLLVMDlltoolDriver.a	    libLLVMLoongArchInfo.a	    libLLVMProfileData.a			libLLVMX86AsmParser.a
libclangIndex.a				  libLLVMARMDesc.a		     libLLVMDWARFLinker.a	    libLLVMLTO.a		    libLLVMRemarks.a				libLLVMX86CodeGen.a
libclangIndexSerialization.a		  libLLVMARMDisassembler.a	     libLLVMDWARFLinkerClassic.a    libLLVMM68kAsmParser.a	    libLLVMRISCVAsmParser.a			libLLVMX86Desc.a
libclangInstallAPI.a			  libLLVMARMInfo.a		     libLLVMDWARFLinkerParallel.a   libLLVMM68kCodeGen.a	    libLLVMRISCVCodeGen.a			libLLVMX86Disassembler.a
libclangInterpreter.a			  libLLVMARMUtils.a		     libLLVMDWP.a		    libLLVMM68kDesc.a		    libLLVMRISCVDesc.a				libLLVMX86Info.a
libclangLex.a				  libLLVMAsmParser.a		     libLLVMExecutionEngine.a	    libLLVMM68kDisassembler.a	    libLLVMRISCVDisassembler.a			libLLVMX86TargetMCA.a
libclangParse.a				  libLLVMAsmPrinter.a		     libLLVMExegesis.a		    libLLVMM68kInfo.a		    libLLVMRISCVInfo.a				libLLVMXRay.a
libclangRewrite.a			  libLLVMAVRAsmParser.a		     libLLVMExegesisAArch64.a	    libLLVMMC.a			    libLLVMRISCVTargetMCA.a			libLLVMXtensaAsmParser.a
libclangRewriteFrontend.a		  libLLVMAVRCodeGen.a		     libLLVMExegesisMips.a	    libLLVMMCA.a		    libLLVMRuntimeDyld.a			libLLVMXtensaCodeGen.a
libclangSema.a				  libLLVMAVRDesc.a		     libLLVMExegesisPowerPC.a	    libLLVMMCDisassembler.a	    libLLVMSandboxIR.a				libLLVMXtensaDesc.a
libclangSerialization.a			  libLLVMAVRDisassembler.a	     libLLVMExegesisRISCV.a	    libLLVMMCJIT.a		    libLLVMScalarOpts.a				libLLVMXtensaDisassembler.a
libclang.so				  libLLVMAVRInfo.a		     libLLVMExegesisX86.a	    libLLVMMCParser.a		    libLLVMSelectionDAG.a			libLLVMXtensaInfo.a
libclang.so.20.1.7-rust-1.89.0-nightly	  libLLVMBinaryFormat.a		     libLLVMExtensions.a	    libLLVMMipsAsmParser.a	    libLLVM.so					libLTO.so
libclang.so.20.1-rust-1.89.0-nightly	  libLLVMBitReader.a		     libLLVMFileCheck.a		    libLLVMMipsCodeGen.a	    libLLVM.so.20.1-rust-1.89.0-nightly		libLTO.so.20.1-rust-1.89.0-nightly
libclangStaticAnalyzerCheckers.a	  libLLVMBitstreamReader.a	     libLLVMFrontendAtomic.a	    libLLVMMipsDesc.a		    libLLVMSparcAsmParser.a			libRemarks.so
libclangStaticAnalyzerCore.a		  libLLVMBitWriter.a		     libLLVMFrontendDriver.a	    libLLVMMipsDisassembler.a	    libLLVMSparcCodeGen.a			libRemarks.so.20.1-rust-1.89.0-nightly
libclangStaticAnalyzerFrontend.a	  libLLVMBPFAsmParser.a		     libLLVMFrontendHLSL.a	    libLLVMMipsInfo.a		    libLLVMSparcDesc.a				libscanbuild
libclangSupport.a			  libLLVMBPFCodeGen.a		     libLLVMFrontendOffloading.a    libLLVMMIRParser.a		    libLLVMSparcDisassembler.a			x86_64-unknown-linux-gnu
libclangTooling.a			  libLLVMBPFDesc.a		     libLLVMFrontendOpenACC.a	    libLLVMMSP430AsmParser.a	    libLLVMSparcInfo.a
libclangToolingASTDiff.a		  libLLVMBPFDisassembler.a	     libLLVMFrontendOpenMP.a	    libLLVMMSP430CodeGen.a	    libLLVMSupport.a

For comparison, if I build the same LLVM commit with the command below by hand, it succeeds and I get

ls lib
Analysis				     libclangFrontendTool.so.20.1	      libLLVMAMDGPUAsmParser.so		   libLLVMDWARFLinkerClassic.so        libLLVMMCA.so			libLLVMTarget.so
AsmParser				     libclangHandleCXX.so		      libLLVMAMDGPUAsmParser.so.20.1	   libLLVMDWARFLinkerClassic.so.20.1   libLLVMMCA.so.20.1		libLLVMTarget.so.20.1
BinaryFormat				     libclangHandleCXX.so.20.1		      libLLVMAMDGPUCodeGen.so		   libLLVMDWARFLinkerParallel.so       libLLVMMCDisassembler.so		libLLVMTelemetry.so
Bitcode					     libclangHandleLLVM.so		      libLLVMAMDGPUCodeGen.so.20.1	   libLLVMDWARFLinkerParallel.so.20.1  libLLVMMCDisassembler.so.20.1	libLLVMTelemetry.so.20.1
Bitstream				     libclangHandleLLVM.so.20.1		      libLLVMAMDGPUDesc.so		   libLLVMDWARFLinker.so	       libLLVMMCJIT.so			libLLVMTextAPIBinaryReader.so
BugpointPasses.so			     libclangIndexSerialization.so	      libLLVMAMDGPUDesc.so.20.1		   libLLVMDWARFLinker.so.20.1	       libLLVMMCJIT.so.20.1		libLLVMTextAPIBinaryReader.so.20.1
CGData					     libclangIndexSerialization.so.20.1       libLLVMAMDGPUDisassembler.so	   libLLVMDWP.so		       libLLVMMCParser.so		libLLVMTextAPI.so
CheckerDependencyHandlingAnalyzerPlugin.so   libclangIndex.so			      libLLVMAMDGPUDisassembler.so.20.1    libLLVMDWP.so.20.1		       libLLVMMCParser.so.20.1		libLLVMTextAPI.so.20.1
CheckerOptionHandlingAnalyzerPlugin.so	     libclangIndex.so.20.1		      libLLVMAMDGPUInfo.so		   libLLVMExecutionEngine.so	       libLLVMMC.so			libLLVMTransformUtils.so
clang					     libclangInstallAPI.so		      libLLVMAMDGPUInfo.so.20.1		   libLLVMExecutionEngine.so.20.1      libLLVMMC.so.20.1		libLLVMTransformUtils.so.20.1
cmake					     libclangInstallAPI.so.20.1		      libLLVMAMDGPUTargetMCA.so		   libLLVMExegesis.so		       libLLVMMIRParser.so		libLLVMVectorize.so
CMakeFiles				     libclangInterpreter.so		      libLLVMAMDGPUTargetMCA.so.20.1	   libLLVMExegesis.so.20.1	       libLLVMMIRParser.so.20.1		libLLVMVectorize.so.20.1
cmake_install.cmake			     libclangInterpreter.so.20.1	      libLLVMAMDGPUUtils.so		   libLLVMExegesis_static.a	       libLLVMNVPTXCodeGen.so		libLLVMWindowsDriver.so
CodeGen					     libclangLex.so			      libLLVMAMDGPUUtils.so.20.1	   libLLVMExegesisX86.so	       libLLVMNVPTXCodeGen.so.20.1	libLLVMWindowsDriver.so.20.1
CodeGenTypes				     libclangLex.so.20.1		      libLLVMAnalysis.so		   libLLVMExegesisX86.so.20.1	       libLLVMNVPTXDesc.so		libLLVMWindowsManifest.so
DebugInfo				     libclangParse.so			      libLLVMAnalysis.so.20.1		   libLLVMExegesisX86_static.a	       libLLVMNVPTXDesc.so.20.1		libLLVMWindowsManifest.so.20.1
Debuginfod				     libclangParse.so.20.1		      libLLVMAsmParser.so		   libLLVMExtensions.so		       libLLVMNVPTXInfo.so		libLLVMX86AsmParser.so
Demangle				     libclangRewriteFrontend.so		      libLLVMAsmParser.so.20.1		   libLLVMExtensions.so.20.1	       libLLVMNVPTXInfo.so.20.1		libLLVMX86AsmParser.so.20.1
DWARFLinker				     libclangRewriteFrontend.so.20.1	      libLLVMAsmPrinter.so		   libLLVMFileCheck.so		       libLLVMObjCARCOpts.so		libLLVMX86CodeGen.so
DWP					     libclangRewrite.so			      libLLVMAsmPrinter.so.20.1		   libLLVMFileCheck.so.20.1	       libLLVMObjCARCOpts.so.20.1	libLLVMX86CodeGen.so.20.1
ExecutionEngine				     libclangRewrite.so.20.1		      libLLVMBinaryFormat.so		   libLLVMFrontendAtomic.so	       libLLVMObjCopy.so		libLLVMX86Desc.so
Extensions				     libclangSema.so			      libLLVMBinaryFormat.so.20.1	   libLLVMFrontendAtomic.so.20.1       libLLVMObjCopy.so.20.1		libLLVMX86Desc.so.20.1
FileCheck				     libclangSema.so.20.1		      libLLVMBitReader.so		   libLLVMFrontendDriver.so	       libLLVMObject.so			libLLVMX86Disassembler.so
Frontend				     libclangSerialization.so		      libLLVMBitReader.so.20.1		   libLLVMFrontendDriver.so.20.1       libLLVMObject.so.20.1		libLLVMX86Disassembler.so.20.1
FuzzMutate				     libclangSerialization.so.20.1	      libLLVMBitstreamReader.so		   libLLVMFrontendHLSL.so	       libLLVMObjectYAML.so		libLLVMX86Info.so
InterfaceStub				     libclang.so			      libLLVMBitstreamReader.so.20.1	   libLLVMFrontendHLSL.so.20.1	       libLLVMObjectYAML.so.20.1	libLLVMX86Info.so.20.1
IR					     libclang.so.20.1			      libLLVMBitWriter.so		   libLLVMFrontendOffloading.so        libLLVMOffload.so		libLLVMX86TargetMCA.so
IRPrinter				     libclang.so.20.1.5			      libLLVMBitWriter.so.20.1		   libLLVMFrontendOffloading.so.20.1   libLLVMOffload.so.20.1		libLLVMX86TargetMCA.so.20.1
IRReader				     libclangStaticAnalyzerCheckers.so	      libLLVMCFGuard.so			   libLLVMFrontendOpenACC.so	       libLLVMOptDriver.so		libLLVMXRay.so
libclangAnalysisFlowSensitiveModels.so	     libclangStaticAnalyzerCheckers.so.20.1   libLLVMCFGuard.so.20.1		   libLLVMFrontendOpenACC.so.20.1      libLLVMOptDriver.so.20.1		libLLVMXRay.so.20.1
libclangAnalysisFlowSensitiveModels.so.20.1  libclangStaticAnalyzerCore.so	      libLLVMCFIVerify.so		   libLLVMFrontendOpenMP.so	       libLLVMOptDriver_static.a	libLTO.so
libclangAnalysisFlowSensitive.so	     libclangStaticAnalyzerCore.so.20.1       libLLVMCFIVerify.so.20.1		   libLLVMFrontendOpenMP.so.20.1       libLLVMOption.so			libLTO.so.20.1
libclangAnalysisFlowSensitive.so.20.1	     libclangStaticAnalyzerFrontend.so	      libLLVMCFIVerify_static.a		   libLLVMFuzzerCLI.so		       libLLVMOption.so.20.1		libomptarget.devicertl.a
libclangAnalysis.so			     libclangStaticAnalyzerFrontend.so.20.1   libLLVMCGData.so			   libLLVMFuzzerCLI.so.20.1	       libLLVMOrcDebugging.so		libomptarget.rtl.amdgpu.a
libclangAnalysis.so.20.1		     libclangSupport.so			      libLLVMCGData.so.20.1		   libLLVMFuzzMutate.so		       libLLVMOrcDebugging.so.20.1	libomptarget.so
libclangAPINotes.so			     libclangSupport.so.20.1		      libLLVMCodeGen.so			   libLLVMFuzzMutate.so.20.1	       libLLVMOrcJIT.so			libomptarget.so.20.1
libclangAPINotes.so.20.1		     libclangToolingASTDiff.so		      libLLVMCodeGen.so.20.1		   libLLVMGlobalISel.so		       libLLVMOrcJIT.so.20.1		libRemarks.so
libclangARCMigrate.so			     libclangToolingASTDiff.so.20.1	      libLLVMCodeGenTypes.so		   libLLVMGlobalISel.so.20.1	       libLLVMOrcShared.so		libRemarks.so.20.1
libclangARCMigrate.so.20.1		     libclangToolingCore.so		      libLLVMCodeGenTypes.so.20.1	   libllvm_gtest_main.so	       libLLVMOrcShared.so.20.1		libRTScudoCUnitTest.x86_64.a
libclangASTMatchers.so			     libclangToolingCore.so.20.1	      libLLVMCore.so			   libllvm_gtest_main.so.20.1	       libLLVMOrcTargetProcess.so	libRTScudoCxxUnitTest.x86_64.a
libclangASTMatchers.so.20.1		     libclangToolingInclusions.so	      libLLVMCore.so.20.1		   libllvm_gtest.so		       libLLVMOrcTargetProcess.so.20.1	libRTScudoUnitTest.x86_64.a
libclangAST.so				     libclangToolingInclusions.so.20.1	      libLLVMCoroutines.so		   libllvm_gtest.so.20.1	       libLLVMPasses.so			libscanbuild
libclangAST.so.20.1			     libclangToolingInclusionsStdlib.so       libLLVMCoroutines.so.20.1		   libLLVMHipStdPar.so		       libLLVMPasses.so.20.1		LineEditor
libclangBasic.so			     libclangToolingInclusionsStdlib.so.20.1  libLLVMCoverage.so		   libLLVMHipStdPar.so.20.1	       libLLVMProfileData.so		Linker
libclangBasic.so.20.1			     libclangToolingRefactoring.so	      libLLVMCoverage.so.20.1		   libLLVMInstCombine.so	       libLLVMProfileData.so.20.1	LTO
libclangCodeGen.so			     libclangToolingRefactoring.so.20.1       libLLVMDebugInfoBTF.so		   libLLVMInstCombine.so.20.1	       libLLVMRemarks.so		MC
libclangCodeGen.so.20.1			     libclangTooling.so			      libLLVMDebugInfoBTF.so.20.1	   libLLVMInstrumentation.so	       libLLVMRemarks.so.20.1		MCA
libclang-cpp.so				     libclangTooling.so.20.1		      libLLVMDebugInfoCodeView.so	   libLLVMInstrumentation.so.20.1      libLLVMRuntimeDyld.so		ObjCopy
libclang-cpp.so.20.1			     libclangToolingSyntax.so		      libLLVMDebugInfoCodeView.so.20.1	   libLLVMInterfaceStub.so	       libLLVMRuntimeDyld.so.20.1	Object
libclangCrossTU.so			     libclangToolingSyntax.so.20.1	      libLLVMDebuginfod.so		   libLLVMInterfaceStub.so.20.1        libLLVMSandboxIR.so		ObjectYAML
libclangCrossTU.so.20.1			     libclangTransformer.so		      libLLVMDebuginfod.so.20.1		   libLLVMInterpreter.so	       libLLVMSandboxIR.so.20.1		Option
libclangDependencyScanning.so		     libclangTransformer.so.20.1	      libLLVMDebugInfoDWARF.so		   libLLVMInterpreter.so.20.1	       libLLVMScalarOpts.so		Passes
libclangDependencyScanning.so.20.1	     libDynamicLibraryLib.a		      libLLVMDebugInfoDWARF.so.20.1	   libLLVMipo.so		       libLLVMScalarOpts.so.20.1	ProfileData
libclangDirectoryWatcher.so		     libear				      libLLVMDebugInfoGSYM.so		   libLLVMipo.so.20.1		       libLLVMSelectionDAG.so		Remarks
libclangDirectoryWatcher.so.20.1	     liblldCOFF.so			      libLLVMDebugInfoGSYM.so.20.1	   libLLVMIRPrinter.so		       libLLVMSelectionDAG.so.20.1	SampleAnalyzerPlugin.so
libclangDriver.so			     liblldCOFF.so.20.1			      libLLVMDebugInfoLogicalView.so	   libLLVMIRPrinter.so.20.1	       libLLVMSupport.so		SandboxIR
libclangDriver.so.20.1			     liblldCommon.so			      libLLVMDebugInfoLogicalView.so.20.1  libLLVMIRReader.so		       libLLVMSupport.so.20.1		Support
libclangDynamicASTMatchers.so		     liblldCommon.so.20.1		      libLLVMDebugInfoMSF.so		   libLLVMIRReader.so.20.1	       libLLVMSymbolize.so		TableGen
libclangDynamicASTMatchers.so.20.1	     liblldELF.so			      libLLVMDebugInfoMSF.so.20.1	   libLLVMJITLink.so		       libLLVMSymbolize.so.20.1		Target
libclangEdit.so				     liblldELF.so.20.1			      libLLVMDebugInfoPDB.so		   libLLVMJITLink.so.20.1	       libLLVMTableGenBasic.so		TargetParser
libclangEdit.so.20.1			     liblldMachO.so			      libLLVMDebugInfoPDB.so.20.1	   libLLVMLibDriver.so		       libLLVMTableGenBasic.so.20.1	Telemetry
libclangExtractAPI.so			     liblldMachO.so.20.1		      libLLVMDemangle.so		   libLLVMLibDriver.so.20.1	       libLLVMTableGenCommon.so		Testing
libclangExtractAPI.so.20.1		     liblldMinGW.so			      libLLVMDemangle.so.20.1		   libLLVMLineEditor.so		       libLLVMTableGenCommon.so.20.1	TextAPI
libclangFormat.so			     liblldMinGW.so.20.1		      libLLVMDiff.so			   libLLVMLineEditor.so.20.1	       libLLVMTableGenCommon_static.a	ToolDrivers
libclangFormat.so.20.1			     liblldWasm.so			      libLLVMDiff.so.20.1		   libLLVMLinker.so		       libLLVMTableGen.so		Transforms
libclangFrontend.so			     liblldWasm.so.20.1			      libLLVMDiff_static.a		   libLLVMLinker.so.20.1	       libLLVMTableGen.so.20.1		WindowsDriver
libclangFrontend.so.20.1		     libLLVMAggressiveInstCombine.so	      libLLVMDlltoolDriver.so		   libLLVMLTO.so		       libLLVMTargetParser.so		WindowsManifest
libclangFrontendTool.so			     libLLVMAggressiveInstCombine.so.20.1     libLLVMDlltoolDriver.so.20.1	   libLLVMLTO.so.20.1		       libLLVMTargetParser.so.20.1	XRay

Bootstrap configuration (bootstrap.toml)

configure-args = ['--enable-llvm-link-shared', '--enable-llvm-plugins', '--enable-llvm-enzyme', '--release-channel=nightly', '--enable-llvm-assertions', '--enable-clang', '--enable-lld', '--enable-option-checking', '--enable-ninja', '--disable-docs']

Operating system

HEAD

rustc at c68340350c78eea402c4a85f8d9c1b7d3d607635

For LLVM, I have the current submodule checkout, so

commit ed6566573eb21b00a3f87815e14ff766fd56ef42 (grafted, HEAD)
Author: dianqk <[email protected]>
Date:   Fri Jun 13 14:39:00 2025 +0800

    Merge tag 'llvmorg-20.1.7' into rustc/20.1-2025-02-13

    LLVM Release 20.1.7

Additional context

I need an LLD as part of my gpu offload project, so I just noticed.
As mentioned above, building LLVM from source works:

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_C_COMPILER=clang \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DLLVM_TARGETS_TO_BUILD="host;AMDGPU;NVPTX" \
      -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" \
      -DLLVM_ENABLE_RUNTIMES="openmp;offload" \
      -DLLVM_ENABLE_PLUGINS=ON \
      -DBUILD_SHARED_LIBS=ON \
      -DLLVM_INSTALL_UTILS=ON \
      -DLLVM_INCLUDE_BENCHMARKS=OFF \
      -DLLVM_INCLUDE_EXAMPLES=OFF \
      -DLLVM_ENABLE_ASSERTIONS=ON \
      -DLLVM_APPEND_VC_REV=OFF \
      -DLLVM_ENABLE_BINDINGS=OFF \
      -DLLVM_ENABLE_OCAMLDOC=OFF \
      -DLLVM_INCLUDE_DOCS=OFF \
      -DLLVM_ENABLE_LLD=ON \
      -DRUNTIMES_CMAKE_ARGS="-DLIBOMPTARGET_PLUGINS_TO_BUILD=amdgpu;nvptx;-DLIBOMPTARGET_DLOPEN_PLUGINS='';-DLIBOMPTARGET_ENABLE_DEBUG=ON"

-B, -S, and --install-prefix skipped due to containing my local paths.

Build Log

rust/src/llvm-project/lld/Common/DWARF.cpp:97:70: error: too many arguments to function call, expected 4, have 5
   95 |     if (lt->getFileLineInfoForAddress(
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   96 |             {offset, sectionIndex}, false, nullptr,
   97 |             DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath, info))
      |                                                                      ^~~~
/opt/rocm-6.4.0/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h:269:10: note: 'getFileLineInfoForAddress' declared here
  269 |     bool getFileLineInfoForAddress(object::SectionedAddress Address,
      |          ^                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  270 |                                    const char *CompDir,
      |                                    ~~~~~~~~~~~~~~~~~~~~
  271 |                                    DILineInfoSpecifier::FileLineInfoKind Kind,
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  272 |                                    DILineInfo &Result) const;
      |                                    ~~~~~~~~~~~~~~~~~~
1 error generated.

I can provide the full error if wanted, but as said I should probably rather report that on the llvm side. This is about why I get a static build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions