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

    <tr>
        <th>Summary</th>
        <td>
            offload fails to build on s390x
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            openmp:libomptarget,
            offload
      </td>
    </tr>

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

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

<pre>
    `LIBOMPTARGET_ALL_PLUGIN_TARGETS` is initialized to include amdgpu, cuda and host. Then amdgpu and cuda are automatically disabled on non-x86/aarch64/ppc64 platforms, such as s390x. But lateron we assume that all plugins in LIBOMPTARGET_ALL_PLUGIN_TARGETS exist and link against them, resulting in linker errors like the following:

```

May 23 09:01:09 : && /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/./bin/clang++ --target=s390x-redhat-linux-gnu -fPIC -O2 -flto=thin -fexceptions -g1 -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS --config /usr/lib/rpm/redhat/redhat-hardened-clang.cfg -fstack-protector-strong -m64 -march=z13 -mtune=z14 -fasynchronous-unwind-tables -fstack-clash-protection -D_DEFAULT_SOURCE -Dasm=__asm__ -fPIC -fno-semantic-interposition -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 -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -Wl,-z,relro -Wl,--as-needed   -Wl,-z,now --config /usr/lib/rpm/redhat/redhat-hardened-clang-ld.cfg   -Wl,--build-id=sha1 -Wl,-z,defs -Wl,-z,nodelete   -Wl,--gc-sections -shared -Wl,-soname,libomptarget.so.19.0pre20240523.g1e86e924288221 -o /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libomptarget.so.19.0pre20240523.g1e86e924288221 offload/src/CMakeFiles/omptarget.dir/device.cpp.o offload/src/CMakeFiles/omptarget.dir/interface.cpp.o offload/src/CMakeFiles/omptarget.dir/omptarget.cpp.o offload/src/CMakeFiles/omptarget.dir/OffloadRTL.cpp.o offload/src/CMakeFiles/omptarget.dir/LegacyAPI.cpp.o offload/src/CMakeFiles/omptarget.dir/PluginManager.cpp.o offload/src/CMakeFiles/omptarget.dir/DeviceImage.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/API.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/Mapping.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/InteropAPI.cpp.o offload/src/CMakeFiles/omptarget.dir/OpenMP/OMPT/Callback.cpp.o -Wl,-rpath,"\$ORIGIN:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/runtimes/runtimes-bins/offload/src/..:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/runtimes/runtimes-bins/openmp/runtime/src:/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64:" openmp/runtime/src/libomp.so -Wl,--version-script=/builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/offload/src/exports -lomptarget.rtl.amdgpu  -lomptarget.rtl.cuda /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libomptarget.rtl.host.a -lm /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVM.so.19.0pre20240523.g1e86e924288221 /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMGlobalISel.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMIRParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMPasses.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMHipStdPar.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMIRPrinter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCFGuard.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCoroutines.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUAsmParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUDisassembler.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUDesc.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMCDisassembler.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUInfo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAMDGPUUtils.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAsmPrinter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMipo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMFrontendOpenMP.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMFrontendOffloading.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMLinker.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMInstrumentation.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSelectionDAG.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCodeGen.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMScalarOpts.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAggressiveInstCombine.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMInstCombine.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitWriter.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMObjCARCOpts.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCodeGenTypes.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTarget.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMVectorize.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTransformUtils.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAnalysis.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMProfileData.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSymbolize.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoDWARF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoPDB.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMObject.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMCParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMIRReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMAsmParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTextAPI.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoMSF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoBTF.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMCore.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMRemarks.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBitstreamReader.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXDesc.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMNVPTXInfo.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMMC.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMBinaryFormat.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMTargetParser.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDebugInfoCodeView.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMSupport.a /builddir/build/BUILD/llvm-project-1e86e924288221826e0fb93d33be80d65f198ae6/llvm/redhat-linux-build/lib64/libLLVMDemangle.a -lrt  -ldl  -lm  /usr/lib64/libz.so  /usr/lib64/libzstd.so /usr/lib64/libtinfo.so  /usr/lib64/libffi.so && :
May 23 09:01:09 /usr/bin/ld: cannot find -lomptarget.rtl.amdgpu: No such file or directory
May 23 09:01:09 /usr/bin/ld: cannot find -lomptarget.rtl.cuda: No such file or directory
```

This used to work before offload was separate from openmp.

