<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/106859>106859</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            MLIRExecutionEngineShared doesn't build with mingw due to undefined symbols
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Zentrik
      </td>
    </tr>
</table>

<pre>
    Introduced in https://github.com/llvm/llvm-project/commit/631ae59d301496f86a8d46d28f7b12afbd12a3c1.

The error is
```
ninja: job failed: : && /opt/bin/x86_64-w64-mingw32-libgfortran5-cxx11/x86_64-w64-mingw32-clang++ --target=x86_64-w64-mingw32 --sysroot=/opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/ -remap -D__USING_SJLJ_EXCEPTIONS__ -D__CRT__NO_INLINE -pthread -DMLIR_CAPI_ENABLE_WINDOWS_DLL_DECLSPEC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -O3 -DNDEBUG  -Wl,--gc-sections -shared -o bin/libMLIRExecutionEngineShared.dll -Wl,--out-implib,lib/libMLIRExecutionEngineShared.dll.a -Wl,--major-image-version,0,--minor-image-version,0 tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj lib/libMLIR.dll.a  lib/libLLVM-19jl.dll.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && :
clang++: warning: argument unused during compilation: '-remap' [-Wunused-command-line-argument]
ld.lld: error: undefined symbol: mlir::openOutputFile(llvm::StringRef, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::SimpleObjectCache::dumpToObjectFile(llvm::StringRef))

ld.lld: error: undefined symbol: llvm::ilist_detail::SpecificNodeAccess<llvm::ilist_detail::node_options<mlir::Operation, false, false, void, false, void>>::getValuePtr(llvm::ilist_node_impl<llvm::ilist_detail::node_options<mlir::Operation, false, false, void, false, void>>*)
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::ExecutionEngine::create(mlir::Operation*, mlir::ExecutionEngineOptions const&, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>))
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::ExecutionEngine::create(mlir::Operation*, mlir::ExecutionEngineOptions const&, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>))
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(llvm::iterator_range<mlir::detail::op_iterator<mlir::LLVM::LLVMFuncOp, mlir::Region::OpIterator>> mlir::Region::getOps<mlir::LLVM::LLVMFuncOp>())
>>> referenced 1 more times

ld.lld: error: undefined symbol: mlir::LLVM::LLVMFuncOp::getSymName()
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::ExecutionEngine::create(mlir::Operation*, mlir::ExecutionEngineOptions const&, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>))

ld.lld: error: undefined symbol: mlir::Region::OpIterator::operator++()
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::ExecutionEngine::create(mlir::Operation*, mlir::ExecutionEngineOptions const&, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>))
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(llvm::iterator_range<mlir::detail::op_iterator<mlir::LLVM::LLVMFuncOp, mlir::Region::OpIterator>> mlir::Region::getOps<mlir::LLVM::LLVMFuncOp>())
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(llvm::iterator_range<mlir::detail::op_iterator<mlir::LLVM::LLVMFuncOp, mlir::Region::OpIterator>> mlir::Region::getOps<mlir::LLVM::LLVMFuncOp>())

ld.lld: error: undefined symbol: mlir::translateModuleToLLVMIR(mlir::Operation*, llvm::LLVMContext&, llvm::StringRef, bool)
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(mlir::ExecutionEngine::create(mlir::Operation*, mlir::ExecutionEngineOptions const&, std::unique_ptr<llvm::TargetMachine, std::default_delete<llvm::TargetMachine>>))

ld.lld: error: undefined symbol: mlir::Region::OpIterator::OpIterator(mlir::Region*, bool)
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(llvm::iterator_range<mlir::detail::op_iterator<mlir::LLVM::LLVMFuncOp, mlir::Region::OpIterator>> mlir::Region::getOps<mlir::LLVM::LLVMFuncOp>())
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(llvm::iterator_range<mlir::detail::op_iterator<mlir::LLVM::LLVMFuncOp, mlir::Region::OpIterator>> mlir::Region::getOps<mlir::LLVM::LLVMFuncOp>())

ld.lld: error: undefined symbol: mlir::detail::TypeIDResolver<mlir::LLVM::LLVMFuncOp, void>::id
>>> referenced by tools/mlir/lib/ExecutionEngine/CMakeFiles/MLIRExecutionEngineShared.dir/ExecutionEngine.cpp.obj:(.refptr._ZN4mlir6detail14TypeIDResolverINS_4LLVM10LLVMFuncOpEvE2idE)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
```

