Polygeist
Polygeist copied to clipboard
Undefined reference to `cc1_main` during linking time
Hi,
First of all, super cool work. I watched your presentation at PACT and had to try this project out. But I am running into an issue during compilation.
Error:
ninja check-mlir-clang
[1/2] Linking CXX executable mlir-clang/mlir-clang
FAILED: mlir-clang/mlir-clang
: && /usr/bin/clang++-10 -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -g -Wl,-rpath-link, mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1as_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1gen_reproducer_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/AffineUtils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/pragmaHandler.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/ValueCategory.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/CGStmt.cc.o -o mlir-clang/mlir-clang -L/working_dir/llvm-project/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/working_dir/llvm-project/build/./lib" ../llvm-project/build/lib/libLLVMX86CodeGen.a ../llvm-project/build/lib/libLLVMX86AsmParser.a ../llvm-project/build/lib/libLLVMX86Desc.a ../llvm-project/build/lib/libLLVMX86Disassembler.a ../llvm-project/build/lib/libLLVMX86Info.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMSupport.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMVectorize.a -lpthread ../llvm-project/build/lib/libMLIRSCFTransforms.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRAffineTransforms.a ../llvm-project/build/lib/libMLIRAffineToStandard.a ../llvm-project/build/lib/libMLIRMathToLLVM.a ../llvm-project/build/lib/libMLIRTargetLLVMIRImport.a lib/polygeist/Passes/libMLIRPolygeistTransforms.a ../llvm-project/build/lib/libMLIRLLVMToLLVMIRTranslation.a ../llvm-project/build/lib/libMLIRSCFToOpenMP.a ../llvm-project/build/lib/libMLIROpenMPToLLVM.a ../llvm-project/build/lib/libMLIROpenMPToLLVMIRTranslation.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libclangDriver.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangFrontendTool.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libLLVMAsmPrinter.a ../llvm-project/build/lib/libLLVMDebugInfoDWARF.a ../llvm-project/build/lib/libLLVMDebugInfoMSF.a ../llvm-project/build/lib/libLLVMGlobalISel.a ../llvm-project/build/lib/libLLVMSelectionDAG.a ../llvm-project/build/lib/libLLVMCFGuard.a ../llvm-project/build/lib/libLLVMMCDisassembler.a ../llvm-project/build/lib/libMLIRVectorToLLVM.a ../llvm-project/build/lib/libMLIRArmNeon.a ../llvm-project/build/lib/libMLIRArmSVETransforms.a ../llvm-project/build/lib/libMLIRArmSVE.a ../llvm-project/build/lib/libMLIRAMXTransforms.a ../llvm-project/build/lib/libMLIRAMX.a ../llvm-project/build/lib/libMLIRX86VectorTransforms.a ../llvm-project/build/lib/libMLIRX86Vector.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRDLTI.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardOpsTransforms.a ../llvm-project/build/lib/libMLIRArithmeticTransforms.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRArithmeticToLLVM.a ../llvm-project/build/lib/libMLIRMemRefToLLVM.a ../llvm-project/build/lib/libMLIRLLVMCommonConversion.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRCopyOpInterface.a ../llvm-project/build/lib/libMLIRVector.a ../llvm-project/build/lib/libMLIRAffineUtils.a ../llvm-project/build/lib/libMLIRTransformUtils.a ../llvm-project/build/lib/libMLIRRewrite.a ../llvm-project/build/lib/libMLIRPDLToPDLInterp.a ../llvm-project/build/lib/libMLIRPDLInterp.a ../llvm-project/build/lib/libMLIRPDL.a ../llvm-project/build/lib/libMLIRLoopAnalysis.a ../llvm-project/build/lib/libMLIRPresburger.a ../llvm-project/build/lib/libMLIRLinalg.a
../llvm-project/build/lib/libMLIRAffine.a ../llvm-project/build/lib/libMLIRSCF.a ../llvm-project/build/lib/libMLIRMemRef.a ../llvm-project/build/lib/libMLIRMemRefUtils.a ../llvm-project/build/lib/libMLIRLoopLikeInterface.a ../llvm-project/build/lib/libMLIRTensor.a ../llvm-project/build/lib/libMLIRStandard.a ../llvm-project/build/lib/libMLIRArithmetic.a ../llvm-project/build/lib/libMLIRVectorInterfaces.a ../llvm-project/build/lib/libMLIRCastInterfaces.a ../llvm-project/build/lib/libMLIRMath.a ../llvm-project/build/lib/libMLIRDialect.a ../llvm-project/build/lib/libMLIRDialectUtils.a ../llvm-project/build/lib/libMLIRTilingInterface.a
../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRTargetLLVMIRExport.a ../llvm-project/build/lib/libMLIRTranslation.a ../llvm-project/build/lib/libMLIRParser.a ../llvm-project/build/lib/libMLIRLLVMIRTransforms.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRPass.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRCallInterfaces.a ../llvm-project/build/lib/libMLIRControlFlowInterfaces.a ../llvm-project/build/lib/libMLIRDataLayoutInterfaces.a ../llvm-project/build/lib/libMLIRInferTypeOpInterface.a ../llvm-project/build/lib/libMLIRSideEffectInterfaces.a ../llvm-project/build/lib/libMLIRViewLikeInterface.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libLLVMCoverage.a ../llvm-project/build/lib/libLLVMLTO.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMExtensions.a ../llvm-project/build/lib/libLLVMPasses.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMTarget.a ../llvm-project/build/lib/libLLVMCoroutines.a ../llvm-project/build/lib/libLLVMipo.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMVectorize.a ../llvm-project/build/lib/libLLVMBitWriter.a ../llvm-project/build/lib/libLLVMIRReader.a ../llvm-project/build/lib/libLLVMAsmParser.a ../llvm-project/build/lib/libLLVMLinker.a ../llvm-project/build/lib/libclangRewriteFrontend.a ../llvm-project/build/lib/libclangARCMigrate.a ../llvm-project/build/lib/libclangStaticAnalyzerFrontend.a ../llvm-project/build/lib/libclangStaticAnalyzerCheckers.a ../llvm-project/build/lib/libclangStaticAnalyzerCore.a ../llvm-project/build/lib/libclangCrossTU.a ../llvm-project/build/lib/libclangIndex.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangDriver.a
../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libclangParse.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libclangSema.a ../llvm-project/build/lib/libclangAnalysis.a ../llvm-project/build/lib/libclangASTMatchers.a ../llvm-project/build/lib/libclangEdit.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libLLVMFrontendOpenMP.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMProfileData.a ../llvm-project/build/lib/libLLVMObject.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMDebugInfoCodeView.a ../llvm-project/build/lib/libLLVMBitReader.a ../llvm-project/build/lib/libLLVMTextAPI.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMBinaryFormat.a ../llvm-project/build/lib/libLLVMRemarks.a ../llvm-project/build/lib/libLLVMBitstreamReader.a ../llvm-project/build/lib/libclangFormat.a ../llvm-project/build/lib/libclangToolingInclusions.a ../llvm-project/build/lib/libclangToolingCore.a ../llvm-project/build/lib/libclangRewrite.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libLLVMSupport.a -lrt -ldl -lpthread -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so ../llvm-project/build/lib/libLLVMDemangle.a && :
/usr/bin/ld: mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o: in function `ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)':
/working_dir/build/../mlir-clang/mlir-clang.cc:182: undefined reference to `cc1_main(llvm::ArrayRef<char const*>, char const*, void*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
When?
While following the Readme instructions for option 1, building llvm and polygeist code with two cmake commands.
System:
I have a build image clang-10, gcc-9, cmake, ninja installed. I used clang-10 to compile llvm without problems, but it fails with the error above during the final linking steps of ninja check-mlir-clang
Questions?
External cc1_main
seem to be included from the llvm-project. Maybe there is a library inclusion missing in the mlir-clang
's CMakeLists
file during polygeist compilation? Or maybe there is something missing in my system.
Have you seen this error before?
Interesting, do you mind pasting the output of your cmake (on a new build).
Also your operating system/etc.
For sure. Here are the outputs after removing and re-creating polygeist build folder and executing the readme commands:
cmake -G Ninja .. -DMLIR_DIR=$PWD/../llvm-project/build/lib/cmake/mlir -DCLANG_DIR=$PWD/../llvm-project/build/lib/cmake/clang -DLLVM_TARGETS_TO_BUILD="host" -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_BUILD_TYPE=DEBUG
-- The CXX compiler identification is Clang 10.0.0
-- The C compiler identification is Clang 10.0.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++-10 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang-10 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Searching for MLIRConfig.cmake in: /working_dir/build/../llvm-project/build/lib/cmake/mlir
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Searching for ClangConfig.cmake in: /working_dir/build/../llvm-project/build/lib/cmake/clang
-- Using MLIRConfig.cmake in: /working_dir/build/../llvm-project/build/lib/cmake/mlir
-- Using LLVMConfig.cmake in: /working_dir/llvm-project/build/lib/cmake/llvm
-- Using ClangConfig.cmake in: /working_dir/build/../llvm-project/build/lib/cmake/clang
-- Linker detection: GNU ld
-- Performing Test LLVM_LIBSTDCXX_MIN
-- Performing Test LLVM_LIBSTDCXX_MIN - Success
-- Performing Test LLVM_LIBSTDCXX_SOFT_ERROR
-- Performing Test LLVM_LIBSTDCXX_SOFT_ERROR - Success
-- Performing Test C_SUPPORTS_FPIC
-- Performing Test C_SUPPORTS_FPIC - Success
-- Performing Test CXX_SUPPORTS_FPIC
-- Performing Test CXX_SUPPORTS_FPIC - Success
-- Building with -fPIC
-- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG
-- Performing Test SUPPORTS_FVISIBILITY_INLINES_HIDDEN_FLAG - Success
-- Performing Test C_SUPPORTS_WERROR_DATE_TIME
-- Performing Test C_SUPPORTS_WERROR_DATE_TIME - Success
-- Performing Test CXX_SUPPORTS_WERROR_DATE_TIME
-- Performing Test CXX_SUPPORTS_WERROR_DATE_TIME - Success
-- Performing Test C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW
-- Performing Test C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW - Success
-- Performing Test CXX_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW
-- Performing Test CXX_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW - Success
-- Performing Test CXX_SUPPORTS_MISSING_FIELD_INITIALIZERS_FLAG
-- Performing Test CXX_SUPPORTS_MISSING_FIELD_INITIALIZERS_FLAG - Success
-- Performing Test C_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG
-- Performing Test C_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG - Success
-- Performing Test CXX_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG
-- Performing Test CXX_SUPPORTS_IMPLICIT_FALLTHROUGH_FLAG - Success
-- Performing Test C_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG
-- Performing Test C_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG - Success
-- Performing Test CXX_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG
-- Performing Test CXX_SUPPORTS_COVERED_SWITCH_DEFAULT_FLAG - Success
-- Performing Test CXX_SUPPORTS_CLASS_MEMACCESS_FLAG
-- Performing Test CXX_SUPPORTS_CLASS_MEMACCESS_FLAG - Failed
-- Performing Test CXX_SUPPORTS_NOEXCEPT_TYPE_FLAG
-- Performing Test CXX_SUPPORTS_NOEXCEPT_TYPE_FLAG - Success
-- Performing Test CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR
-- Performing Test CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR - Success
-- Performing Test CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG
-- Performing Test CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG - Failed
-- Performing Test C_WCOMMENT_ALLOWS_LINE_WRAP
-- Performing Test C_WCOMMENT_ALLOWS_LINE_WRAP - Success
-- Performing Test C_SUPPORTS_STRING_CONVERSION_FLAG
-- Performing Test C_SUPPORTS_STRING_CONVERSION_FLAG - Success
-- Performing Test CXX_SUPPORTS_STRING_CONVERSION_FLAG
-- Performing Test CXX_SUPPORTS_STRING_CONVERSION_FLAG - Success
-- Performing Test C_SUPPORTS_MISLEADING_INDENTATION_FLAG
-- Performing Test C_SUPPORTS_MISLEADING_INDENTATION_FLAG - Success
-- Performing Test CXX_SUPPORTS_MISLEADING_INDENTATION_FLAG
-- Performing Test CXX_SUPPORTS_MISLEADING_INDENTATION_FLAG - Success
-- Performing Test LINKER_SUPPORTS_COLOR_DIAGNOSTICS
-- Performing Test LINKER_SUPPORTS_COLOR_DIAGNOSTICS - Failed
-- Looking for os_signpost_interval_begin
-- Looking for os_signpost_interval_begin - not found
-- Configuring done
-- Generating done
-- Build files have been written to: /working_dir/build
# Completes ok!
ninja
[15/22] Building CXX object lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/CanonicalizeFor.cpp.o
../lib/polygeist/Passes/CanonicalizeFor.cpp:1054:22: warning: unused variable 'i1Ty' [-Wunused-variable]
auto i1Ty = rewriter.getIntegerType(1);
^
1 warning generated.
[18/22] Building CXX object lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/ParallelLower.cpp.o
../lib/polygeist/Passes/ParallelLower.cpp:361:14: warning: unused variable 'i1' [-Wunused-variable]
auto i1 = bz.getI1Type();
^
1 warning generated.
[21/22] Building CXX object lib/polygeist/Passes/CMakeFiles/obj.MLIRPolygeistTransforms.dir/LoopRestructure.cpp.o
../lib/polygeist/Passes/LoopRestructure.cpp:104:27: warning: cast from 'const Wrapper *' to 'mlir::Block *' drops const qualifier [-Wcast-qual]
Region *R = ((Block *)(this))->getParent();
^
../lib/polygeist/Passes/LoopRestructure.cpp:107:53: warning: cast from 'const Wrapper *' to 'mlir::Block *' drops const qualifier [-Wcast-qual]
mlir::Block &operator*() const { return *(Block *)(this); }
^
../lib/polygeist/Passes/LoopRestructure.cpp:108:53: warning: cast from 'const Wrapper *' to 'mlir::Block *' drops const qualifier [-Wcast-qual]
mlir::Block *operator->() const { return (Block *)(this); }
^
3 warnings generated.
[22/22] Linking CXX static library lib/polygeist/Passes/libMLIRPolygeistTransforms.a
# This one fails
ninja check-mlir-clang
[9/11] Building CXX object mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o
../mlir-clang/mlir-clang.cc:334:30: warning: ISO C++11 does not allow conversion from string literal to 'llvm::SmallVectorTemplateBase<char *, true>::ValueParamT' (aka 'char *') [-Wwritable-strings]
MLIRArgs.push_back("-D");
^
../mlir-clang/mlir-clang.cc:337:30: warning: ISO C++11 does not allow conversion from string literal to 'llvm::SmallVectorTemplateBase<char *, true>::ValueParamT' (aka 'char *') [-Wwritable-strings]
MLIRArgs.push_back("-I");
^
2 warnings generated.
[10/11] Linking CXX executable mlir-clang/mlir-clang
FAILED: mlir-clang/mlir-clang
: && /usr/bin/clang++-10 -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -g -Wl,-rpath-link, mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1as_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/__/llvm-project/clang/tools/driver/cc1gen_reproducer_main.cpp.o mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/utils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/AffineUtils.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/pragmaHandler.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/ValueCategory.cc.o mlir-clang/CMakeFiles/mlir-clang.dir/Lib/CGStmt.cc.o -o mlir-clang/mlir-clang -L/working_dir/llvm-project/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/working_dir/llvm-project/build/./lib" ../llvm-project/build/lib/libLLVMX86CodeGen.a ../llvm-project/build/lib/libLLVMX86AsmParser.a ../llvm-project/build/lib/libLLVMX86Desc.a ../llvm-project/build/lib/libLLVMX86Disassembler.a ../llvm-project/build/lib/libLLVMX86Info.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMSupport.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMVectorize.a -lpthread ../llvm-project/build/lib/libMLIRSCFTransforms.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRAffineTransforms.a ../llvm-project/build/lib/libMLIRAffineToStandard.a ../llvm-project/build/lib/libMLIRMathToLLVM.a ../llvm-project/build/lib/libMLIRTargetLLVMIRImport.a lib/polygeist/Passes/libMLIRPolygeistTransforms.a ../llvm-project/build/lib/libMLIRLLVMToLLVMIRTranslation.a ../llvm-project/build/lib/libMLIRSCFToOpenMP.a ../llvm-project/build/lib/libMLIROpenMPToLLVM.a ../llvm-project/build/lib/libMLIROpenMPToLLVMIRTranslation.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libclangDriver.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangFrontendTool.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libLLVMAsmPrinter.a ../llvm-project/build/lib/libLLVMDebugInfoDWARF.a ../llvm-project/build/lib/libLLVMDebugInfoMSF.a ../llvm-project/build/lib/libLLVMGlobalISel.a ../llvm-project/build/lib/libLLVMSelectionDAG.a ../llvm-project/build/lib/libLLVMCFGuard.a ../llvm-project/build/lib/libLLVMMCDisassembler.a ../llvm-project/build/lib/libMLIRVectorToLLVM.a ../llvm-project/build/lib/libMLIRArmNeon.a ../llvm-project/build/lib/libMLIRArmSVETransforms.a ../llvm-project/build/lib/libMLIRArmSVE.a ../llvm-project/build/lib/libMLIRAMXTransforms.a ../llvm-project/build/lib/libMLIRAMX.a ../llvm-project/build/lib/libMLIRX86VectorTransforms.a ../llvm-project/build/lib/libMLIRX86Vector.a lib/polygeist/libMLIRPolygeist.a ../llvm-project/build/lib/libMLIRNVVMIR.a ../llvm-project/build/lib/libMLIRGPUOps.a ../llvm-project/build/lib/libMLIRDLTI.a ../llvm-project/build/lib/libMLIRSCFToStandard.a ../llvm-project/build/lib/libMLIRStandardOpsTransforms.a ../llvm-project/build/lib/libMLIRArithmeticTransforms.a ../llvm-project/build/lib/libMLIRStandardToLLVM.a ../llvm-project/build/lib/libMLIRArithmeticToLLVM.a ../llvm-project/build/lib/libMLIRMemRefToLLVM.a ../llvm-project/build/lib/libMLIRLLVMCommonConversion.a ../llvm-project/build/lib/libMLIRTransforms.a ../llvm-project/build/lib/libMLIRCopyOpInterface.a ../llvm-project/build/lib/libMLIRVector.a ../llvm-project/build/lib/libMLIRAffineUtils.a ../llvm-project/build/lib/libMLIRTransformUtils.a ../llvm-project/build/lib/libMLIRRewrite.a ../llvm-project/build/lib/libMLIRPDLToPDLInterp.a ../llvm-project/build/lib/libMLIRPDLInterp.a ../llvm-project/build/lib/libMLIRPDL.a ../llvm-project/build/lib/libMLIRLoopAnalysis.a ../llvm-project/build/lib/libMLIRPresburger.a ../llvm-project/build/lib/libMLIRLinalg.a ../llvm-project/build/lib/libMLIRAffine.a ../llvm-project/build/lib/libMLIRSCF.a ../llvm-project/build/lib/libMLIRMemRef.a ../llvm-project/build/lib/libMLIRMemRefUtils.a ../llvm-project/build/lib/libMLIRLoopLikeInterface.a ../llvm-project/build/lib/libMLIRTensor.a ../llvm-project/build/lib/libMLIRStandard.a ../llvm-project/build/lib/libMLIRArithmetic.a ../llvm-project/build/lib/libMLIRVectorInterfaces.a ../llvm-project/build/lib/libMLIRCastInterfaces.a ../llvm-project/build/lib/libMLIRMath.a ../llvm-project/build/lib/libMLIRDialect.a ../llvm-project/build/lib/libMLIRDialectUtils.a ../llvm-project/build/lib/libMLIRTilingInterface.a ../llvm-project/build/lib/libMLIROpenMP.a ../llvm-project/build/lib/libMLIRTargetLLVMIRExport.a ../llvm-project/build/lib/libMLIRTranslation.a ../llvm-project/build/lib/libMLIRParser.a ../llvm-project/build/lib/libMLIRLLVMIRTransforms.a ../llvm-project/build/lib/libMLIRLLVMIR.a ../llvm-project/build/lib/libMLIRPass.a ../llvm-project/build/lib/libMLIRAnalysis.a ../llvm-project/build/lib/libMLIRCallInterfaces.a ../llvm-project/build/lib/libMLIRControlFlowInterfaces.a ../llvm-project/build/lib/libMLIRDataLayoutInterfaces.a ../llvm-project/build/lib/libMLIRInferTypeOpInterface.a ../llvm-project/build/lib/libMLIRSideEffectInterfaces.a ../llvm-project/build/lib/libMLIRViewLikeInterface.a ../llvm-project/build/lib/libMLIRIR.a ../llvm-project/build/lib/libMLIRSupport.a ../llvm-project/build/lib/libclangCodeGen.a ../llvm-project/build/lib/libLLVMCoverage.a ../llvm-project/build/lib/libLLVMLTO.a ../llvm-project/build/lib/libLLVMCodeGen.a ../llvm-project/build/lib/libLLVMExtensions.a ../llvm-project/build/lib/libLLVMPasses.a ../llvm-project/build/lib/libLLVMObjCARCOpts.a ../llvm-project/build/lib/libLLVMTarget.a ../llvm-project/build/lib/libLLVMCoroutines.a ../llvm-project/build/lib/libLLVMipo.a ../llvm-project/build/lib/libLLVMInstrumentation.a ../llvm-project/build/lib/libLLVMVectorize.a ../llvm-project/build/lib/libLLVMBitWriter.a ../llvm-project/build/lib/libLLVMIRReader.a ../llvm-project/build/lib/libLLVMAsmParser.a ../llvm-project/build/lib/libLLVMLinker.a ../llvm-project/build/lib/libclangRewriteFrontend.a ../llvm-project/build/lib/libclangARCMigrate.a ../llvm-project/build/lib/libclangStaticAnalyzerFrontend.a ../llvm-project/build/lib/libclangStaticAnalyzerCheckers.a ../llvm-project/build/lib/libclangStaticAnalyzerCore.a ../llvm-project/build/lib/libclangCrossTU.a ../llvm-project/build/lib/libclangIndex.a ../llvm-project/build/lib/libclangFrontend.a ../llvm-project/build/lib/libclangDriver.a ../llvm-project/build/lib/libLLVMOption.a ../llvm-project/build/lib/libclangParse.a ../llvm-project/build/lib/libclangSerialization.a ../llvm-project/build/lib/libclangSema.a ../llvm-project/build/lib/libclangAnalysis.a ../llvm-project/build/lib/libclangASTMatchers.a ../llvm-project/build/lib/libclangEdit.a ../llvm-project/build/lib/libclangAST.a ../llvm-project/build/lib/libLLVMFrontendOpenMP.a ../llvm-project/build/lib/libLLVMScalarOpts.a ../llvm-project/build/lib/libLLVMAggressiveInstCombine.a ../llvm-project/build/lib/libLLVMInstCombine.a ../llvm-project/build/lib/libLLVMTransformUtils.a ../llvm-project/build/lib/libLLVMAnalysis.a ../llvm-project/build/lib/libLLVMProfileData.a ../llvm-project/build/lib/libLLVMObject.a ../llvm-project/build/lib/libLLVMMCParser.a ../llvm-project/build/lib/libLLVMMC.a ../llvm-project/build/lib/libLLVMDebugInfoCodeView.a ../llvm-project/build/lib/libLLVMBitReader.a ../llvm-project/build/lib/libLLVMTextAPI.a ../llvm-project/build/lib/libLLVMCore.a ../llvm-project/build/lib/libLLVMBinaryFormat.a ../llvm-project/build/lib/libLLVMRemarks.a ../llvm-project/build/lib/libLLVMBitstreamReader.a ../llvm-project/build/lib/libclangFormat.a ../llvm-project/build/lib/libclangToolingInclusions.a ../llvm-project/build/lib/libclangToolingCore.a ../llvm-project/build/lib/libclangRewrite.a ../llvm-project/build/lib/libclangLex.a ../llvm-project/build/lib/libclangBasic.a ../llvm-project/build/lib/libLLVMSupport.a -lrt -ldl -lpthread -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so ../llvm-project/build/lib/libLLVMDemangle.a && :
/usr/bin/ld: mlir-clang/CMakeFiles/mlir-clang.dir/mlir-clang.cc.o: in function `ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&)':
/working_dir/build/../mlir-clang/mlir-clang.cc:182: undefined reference to `cc1_main(llvm::ArrayRef<char const*>, char const*, void*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
My system is based on a docker image based on tensorflow/tensorflow:latest. Dockerfile attached below.
# ==============================================================================
FROM tensorflow/tensorflow:latest-devel as builder
# Development Tools
RUN apt update && apt install -y curl wget tree less git vim tmux htop
# Compilers
RUN apt update && apt install -y clang-10 lld-10 && \
ln -s /usr/bin/clang-10 /usr/bin/clang && \
ln -s /usr/bin/clang++-10 /usr/bin/clang++
# Tensorflow latest-devel image comes with clang-format pre-installed
# RUN apt install clang-format-10 && \
# ln -s /usr/bin/clang-format-10 /usr/bin/clang-format
WORKDIR /tmp
RUN wget https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.sh && \
chmod +x cmake-3.18.2-Linux-x86_64.sh && \
./cmake-3.18.2-Linux-x86_64.sh --skip-license --prefix=/usr/local
RUN wget https://github.com/ninja-build/ninja/releases/download/v1.10.1/ninja-linux.zip && \
unzip ninja-linux.zip && \
mv ninja /usr/local/bin/ninja && \
ln -s /usr/local/bin/ninja /usr/sbin/ninja
# Requirements for VSCODE plugins
WORKDIR /usr/local/bin
RUN wget -q https://github.com/bazelbuild/buildtools/releases/download/3.2.1/buildifier -O buildifier
# Setup some convenient tools/functionalities
WORKDIR /root
RUN git clone https://github.com/agostini01/dotfiles.git && \
\
ln -sf dotfiles/.gitignore_global .gitignore_global && \
\
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim && \
\
ln -sf dotfiles/.vimrc .vimrc && \
ln -sf dotfiles/.ctags .ctags && \
ln -sf dotfiles/.inputrc .inputrc && \
\
git clone https://github.com/tmux-plugins/tpm /root/.tmux/plugins/tpm && \
ln -sf dotfiles/.tmux.conf .tmux.conf
RUN echo "PS1='\[\033[01;31m\][\[\033[01;30m\]\u@\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] '" >> .bashrc
RUN echo "export CXX=/usr/bin/clang++" >> ~/.bashrc && \
echo "export CC=/usr/bin/clang" >> ~/.bashrc
ENV CXX=/usr/bin/clang++
ENV CC=/usr/bin/clang
The image is based on ubuntu 20.04 and I am using ninja 1.10.1, cmake 3.2.1, clang-10, and GNU ld 2.34.
Please, let me know if you need any additional info.
Same error here.
Building Polygeist as an external project (Option 2) worked.
I bumped into the same issue when I tried to build Polygeist using DPC++ to have Polygeist support SYCL input. I managed to fix the issue by building clang in llvm-project/build folder and building mlir in llvm-project/build-mlir folder and using those paths for clang and mlir when building Polygeist.
When I removed the option -Wl,-rpath-link,
(i.e. with an empty path) from the linker command line and manually rerun the command, it linked correctly. But I didn't spent time to figure out where to fix this in cmake.
Setting LLVM_LIBRARY_OUTPUT_INTDIR in the CMakeLists.txt fixes this issue.