Either the build system should make it a hard error to specify a plugin that can't be build (in which case the user has to explicitly adjust `LIBOMPTARGET_ALL_PLUGIN_TARGETS`), or it should not try link plugins that it did not build.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMW19T4zgS_zTmRaVUIkOABx6SeMKligypEIa9J6ptte1eZMknyUDm01_JTgZmb-dul727URVFJZK69XOr_0jyL-AcVRrxKjmbJ2fZCXS-NvZK0xMVJ7mR-6tkOr5ZzW_Xm91se_1p9zi7uXnc3Nxfrz4_Di13yXTMyDHS5AkUfUXJvGGkC9VJZNDIqu0SsWBFJ4GBlqw2zo_YrkZ96O1bh26LDDpvGvBUgFJ7JslBrlAyo5k2mr9eTBOxBLBFPT1NxLJti-kpaxX40tjGhYlcV9QMHHPp5fh1xOadZwo8WqPZCzJwrmuQ-Ro8A6VYq7qKdMDP_sODMnwl53uwivQTgwpIO898jU2Y16LrlCddBV1hBFqG1hrrmKKnMCWy0ihlXkhXSTpLxlkyPv6fjg9_7xrXsGciZePLJJ2NJ-HfJUvSGUvENBFTlohl3pGSkuzxYyKW8_vVTZaIpVLPDW-t-RULzyd4McVLcSouLoSYXIgpjsv8MpVpmuPFWE7PysnlBeD0IJeIpUVZg-eKdPfKj7pHYR7SiVgWCnSViHki5oxzD7ZCn6RZb3L-nWylO8bLzWrB-K1gvFTeJGnma9KMl_haYOvJaMd4NWG8slgYK3lVFNy9kC9qdIy31CLjD2G1-ENv0STNwnKD5w6LzpLfM_7QJmLB7x-Xt9vdavn3x7vb--3iU2jLftuWZulxfPZ4fbOaL3755XF2d_dpu1vdfr5jnBdGl1QFE3cuWFdRHozSvpnmzUY1WIkaJe-NMirKivHSeSiegv09Ft5Y7rw1umK8mZ4y3gT3TdLs6yRlvPGdxv7LKeMluL0uamu06Rzv9AtpyX2IAPdNaaHA1UfVZDTj2WP2aTm7v9kdHpDxDFyTpNnjI7jm8fG4AKU23GED2lPBSXu0rXE06CifyVFOivyek1ak0fGapET9zugSPHJPDb5r63TVBQtIDs9ACg46NL68rdmrt8D4gza8051DyVuw0KBHy_jDiyWPwUCkK8f4QwHO8390ECQbco50xUtCJflbjrFhIDWtooI8L0EpX1vTVXWQN89oUR4ciEssoVN-mF6bweW43_c-FVLKM1nfgeLSmwBHokKP_Hd6XFdV6DwP-i3JID-gDu7yjNb1hgyYFYIM7aQlag-DhR8KD5I3sM-Rd9p1bWusR8l4KQkqbZynwvHCqDBZWXa6X93g4YcIKSV4ePc9xFPFePY5-zS_v2b8QQWP_pqIhUVlzbGBg-MaUaJk7P0gbV7-kqdzJXtn_6Z0yBOcZMgENUzeTyaxdN9PPtj5nXRVvHs2V4MNthn6nNHQYCIWinLTtEO-GTkzmlyOxq1FMRan4zORjqrvMx3j5iekSUV5X5v-LFhTlspA0OBskYjlYg1PuCSFLhHLN03Dg0h8pgJHRduOzJ-T7AO_hI8Jv33_gPDtMHi7u_mI9A1WUOxnm9VHhDd9mV-DhgrtRxRkvb1XDVQfsttti3q9ScTyg_i_ya-hbSmUmb-gYxU8wLR_FUrYLIXBoFQOxdNB1yFkbQu-TsQiESI5WyTi9Ha7ul59Dvue_3tA2k6HouXefeQ56f7hfvPko1F0CFvUTfvWcYD6M1AOiS3MLNgPYB2z3si91Z9DaeSusNSGbeL_BvlvlxJfQ4F1jKs3D7ZejQ6Hjn9p708gkVSLgKc_JwHjqvm5qG5uvqz_SPn66SBn6-x6c78wEq9Rj37yWgZA18rkoFZ3qGJAs15tN2Ad2hjAbMA5dDEg-Ru1d15uIAqzrLYb2-_PYgCzWF6Hk10UUIw1nQ-H0hjQDIlm5pp44mmAlJELcdXkKipU6IoY0KwXcdpnpUsTD5p7TyqKKPv8ZbP7JaJqHuI9nuRMbRQ-s7RGe9RyOBRGhWg4DoSzcgSobvr3ATEgWWnnbdcc7yVjgHSHarj4y2bXMeCJKOncFaDA3rY-ipQ8qyqLztEzBi9amCYnjTEAiwzOnPyDpUgqxW3-62K2XcTiQ4fg2u3bODbzu-HGJQIkX_pXhfQ1ChfeWdCuNLaJZj8406D2jqLAsrGmJIUZeIgBzt2-yY2KxHMyzLsqnGmyh9l2GRWiTTaPAc9tHpTHgGS9iOcKY7XdIsg4sMzJxwMmqoumHb762WYVA5RvYb2-iyvNzHdR4FkYG0VB2GID9imKuj0n77xFaOKJ7v6aK5Yr0h5MLPeR60UMKOakwe6XPd0wBjzDeSWegvAt64WD3RfClxhA3Q3suhigZNiArhT2r_KtZ4wrqVj_Wv871t1R5uvImR_0OC9D5-_1eQpB-yPJsqRBcCAOp_-OYHwUH4i-SibpjBWgtfGsJC1_QKcIoz6bgXsdTkbMWCbJ9ifa_X9xtqKT8Afm-l0-9a4mxzo3ENRfjH1iOZbG4pH-xF7AMYctWPDISmuaA8tl9F7LJ_I12p7N3a84c3vnsWGuNp2SrIEnZOQZsBqsHAjgYT7XYkHlnsGBcT4w0AvQiTj3LD8qS8QFafZSU1GzAtzAGu8cWlaDC3rwdSC9qj0D-WvnPPtDFP1EXCZiESxF_gg1GNnb_cBmP_Lge1jkmaRhQA9rdCKvUnmZXsIJXk3OJ9PT6fnF2dlJfTWejIvz8_MLhOkYxdl4OslTcV6MSyjSscjxhK6OhJGJSM_Ts1FxeXaeT86mZ4hSTqcyOR1jA6RGIaZGxlYn5FyHV5fp5CI9UZCjcv3vE4Q4cI7S2XuuTCLEQDP7xv8RyVl2Yq_62M67yiWnY0XOu7cZPHmFV8dlL4FUb9thCYwefjpw0ll1VXvfuoFslYhlRb7u8lFhmrcc8D6FJGLZg3eJWA74n6_EPwMAAP__5jPGUw">