<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106899>106899</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Building ArmSMEStubs.cpp fails on mingw with `LLVM_BUILD_LLVM_DYLIB`
</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>
After https://github.com/llvm/llvm-project/pull/93519, when building ArmSMEStubs.cpp on mingw with `LLVM_BUILD_LLVM_DYLIB=ON`, `mlir_arm_sme_abi_stubs_EXPORTS` is no longer defined as expected from the cmake file, https://github.com/llvm/llvm-project/blob/bec1d86516f59997794f7707a50da858792a8d8d/mlir/lib/ExecutionEngine/CMakeLists.txt#L208-L211
This causes the following error,
```
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/ -DGTEST_HAS_RTTI=0 -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/workspace/build/tools/mlir/lib/ExecutionEngine -I/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine -I/workspace/build/include -I/workspace/srcdir/llvm-project/llvm/include -I/workspace/srcdir/llvm-project/mlir/include -I/workspace/build/tools/mlir/include -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 -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -MF tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj.d -o tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -c /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp
clang++: warning: argument unused during compilation: '-remap' [-Wunused-command-line-argument]
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:37:35: error: dllimport cannot be applied to non-inline function definition
37 | bool MLIR_ARMSMEABISTUBS_EXPORTED __aarch64_sme_accessible() {
| ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:47:40: error: dllimport cannot be applied to non-inline function definition
47 | sme_state MLIR_ARMSMEABISTUBS_EXPORTED __arm_sme_state() {
| ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:52:35: error: dllimport cannot be applied to non-inline function definition
52 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_restore() {
| ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:56:35: error: dllimport cannot be applied to non-inline function definition
56 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_save() {
| ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:60:35: error: dllimport cannot be applied to non-inline function definition
60 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_za_disable() {
| ^
5 errors generated.
```
Note how `-Dmlir_arm_sme_abi_stubs_EXPORTS` is not present in the compiler invocation when it is with https://github.com/llvm/llvm-project/pull/93519 reverted or without `LLVM_BUILD_LLVM_DYLIB=ON`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWFuT2jgW_jXiRSXKlrGBBx4AQ5YpLqmGLLP74pKtY6NElrySDJ359Vuy6UxmO9l0705PqihfpKPP53w6Fx2YtaJSADMUL1CcDljrLtrM_gnKGfFpkGv-eTYvHRh8ca6xKJojukZ0XQl3afNhoWtE11Jen26kMfojFA7RddNKieh6GsXhFNElvl1A4bwVkgtV4bmpj7vV0bW5HRZNg7XCtVDVDd-Eu2CUBNvt33fZ4sNmm2bdY_qP7WaBovSwR0ng8VAS1FKYjJk6szVkLBeZ9XjZ6tf3h4fTESUBFhYrjaVWFRjMoRQKOGYWw2MDhQOOS6Nr7C6Ai5p9AlwKCR781dbmUuf-BkXIJ0kcJmU8nU7H4-moHI-DMYsDzibxZDylbMInHNG1V97jCL9u9QhF64RWK1UJBYiulzv2CbbCOjt0jw7RaEuDCdnSMERBioJ5fz1dhMUFay3YzopSS6lvnmAwRhtEl3fpJLj_ulcl1EeGojn-qHNcMiGB-zdE17rprBEK0fXjJMmSEbklI9LtTUSJFHlVauMMUzEpHh_D8NtyhWSqQnSB6AIT4pipwKEofS6JCbGfrdHaT3_5_nO57w3az5Z0q-kak_TdaXU8ZX-bH7OH02mDojTAJM3Wm-0qO6zXx9UpW2xORxSlychPZMdTusyWh_3xNN-fst18-XA4_j6xPjzs5s-Ht5vd5vfRDaLrmzafbMMKv2-dhyO6dlpL-4Ntfr7amoL38n90r9ehPOkgVCFb_orP3H371evu6n133XdI-SJvoGZNx_CH42b_Ljv-sv0lW_26XL0_bQ77Y5Z1c8uHU5btD9lmv93sV5g07mKAcUzS3XbzkC3n7zfZaj9fbFfZebNPD-djlm63Wbpabo_vV0tMyquwIhdSuM9EKCkUWHIRnIPC5NwHTJRy5oA4UcNXY62qWmY4cMKuTEh2x1Bww-TMpPSij84wTM5Kk1a1FjhpmGE1-NxJzjcjHBDrjFCVxeRcMOvIv1rmV9bCWqEqUgqQnAglnGBS_AbGYtIAZ8qJogf2eay7YHIWdSNFIRwpmZTuYnRbXTywvoIBTuxNuOJCOJSsla5frjQ8FtA44j430A0pchXGtUwS7rTXk4MEB-QbM7atKrCOeHwj_Kade3NIodUVjBVaYVKWrSq8axIL3d1iUnLm2Ffv51ZxKL9itxa2Zq64ACeOeXoOESbpPl0tPrz7w6ahKH3arv-ylZiUSpPe1LsGrboJ5dFzCbafN84JTKzjKEqLPlOFY0x2KSa7E35J9D4l6bWQ4GV1_nH47Yo07IPmP2reUOcfMdmt_7KPDTkm-i80rcB_QnZ7Dt6XsK8qjC9dN2aUUJV_ZKZqa1AO93GIeevdFBe6boRkHrmvdeM-7SA6xiheeLfswrbQdc0UJ96nyBMWitN7IX0Ti6J5NPaX2Gt2D4s55lKKutHG4YIppR3OAbOmkQI4dhr7IO1dHz9FXX_EEZ2NnboY42iM0XiJc60l7vLk_GF33K3mi83x9GFxvJ-WVinOMsZMcUlG_Q4XBVgrcn8emiA6xWi8-IKJcYeJ4tXbsjLyrIyCN2Bl1LPiLbWOOfghNXfH74R_IiMxfSs_iWlnwVUL_hIyXCO4oZkB67T5qYwkb8ZI8r8wYtn1Z9KRBG9FRxK8io7fWMaFZS9LIHGvrMUVKDDMAR9-s3HZawf4om---yPpC_s_hxsD1lcEofperysFYLBQV110JaFvT4XzK7oW9P_qd7GBKxjfX2rTwenW_bCpHQ74LOLTaMoGMAvHNA4n04BOBpfZuAhZGBcjKPM4ngBjScEncZiPecTyiE4HYkYDOgqmQRiGYUAnQx5zmiSjIgp4yMdjjkYB1EzIoVd6qE01ENa2MAuDZDKdDiTLQdruTwBK_am2m0WUojgdmFlnad5WFo0C2bWkX2CccBJmi--19b63tC9t7pNg0Bo5ezXznbL-mHK35jqj_w4AAP__8xuKKg">