summaryrefslogtreecommitdiff
path: root/devel/llvm38/files/clang-patch-fopenmp.diff
blob: 5216a420e710b5ca49f89d713376ffb092e6ccf1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--- tools/clang/lib/Driver/Tools.cpp.orig	2016-09-02 19:55:01.000873648 +0000
+++ tools/clang/lib/Driver/Tools.cpp	2016-09-02 19:54:32.001875868 +0000
@@ -2733,13 +2733,22 @@
 
   switch (getOpenMPRuntime(TC, Args)) {
   case OMPRT_OMP:
-    CmdArgs.push_back("-lomp");
+    if (TC.getTriple().getOS() != llvm::Triple::FreeBSD || TC.isCrossCompiling() || !llvm::sys::fs::exists("%%LLVM_PREFIX%%/lib/libomp.so"))
+      CmdArgs.push_back("-lomp");
+    else
+      CmdArgs.push_back("%%LLVM_PREFIX%%/lib/libomp.so");
     break;
   case OMPRT_GOMP:
-    CmdArgs.push_back("-lgomp");
+    if (TC.getTriple().getOS() != llvm::Triple::FreeBSD || TC.isCrossCompiling() || !llvm::sys::fs::exists("%%LLVM_PREFIX%%/lib/libomp.so"))
+      CmdArgs.push_back("-lgomp");
+    else
+      CmdArgs.push_back("%%LLVM_PREFIX%%/lib/libgomp.so");
     break;
   case OMPRT_IOMP5:
-    CmdArgs.push_back("-liomp5");
+    if (TC.getTriple().getOS() != llvm::Triple::FreeBSD || TC.isCrossCompiling() || !llvm::sys::fs::exists("%%LLVM_PREFIX%%/lib/libomp.so"))
+      CmdArgs.push_back("-liomp5");
+    else
+      CmdArgs.push_back("%%LLVM_PREFIX%%/lib/libiomp5.so");
     break;
   case OMPRT_Unknown:
     // Already diagnosed.