I am trying to build TVM on a Mac running 10.15.6 following this: https://tvm.apache.org/docs/install/from_source.html
When building I run into the following error
Consolidate compiler generated dependencies of target tvm_objs
[100%] Built target tvm_objs
[100%] Linking CXX shared library libtvm.dylib
Undefined symbols for architecture x86_64:
"llvm::parseIRFile(llvm::StringRef, llvm::SMDiagnostic&, llvm::LLVMContext&, llvm::function_ref<llvm::Optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef)>)", referenced from:
tvm::codegen::BuildAMDGPU(tvm::IRModule, tvm::Target) in codegen_amdgpu.cc.o
tvm::codegen::CodeGenLLVM::HandleImport(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in codegen_llvm.cc.o
tvm::codegen::BuildNVPTX(tvm::IRModule, tvm::Target) in codegen_nvptx.cc.o
std::_Function_handler<void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*), tvm::runtime::TypedPackedFunc<tvm::runtime::Module (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>::AssignTypedLambda<tvm::codegen::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#10}>(tvm::codegen::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#10}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}>::_M_invoke(std::_Any_data const&, tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&) in llvm_module.cc.o
"llvm::EngineBuilder::EngineBuilder(std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >)", referenced from:
tvm::codegen::LLVMModuleNode::LazyInitJIT() in llvm_module.cc.o
"llvm::TargetRegistry::lookupTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)", referenced from:
tvm::codegen::GetLLVMTargetMachine(tvm::Target const&, bool) in llvm_common.cc.o
"llvm::raw_fd_ostream::raw_fd_ostream(llvm::StringRef, std::error_code&, llvm::sys::fs::OpenFlags)", referenced from:
tvm::codegen::LLVMModuleNode::SaveToFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in llvm_module.cc.o
"llvm::WriteBitcodeToFile(llvm::Module const&, llvm::raw_ostream&, bool, llvm::ModuleSummaryIndex const*, bool, std::array<unsigned int, 5ul>*)", referenced from:
tvm::codegen::BuildHexagon(tvm::IRModule, tvm::Target)::{lambda(llvm::Module const&, tvm::codegen::BuildHexagon(tvm::IRModule, tvm::Target)::CodeGenFileType)#2}::operator()(llvm::Module const&, tvm::codegen::BuildHexagon(tvm::IRModule, tvm::Target)::CodeGenFileType) const [clone .isra.984] in codegen_hexagon.cc.o
tvm::codegen::LLVMModuleNode::SaveToFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in llvm_module.cc.o
"llvm::sys::getDefaultTargetTriple[abi:cxx11]()", referenced from:
tvm::codegen::ParseLLVMTargetOptions(tvm::Target const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, llvm::TargetOptions*) in llvm_common.cc.o
tvm::codegen::GetLLVMTargetMachine(tvm::Target const&, bool) in llvm_common.cc.o
"llvm::Linker::linkModules(llvm::Module&, std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >, unsigned int, std::function<void (llvm::Module&, llvm::StringSet<llvm::MallocAllocator> const&)>)", referenced from:
tvm::codegen::CodeGenLLVM::Finish() in codegen_llvm.cc.o
"llvm::parseIR(llvm::MemoryBufferRef, llvm::SMDiagnostic&, llvm::LLVMContext&, llvm::function_ref<llvm::Optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > (llvm::StringRef)>)", referenced from:
tvm::codegen::CodeGenLLVM::HandleImport(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in codegen_llvm.cc.o
"llvm::Intrinsic::getName[abi:cxx11](unsigned int, llvm::ArrayRef<llvm::Type*>)", referenced from:
tvm::codegen::CodeGenLLVM::CreateIntrinsic(tvm::tir::CallNode const*) in codegen_llvm.cc.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [libtvm.dylib] Error 1
make[1]: *** [CMakeFiles/tvm.dir/all] Error 2
make: *** [all] Error 2
I pay attention to this problem, and I added the flag correctly by adding the following lines to the config.cmake, But the above error still occurs.
add_compile_options("-lc++abi")
link_libraries("-lc++abi")