Open anutosh491 opened 1 week ago
Now I see this https://github.com/compiler-research/CppInterOp/blob/757e7e8fcbb988be53a4035d214e86cc11778e3c/lib/Interpreter/CMakeLists.txt#L37-L44
Which hopefully links these against clangcppInterop
(I see quite some common like above we have clanglex
, clangbasic
, clangast
which are a part of link_libs
too) so I guess we shouldn't be expecting missing symbols out of these ?
Or am I missing something ?
The llvm recipe on emscripten-forge is pretty clean now and provides all of the libraries that might be essential (under PREFIX/lib
)
(base) anutosh491@Anutoshs-MacBook-Air lib % ls
clang libLLVMDlltoolDriver.a libLLVMObjCopy.a libLLVMWebAssemblyUtils.a libclangInstallAPI.a
cmake libLLVMExecutionEngine.a libLLVMObject.a libLLVMWindowsDriver.a libclangInterpreter.a
libLLVMAggressiveInstCombine.a libLLVMExegesis.a libLLVMObjectYAML.a libLLVMWindowsManifest.a libclangLex.a
libLLVMAnalysis.a libLLVMExtensions.a libLLVMOptDriver.a libLLVMXRay.a libclangParse.a
libLLVMAsmParser.a libLLVMFileCheck.a libLLVMOption.a libLLVMipo.a libclangRewrite.a
libLLVMAsmPrinter.a libLLVMFrontendDriver.a libLLVMOrcDebugging.a libLTO.a libclangRewriteFrontend.a
libLLVMBinaryFormat.a libLLVMFrontendHLSL.a libLLVMOrcJIT.a libRemarks.a libclangSema.a
libLLVMBitReader.a libLLVMFrontendOffloading.a libLLVMOrcShared.a libclang-cpp.a libclangSerialization.a
libLLVMBitWriter.a libLLVMFrontendOpenACC.a libLLVMOrcTargetProcess.a libclang.a libclangStaticAnalyzerCheckers.a
libLLVMBitstreamReader.a libLLVMFrontendOpenMP.a libLLVMPasses.a libclangAPINotes.a libclangStaticAnalyzerCore.a
libLLVMCFGuard.a libLLVMFuzzMutate.a libLLVMProfileData.a libclangARCMigrate.a libclangStaticAnalyzerFrontend.a
libLLVMCFIVerify.a libLLVMFuzzerCLI.a libLLVMRemarks.a libclangAST.a libclangSupport.a
libLLVMCodeGen.a libLLVMGlobalISel.a libLLVMRuntimeDyld.a libclangASTMatchers.a libclangTooling.a
libLLVMCodeGenData.a libLLVMHipStdPar.a libLLVMSandboxIR.a libclangAnalysis.a libclangToolingASTDiff.a
libLLVMCodeGenTypes.a libLLVMIRPrinter.a libLLVMScalarOpts.a libclangAnalysisFlowSensitive.a libclangToolingCore.a
libLLVMCore.a libLLVMIRReader.a libLLVMSelectionDAG.a libclangAnalysisFlowSensitiveModels.a libclangToolingInclusions.a
libLLVMCoroutines.a libLLVMInstCombine.a libLLVMSupport.a libclangBasic.a libclangToolingInclusionsStdlib.a
libLLVMCoverage.a libLLVMInstrumentation.a libLLVMSymbolize.a libclangCodeGen.a libclangToolingRefactoring.a
libLLVMDWARFLinker.a libLLVMInterfaceStub.a libLLVMTableGen.a libclangCrossTU.a libclangToolingSyntax.a
libLLVMDWARFLinkerClassic.a libLLVMInterpreter.a libLLVMTableGenBasic.a libclangDependencyScanning.a libclangTransformer.a
libLLVMDWARFLinkerParallel.a libLLVMJITLink.a libLLVMTableGenCommon.a libclangDirectoryWatcher.a libear
libLLVMDWP.a libLLVMLTO.a libLLVMTarget.a libclangDriver.a liblldCOFF.a
libLLVMDebugInfoBTF.a libLLVMLibDriver.a libLLVMTargetParser.a libclangDynamicASTMatchers.a liblldCommon.a
libLLVMDebugInfoCodeView.a libLLVMLineEditor.a libLLVMTextAPI.a libclangEdit.a liblldELF.a
libLLVMDebugInfoDWARF.a libLLVMLinker.a libLLVMTextAPIBinaryReader.a libclangExtractAPI.a liblldMachO.a
libLLVMDebugInfoGSYM.a libLLVMMC.a libLLVMTransformUtils.a libclangFormat.a liblldMinGW.a
libLLVMDebugInfoLogicalView.a libLLVMMCA.a libLLVMVectorize.a libclangFrontend.a liblldWasm.a
libLLVMDebugInfoMSF.a libLLVMMCDisassembler.a libLLVMWebAssemblyAsmParser.a libclangFrontendTool.a libscanbuild
libLLVMDebugInfoPDB.a libLLVMMCJIT.a libLLVMWebAssemblyCodeGen.a libclangHandleCXX.a
libLLVMDebuginfod.a libLLVMMCParser.a libLLVMWebAssemblyDesc.a libclangHandleLLVM.a
libLLVMDemangle.a libLLVMMIRParser.a libLLVMWebAssemblyDisassembler.a libclangIndex.a
libLLVMDiff.a libLLVMObjCARCOpts.a libLLVMWebAssemblyInfo.a libclangIndexSerialization.a
So I don't think its a problem out of the llvm recipe on emscripten-forge.
The CI building xeus-cpp in cppinterop show even more undefined symbols. Can be seen here https://github.com/compiler-research/CppInterOp/actions/runs/11441766749/job/31835522416?pr=290#step:10:141
Few days back I had opened https://github.com/compiler-research/xeus-cpp/issues/159 to discuss the above topic.
I hope
xeus-cpp
is expected to be abstracted away from any libraries coming out of llvm/clang which means eventually we might only want to link withclangcppInterOp
but when I build xeus-cpp using emscripten we end up with lot of undefined symbolsAs I made a note on the other issue, these are coming out of these 8-9 libraries