svn commit: r421277 - in head/devel/llvm38: . files

Brooks Davis brooks at FreeBSD.org
Fri Sep 2 21:33:07 UTC 2016


Author: brooks
Date: Fri Sep  2 21:33:05 2016
New Revision: 421277
URL: https://svnweb.freebsd.org/changeset/ports/421277

Log:
  Add a hack to make -fopenmp work inspired by a submission from
  Johannes Dieterich <dieterich at ogolem.org>.
  
  This differs from the submission in that it adds the library directly
  to the linker command line.  I chose not to add the llvm library to the
  search path because that would (e.g.) make it hard to link something
  that uses a different version of llvm.

Added:
  head/devel/llvm38/files/clang-patch-fopenmp.diff   (contents, props changed)
Modified:
  head/devel/llvm38/Makefile

Modified: head/devel/llvm38/Makefile
==============================================================================
--- head/devel/llvm38/Makefile	Fri Sep  2 21:12:22 2016	(r421276)
+++ head/devel/llvm38/Makefile	Fri Sep  2 21:33:05 2016	(r421277)
@@ -2,7 +2,7 @@
 
 PORTNAME=	llvm
 DISTVERSION=	3.8.1
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	devel lang
 MASTER_SITES=	http://llvm.org/${PRE_}releases/${LLVM_RELEASE}/${RCDIR}
 DISTNAME=	${PORTNAME}-${DISTVERSION}.src
@@ -45,6 +45,7 @@ PLIST_FILES=
 CLANG_DESC=	Build clang
 CLANG_EXTRA_PATCHES= \
 	${PATCHDIR}/clang-patch-fformat_extensions.diff \
+	${PATCHDIR}/clang-patch-fopenmp.diff \
 	${PATCHDIR}/clang-patch-tools_clang_lib_Headers_CMakeLists.txt \
 	${PATCHDIR}/clang-patch-tools_clang_tools_clang-format_clang-format.py \
 	${PATCHDIR}/clang-patch-tools_clang_tools_scan-build_libexec_ccc-analyzer
@@ -312,6 +313,10 @@ post-build-COMPILER_RT-on:
 	    ${WRKSRC_compiler_rt} && \
 	${MAKE_ENV} ${MAKE_CMD}
 
+post-patch-CLANG-on:
+	${REINPLACE_CMD} -e 's|%%LLVM_PREFIX%%|${LLVM_PREFIX}|' \
+	     ${PATCH_WRKSRC}/tools/clang/lib/Driver/Tools.cpp
+
 post-install:
 	${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/llvm/MC/MCAnalysis
 	${INSTALL_SCRIPT} ${WRKDIR}/llvm-wrapper.sh \

Added: head/devel/llvm38/files/clang-patch-fopenmp.diff
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/llvm38/files/clang-patch-fopenmp.diff	Fri Sep  2 21:33:05 2016	(r421277)
@@ -0,0 +1,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.


More information about the svn-ports-head mailing list