Embedding Cling, getting undefined LLVM symbols

hello, I am embedding Cling in a game server admin platform through a C++ shared library extension/plugin interface.

I thought I’d save some hassle through embedding cling by its static .a libraries and this worked but I’m getting undefined LLVM symbols even though I double checked that all the LLVM*.a libraries are indeed being linked.

The admin platform is reporting this.

[SM] Extension smcling.ext.2.tf2.so failed to load: /home/kevin/tf2server/tf2/tf/addons/sourcemod/extensions/smcling.ext.2.tf2.so: undefined symbol: _ZNK4llvm9MCAsmInfo28isSectionAtomizableBySymbolsERKNS_9MCSectionE

Is there a way I can fix this issue?

EDIT: here’s the build script I’m using that links the files.

binary.compiler.postlink += [
		os.path.join(builder.currentSourcePath, 'lib', 'libclingMetaProcessor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingInterpreter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangFrontend.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSema.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangBasic.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSerialization.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangEdit.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangLex.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangTooling.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAnalysis.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAST.a'),
	]
	#print('START PRINTING LLVM DEPS')
	#print(glob.glob(builder.currentSourcePath + 'lib/' + 'libLLVM*.a'))
	#print('END PRINTING LLVM DEPS')
	binary.compiler.postlink += glob.glob(builder.currentSourcePath + 'lib/' + 'libLLVM*.a')

FWIW, the symbol should live in libLLVMMC.a, so that should be picked up by that glob.glob.

One problem with static linking into a single shared library is lookup order. Therefore, it’s better to use llvm-config (–libdir and --libs) rather than cooking your own order.

thank you for replying! I’ve ever used llvm-config at all. I built up cling using the “all-in-one” build script and I have no prior experience to working with LLVM.

how can I use llvm-config?

EDIT: oh I see now. Thank you ‘wlav’, I’ll return with results!

ok I used the llvm-config to see what I need and I linked all of them.

i built the binary of the C++ plugin and attempted to load it, now it gave me another undefined symbol.

[SM] Extension smcling.ext.2.tf2.so failed to load: /home/kevin/tf2server/tf2/tf/addons/sourcemod/extensions/smcling.ext.2.tf2.so: undefined symbol: _ZNK4llvm16RegisterBankInfo15getInstrMappingERKNS_12MachineInstrE

EDIT: I am using the static LLVM libraries that are used in building libcling.so

EDIT EDIT: Here’s the build script currently.

	binary.compiler.postlink += [
		# path is sourcecode_path + 'lib' folder + .a file.
		os.path.join(builder.currentSourcePath, 'lib', 'libclingMetaProcessor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingInterpreter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangFrontend.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSema.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangBasic.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSerialization.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangEdit.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangLex.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangTooling.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAnalysis.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAST.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLTO.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMObjCARCOpts.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSymbolize.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoPDB.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoDWARF.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonInfo.a'),
		#os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCppBackendCodeGen.a'),
		#os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCppBackendInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Disassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64AsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Utils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMIRParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLibDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMOption.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTableGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLineEditor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Disassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86AsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSelectionDAG.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Utils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCJIT.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPasses.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMipo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMVectorize.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLinker.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMIRReader.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoCodeView.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInterpreter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMScalarOpts.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInstCombine.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInstrumentation.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMProfileData.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBitWriter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMOrcJIT.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTransformUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMExecutionEngine.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTarget.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAnalysis.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMRuntimeDyld.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMObject.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBitReader.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMC.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCore.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSupport.a')
	]

3rd Edit: Am I supposed to link LLVM files first, then Clang, then finally Cling? I’ll try doing that. Edit: Didn’t work either.

4th Edit: Ok, used the llvm-config and finally got it all sorted now. Now CLANG is throwing undefined symbols :confused:

[SM] Extension smcling.ext.2.tf2.so failed to load: /home/kevin/tf2server/tf2/tf/addons/sourcemod/extensions/smcling.ext.2.tf2.so: undefined symbol: _ZN5clang6Parser13ParseTypeNameEPNS_11SourceRangeENS_10Declarator10TheContextENS_15AccessSpecifierEPPNS_4DeclEPNS_16ParsedAttributesE

5th Edit:
Tried linking again after looking at Cling’s makefile targets and library ordering.

[SM] Extension smcling.ext.2.tf2.so failed to load: /home/kevin/tf2server/tf2/tf/addons/sourcemod/extensions/smcling.ext.2.tf2.so: undefined symbol: _ZN5clang12SemaConsumer6anchorEv

still getting error from clang but at least the errors from LLVM are over (I hope).

current build script

	binary.compiler.postlink += [
		# path is sourcecode_path + 'lib' folder + .a file.
		os.path.join(builder.currentSourcePath, 'lib', 'libclingInterpreter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingMetaProcessor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingUserInterface.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclingUtils.a'),
		
		os.path.join(builder.currentSourcePath, 'lib', 'libclangBasic.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangLex.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangParse.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAST.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangDynamicASTMatchers.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangASTMatchers.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSema.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangAnalysis.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangEdit.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangRewrite.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangARCMigrate.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangSerialization.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangRewriteFrontend.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangFrontend.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangFrontendTool.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangToolingCore.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangToolingRefactor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangTooling.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangIndex.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangStaticAnalyzerCore.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangStaticAnalyzerCheckers.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangStaticAnalyzerFrontend.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libclangFormat.a'),
		
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLTO.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPasses.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMObjCARCOpts.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSymbolize.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoPDB.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoDWARF.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMIRParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCoverage.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTableGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDlltoolDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMOrcJIT.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMXCoreAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSystemZAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSparcAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMPowerPCAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMNVPTXAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMSP430AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMipsAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLanaiInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMHexagonInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBPFAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMARMAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUDesc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUInfo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAMDGPUUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Disassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64AsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAArch64Utils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMObjectYAML.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLibDriver.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMOption.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Disassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86AsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86CodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMGlobalISel.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSelectionDAG.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoCodeView.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDebugInfoMSF.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Desc.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCDisassembler.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Info.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86AsmPrinter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMX86Utils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCJIT.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLineEditor.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInterpreter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMExecutionEngine.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMRuntimeDyld.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCodeGen.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTarget.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCoroutines.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMipo.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInstrumentation.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMVectorize.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMScalarOpts.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMLinker.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMIRReader.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAsmParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMInstCombine.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMTransformUtils.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBitWriter.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMAnalysis.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMProfileData.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMObject.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMCParser.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMMC.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBitReader.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMCore.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMBinaryFormat.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMSupport.a'),
		os.path.join(builder.currentSourcePath, 'lib', 'libLLVMDemangle.a'),
	]

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.