<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128870>128870</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
OpenMP dylib not found on MacOS
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vincentloechner
</td>
</tr>
</table>
<pre>
Hi,
Compiling LLVM with the OpenMP project activated, it builds fine and everything seems to be installed ok, including the libomp.dylib.
But, when compiling an OpenMP C program using the newly built clang, the dylib is not found at runtime as I would expect it to be:
```
% /opt/llvm/bin/clang toto.c
% otool -L a.out
a.out:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
% ./a.out
1 threads
% /opt/llvm/bin/clang toto.c -fopenmp
% otool -L a.out
a.out:
@rpath/libomp.dylib (compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
% ./a.out
dyld[73817]: Library not loaded: @rpath/libomp.dylib
Referenced from: <05684888-4242-32CB-9806-AE5BAF37FD0C> ./a.out
Reason: no LC_RPATH's found
zsh: abort ./a.out
% DYLD_LIBRARY_PATH=/opt/llvm/lib ./a.out
14 threads
%
```
Using the DYLD_LIBRARY_PATH environment variable is not satisfactory, and it is not possible when using this toolchain in another Cmake-enabled project.
This patch fixes the issue:
```
% git diff
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 2b916f000336..9e2a8cf798ec 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1104,6 +1104,10 @@ void tools::addOpenMPRuntimeLibraryPath(const ToolChain &TC,
llvm::sys::path::parent_path(TC.getDriver().Dir);
llvm::sys::path::append(DefaultLibPath, CLANG_INSTALL_LIBDIR_BASENAME);
CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath));
+ #if defined(__APPLE__)
+ CmdArgs.push_back(Args.MakeArgString("-rpath"));
+ CmdArgs.push_back(Args.MakeArgString(DefaultLibPath));
+ #endif
}
void tools::addArchSpecificRPath(const ToolChain &TC, const ArgList &Args,
```
I ran this on an Apple M4Pro, MacOS Sequoia 15.3.1.
This is my cmake configuration (tried various things, the 2 last lines do not seem to change anything):
```
% cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS="clang;openmp" \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_ENABLE_LLD=ON \
-DDEFAULT_SYSROOT="$(xcrun --show-sdk-path)" \
-DCMAKE_INSTALL_PREFIX=/opt/llvm \
-DLLVM_INSTALL_UTILS=ON \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
-DCMAKE_INSTALL_RPATH=/opt/llvm/lib \
-DCMAKE_MACOSX_RPATH=TRUE
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEV0FzozoS_jXKpQtKCGPjgw8Y4_e8jyQu29maOVEChNELSKwkkvH--i0BTibeSc3sXHbKNXEh9ddfN91ft6nW_CwYW6FgjYLNHe1NLdXqhYuCCdNIVtSCqbtclpfVnxyRGOEI4SiWbccbLs6Qpv-8h1duajA1g8eOifs9dEr-zQoDtDD8hRpWIhIDN5D3vCk1VFwwoKIE9sLUxdQWRzPWajAScgZcaEObhpUgnwdLUTR9aW9ZHw3PZdu55aXhuTvSWffG3nutmYDijRoVVz6xZXRWtIVeX2EEe20uAyMDRUPF2SLYgwEYuAYhDVSyFyVQA6oXhrcMqIYdvMq-KYF962yQ3Iy0kW-poDmePjhCJABEtrIziGyb5qVFZJtzgch2cAhGGukW00VppGzASYG6sjcIR-PfERQvEdn2Wlkcno__Hy_asNZdj5kAREIbOjU85w03F3hhSnMpwHOxi21wRa8UE-b9wA-ms-XEwUVke3XvgakVo6X-5UDAqWTHRNv9YkQzrDpq6jGat1f6eSDBZ4EE30Xxf8hUeWlKFKwXfugtULBBfgQpzxVVl6GEGklLVtqnn0SMcARwYBVTTBSshErJdrjuxziYh7MwDJ0ZmRHHJ_HaWYZ47kRJsI62_mK7wTHykw90LBbVUlgIISGNs8M-Ov2JyEKP5Yxw9G9d22OaS2Vg-Pc9gg1w8zXdZOlufYgOX7PB3t_cloBN5oeSmd3WzE0_4Ojprf_-ywEw8cKVFO2Qeao4zRt27UNNDdcVLYxUF_uGrHpwcz3tpNbc3h4U4Nrj3OqJbIqacgFcABXS1ExB3NJn5jBh8curVk1KcrJWHTVFDRX_xvRAlWvdf9LeZ26g5FVly4BXFTiOfUKvnfFWhRvFX5gtypOUTWwZaUS2sWxbKSJ11m7RdZD_lhnCERcl-wYkX3rzCmPs-3PXXTJCw6JaLENWgIfxfDZDOHIc5zfZDQGvx8_vM0UzjGYYHM_DM0TiOSCynr57GKbTF8nL4dVpm3Q_omU5CvlhFOGpu_ZDK4WFFNrAm1tAZH6Kx0kFQ6EOGPoygQ0NOH2zTZ6NHRmeYvfMzDWMEJGlu-HKdry__ikU7TomSkTCDato35iU5yO7GOI0evgj2z0cT1Ga2oLf7A7ZOjomD9F98g4ft-WQpq7XdZbT4hmRcHhwT59ZpM5Ho7hNd4gIcVJEiM0c3LpbvgHaU0DE5xWUzA5cyy7Lov0-TbLsKmTr_83vpF7k1tEvg_ycLxMlt90EaLEZW_JH5RCpoj52rOAVLw4_qQMYDyJ1Trk29rGlNq0yH9VpB4qKUTmk1QuIuq5hcD_bK2mR7mnxeIQj-1cvOQUvcH3Xc6-qwTW0FyisuFiXFT_3iho7PhAJjeKsHFRN9lZUuBgoDPJCoKHaQMMF01DKUe8Ya-1aUdRUnO2yNK5JQ7p-pEOjW-cPeODibwquO6k0oGBoBGdjF7UseYjWaZLtD4__SOLTcdB0Mjayv56Gty2t0ehqtX7apZss-RLd79PEGj1utzfAp-jwR3I6ZqfH8faIXEttPuLF99FfyQR4-rpPkL85sIZRzX7MNDoek8Np9_gwuH24ZTbdSgeH78fOZpNso6f0lB2_Hg-Pj6eRDiIzRMJvheoFOI6u5aujy2enu5YiebcfeV67dn9ItrsvtxPwlsz19tNplx5v-HzEGwZy9nRMsnT38Nd1vP7k_icD-Da391H8ePzyZnI6PCU39XJXrvxy6S_pHVt5ixkOFr7nBXf1qshJgRcByWmBCfW9sKIlw4sZxWG49IrlHV8RTAJMyNwjvhcELqZzhkvq4aDI5_7M7nSspbxxLUFXqvPdMDtXHgnDBb5raM4aPfzWIESw12myEmJ_eqiVNXLy_qzRDDdcG_0OY7hp2Gpa58c17n09l2LszLteNavamG4QCrJFZHvmpu5zt5Dtd1mzbqaxj8h24GCH1UTyZUX-EwAA__9t8_9c">