Applying https://github.com/Zentrik/llvm-project/commit/e781d06a8657d614ead8b42205274c2a35b6a3c0 fixes `mlir::openOutputFile` being undefined. Not sure if the fix is to just include some other libraries as well or something different. 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV9v2zgS_zTKC0FDomzZfvCD4z8LL1KniLPrw74IlDiSmFKklqTs-D79gZSS2G2T3haLu2BbIJHE4cxw5jd_KIvUGF5KgFkwug5Gyyva2krp2R8greafrjLFTrONtFqxNgeGuESVtY0J4nlA1gFZl9xWbTbIVR2QtRCHpxtutHqA3AZknau65u4hiSMKoymLw2g4TYpJQidsmDAyKcZZRGiRsYjQOI8GQbgMwnl3va8AgdZKI256ehL2f34ouXygQTxHDypDBeUCmBv5f5IEJEEBWavGGZBxGZD14yRJkyE-JkNcc1keY4IFz8pCaaupHOH88TGKvs6XCyrLgFwH5BphbKkuwQbx8ktOhLE5Ga2Um35e_0u-14jmZLCXJmuENdS0QXiZpr_tNttf0t2vN7-mq38tVh_vN7fbXZr6ucXdfZpub9PN9mazXSHc2EoDZQgvP9xs7tLF_OMmXW3n1zerdL_ZLm_3u3R5c5MuV4ub3cfVAuHiwA3PuOD2hLkUXILBFWcMJMJ7H4IgXjJqAVtewxmtlWVLNQOG6YFyQXsdEo4I76kQjvXRaorwXircytYAww3VtAYLGuH9UXML2FjNZWkQ3ufUWPxnS51kzY3hssQFB8Ewl9xyKvi_QRuEG2BUWp53ioWSpb8gvOd1I3jOLS6oELbSqi0rp1gdQAPD5shtXmEGBW2F7cSlgsccGovtqQFPkvjAtW2pwMwqZycDARbwV2ZMW5ZgLHb6NWdOvnMH50oeQBuuJMJF0crcciWxAX83CBeMWno23reSQXGGbs1NTW1eAcOWOnhuY4SX2-Xq-rdfEMJ7EZAFxmV-psNUVANDWKEu4wXPXA6sHiFvHctKllzCznMNmA9Qp0W1FnvosoAs_PWbsgP6LF3TB6Uxr2kJuPc5IIuwm-Pya3PIKiVMQNa14LpbLSDrzxYLyHrxgX6CNRfgeN-wxyv5bG6QN81AZQ_owqHe9hfizc3vH3A0fRBPM1h8Ai1BuGoWrQHtH0rG_f3IpWmUEggLU4HouJSApzttbSfYcoawyFXNROkplB1o45Q8tae4b3Vn3cV1ryPVksvSPVJdtjVIi7riQax1uYVyVTdcUOdq1-7GXa8IyBgFo2uXS77WXAemkmFX0_hJVzBadssKNhDC98w-5ebI5yCXwJA51ZkSjuYjFM-DeK4akLetbVrrIhKQie_7fmrnk_4OioAskLGso6Zp11P9IKOG52lXHUG8yCuqL5gdIbWacmuepuPVBQcVQuXUOlOf5x3LPCDTfovoKPEKaShAg3R7V3b6X2ab3yEnL6DtXF3BbeY2xQXNK-jIrK2be9WR30Jz-uLbXwnaiy4uuLEpA0u56LU3kPOC51vFYJ7nYBzebwlIxSBVjW8yQbx48e22Ad1lIVmgggoDFw8HxdmXhD5ETr4E-zsVLXy0-sL_zgS_rEPv_2De-86pz1fp6kcDtXDBdwbA3Dn4qobbDj2UK2msb09nZddK_mcLaWP1RSDu_VvQB5pX3tEzgX57Tbtt8w2hHuvpT6x_ZKzPats6DJVONZUlXNTyecGrJn3ivOBxO_nL07qV-W1zGYo7KLs90wds86zEw_B1thLsbWO-vY4Dd_JNfCNUKw3IvUib72jr37KhN3h3qre0ht6g9xXtH6Gyvi-kryVn_-rVjbq3xJ-B_dkyf5SW-RPfvw_f72tMVlNpBLXwQbFWwL1ya2zu3qzlFwQd80JJC49PpfvKz8ZMKfH-UuFHaGt__351Nj6HphfpcHmf8f6nlv5PfN9jaz139P7UwGZ5B0aJA_x3vj5_sfB4sncW6oGGorF6kP6xHbpFk87baHjp6Wa7S4fOryh88W51WBHOVs_4fvaN9BleweUn0Kj_0tmfA6EjtxWCR25RrhigCAVk0hpA-ICsQgYAcXlQed-lp189X-qu86YRJy7Lt46_-kOzN07AYDyJWJjQSTIasyQaAmWTbEhIOCLjYU5oPMoSGuchKvgjGBQk4atfXZMQZeAMek6sAdoqi0yrAfEC2QqcFsSNc_WhNRZxmYuWATKqBqRsBRoJnmmqORhEDTqCEEhpP28rp5vxwmeOHaArNovZNJ7SK5hFYzKKSDiOx1fVbDidhBkdQU6SYpqRMMzCEIbxaEjpeBgWxRWfkZAMw0kcRUlEovGAEVIMp0VGM5pH02gaDEOoKRcDB9tA6fKKG9PCLAqTyWh6JWgGwvgDSkIkHJGfDQgJRssrPfNYZ21pgmEouLHmRY3lVsDs1dxFTIGRARlblLVc9OniD-EQa8Hh9nnVmqtWi9lfPgL1Frs66l06zMh_AgAA___Kbo5O">