mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
llvm90:
Enable OpenMP on power64. [0] Add an option to link ld.lld to ld and enable by default on power64. [1] xtoolchain-llvm-devel: Add the ability to disable linking ld.lld to ld in slave ports. xtoolchain-llvm90: Disable linking ld.lld to ld since llvm90 can now do it. PR: 240516 [0] Submitted by: pkubaj [0] Requested by: kib [1]
This commit is contained in:
parent
378a4109c1
commit
b2fed1ef86
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=511878
6 changed files with 115 additions and 3 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
PORTNAME= llvm
|
||||
DISTVERSION= 9.0.0rc4
|
||||
PORTREVISION= 0
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= devel lang
|
||||
.if ${DISTVERSION:M*rc*}
|
||||
MASTER_SITES= http://prereleases.llvm.org/${LLVM_RELEASE}/${RCDIR}
|
||||
|
@ -66,12 +66,14 @@ CMAKE_ARGS+= -DPYTHON_EXECUTABLE=${PYTHON_CMD} \
|
|||
CFLAGS+= -DNDEBUG
|
||||
CXXFLAGS+= -DNDEBUG
|
||||
|
||||
OPTIONS_DEFINE= BE_AMDGPU CLANG DOCS EXTRAS LIT LLD LLDB PYCLANG
|
||||
OPTIONS_DEFINE= BE_AMDGPU CLANG DOCS EXTRAS LIT LLD LLD_LINK LLDB PYCLANG
|
||||
OPTIONS_DEFINE_amd64= COMPILER_RT GOLD OPENMP
|
||||
OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
|
||||
OPTIONS_DEFINE_powerpc64= OPENMP
|
||||
OPTIONS_DEFAULT= BE_AMDGPU BE_STANDARD CLANG EXTRAS LIT LLD LLDB PYCLANG
|
||||
OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD OPENMP
|
||||
OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD LLD_LINK OPENMP
|
||||
OPTIONS_DEFAULT_i386= COMPILER_RT OPENMP
|
||||
OPTIONS_DEFAULT_powerpc64= OPENMP
|
||||
OPTIONS_SINGLE= BACKENDS
|
||||
OPTIONS_SINGLE_BACKENDS=BE_FREEBSD BE_NATIVE BE_STANDARD
|
||||
OPTIONS_SUB= yes
|
||||
|
@ -115,6 +117,8 @@ LIT_DESC= Install lit and FileCheck test tools
|
|||
LIT_VARS= _USES_PYTHON=python:3.6+
|
||||
LLD_DESC= Install lld, the LLVM linker
|
||||
LLD_DISTFILES= lld-${DISTVERSION}.src${EXTRACT_SUFX}
|
||||
LLD_LINK_DESC= Link ld.lld as ld to clang uses it
|
||||
LLD_LINK_IMPLIES= LLD
|
||||
LLDB_BUILD_DEPENDS= swig3.0:devel/swig30 \
|
||||
${PY_ENUM34}
|
||||
LLDB_DESC= Install lldb, the LLVM debugger
|
||||
|
@ -124,6 +128,7 @@ LLDB_IMPLIES= CLANG
|
|||
LLDB_PORTDOCS= lldb
|
||||
LLDB_VARS= _USES_PYTHON=python:3.6+
|
||||
OPENMP_DESC= Install libomp, the LLVM OpenMP runtime library
|
||||
OPENMP_EXTRA_PATCHES= ${PATCHDIR}/openmp
|
||||
OPENMP_DISTFILES= openmp-${DISTVERSION}.src${EXTRACT_SUFX}
|
||||
PYCLANG_DESC= Install python bindings to libclang
|
||||
PYCLANG_IMPLIES= CLANG
|
||||
|
@ -533,6 +538,9 @@ post-install-LIT-on:
|
|||
${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/FileCheck \
|
||||
${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
|
||||
|
||||
post-install-LLD_LINK-on:
|
||||
${LN} -s ld.lld ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld
|
||||
|
||||
TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
|
||||
do-test:
|
||||
if [ `${ID} -u` = 0 ]; then \
|
||||
|
@ -579,6 +587,7 @@ build-plist:
|
|||
{printf "%%%%COMPILER_RT%%%%"} \
|
||||
if ($$0 ~ /(${EXTRAS_PATTERN})/) {printf "%%%%EXTRAS%%%%"} \
|
||||
if ($$0 ~ /(lld|wasm-ld)/ && $$0 !~ /(lldb)/) {printf "%%%%LLD%%%%"} \
|
||||
if ($$0 ~ /(bin\/ld$$)/) {printf "%%%%LLD_LINK%%%%"} \
|
||||
if ($$0 ~ /(argdumper|lldb|six.py)/) {printf "%%%%LLDB%%%%"} \
|
||||
if ($$0 ~ /(lib.*omp|omp.h|ompt.h)/) {printf "%%%%OPENMP%%%%"} \
|
||||
if ($$0 ~ /(LLVMgold)/) {printf "%%%%GOLD%%%%"} \
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
--- projects/openmp/runtime/src/kmp_platform.h.orig 2019-01-19 10:56:40 UTC
|
||||
+++ projects/openmp/runtime/src/kmp_platform.h
|
||||
@@ -93,9 +93,9 @@
|
||||
#define KMP_ARCH_X86 0
|
||||
#define KMP_ARCH_X86_64 0
|
||||
#define KMP_ARCH_AARCH64 0
|
||||
-#define KMP_ARCH_PPC64_BE 0
|
||||
-#define KMP_ARCH_PPC64_LE 0
|
||||
-#define KMP_ARCH_PPC64 (KMP_ARCH_PPC64_LE || KMP_ARCH_PPC64_BE)
|
||||
+#define KMP_ARCH_PPC64_ELFv1 0
|
||||
+#define KMP_ARCH_PPC64_ELFv2 0
|
||||
+#define KMP_ARCH_PPC64 (KMP_ARCH_PPC64_ELFv2 || KMP_ARCH_PPC64_ELFv1)
|
||||
#define KMP_ARCH_MIPS 0
|
||||
#define KMP_ARCH_MIPS64 0
|
||||
|
||||
@@ -117,12 +117,12 @@
|
||||
#undef KMP_ARCH_X86
|
||||
#define KMP_ARCH_X86 1
|
||||
#elif defined __powerpc64__
|
||||
-#if defined __LITTLE_ENDIAN__
|
||||
-#undef KMP_ARCH_PPC64_LE
|
||||
-#define KMP_ARCH_PPC64_LE 1
|
||||
+#if defined(_CALL_ELF) && _CALL_ELF == 2
|
||||
+#undef KMP_ARCH_PPC64_ELFv2
|
||||
+#define KMP_ARCH_PPC64_ELFv2 1
|
||||
#else
|
||||
-#undef KMP_ARCH_PPC64_BE
|
||||
-#define KMP_ARCH_PPC64_BE 1
|
||||
+#undef KMP_ARCH_PPC64_ELFv1
|
||||
+#define KMP_ARCH_PPC64_ELFv1 1
|
||||
#endif
|
||||
#elif defined __aarch64__
|
||||
#undef KMP_ARCH_AARCH64
|
|
@ -0,0 +1,62 @@
|
|||
--- projects/openmp/runtime/src/z_Linux_asm.S.orig 2019-07-02 13:45:40 UTC
|
||||
+++ projects/openmp/runtime/src/z_Linux_asm.S
|
||||
@@ -1328,12 +1328,12 @@ KMP_LABEL(kmp_1):
|
||||
// return: r3 (always 1/TRUE)
|
||||
//
|
||||
.text
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
.abiversion 2
|
||||
# endif
|
||||
.globl __kmp_invoke_microtask
|
||||
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
.p2align 4
|
||||
# else
|
||||
.p2align 2
|
||||
@@ -1341,7 +1341,7 @@ KMP_LABEL(kmp_1):
|
||||
|
||||
.type __kmp_invoke_microtask,@function
|
||||
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
__kmp_invoke_microtask:
|
||||
.Lfunc_begin0:
|
||||
.Lfunc_gep0:
|
||||
@@ -1385,7 +1385,7 @@ __kmp_invoke_microtask:
|
||||
.cfi_offset lr, 16
|
||||
|
||||
// Compute the size necessary for the local stack frame.
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
li 12, 72
|
||||
# else
|
||||
li 12, 88
|
||||
@@ -1463,7 +1463,7 @@ __kmp_invoke_microtask:
|
||||
// for the microtask begins 48 + 8*8 == 112 bytes above r1 for ELFv1 and
|
||||
// 32 + 8*8 == 96 bytes above r1 for ELFv2.
|
||||
addi 4, 4, 40
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
addi 12, 1, 88
|
||||
# else
|
||||
addi 12, 1, 104
|
||||
@@ -1475,7 +1475,7 @@ __kmp_invoke_microtask:
|
||||
bdnz .Lnext
|
||||
|
||||
.Lcall:
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
std 2, 24(1)
|
||||
mr 12, 3
|
||||
#else
|
||||
@@ -1491,7 +1491,7 @@ __kmp_invoke_microtask:
|
||||
|
||||
mtctr 12
|
||||
bctrl
|
||||
-# if KMP_ARCH_PPC64_LE
|
||||
+# if KMP_ARCH_PPC64_ELFv2
|
||||
ld 2, 24(1)
|
||||
# else
|
||||
ld 2, 40(1)
|
|
@ -141,6 +141,7 @@ llvm%%LLVM_SUFFIX%%/bin/dsymutil
|
|||
%%EXTRAS%%llvm%%LLVM_SUFFIX%%/bin/find-all-symbols
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/bin/git-clang-format
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/bin/hmaptool
|
||||
%%LLD_LINK%%llvm%%LLVM_SUFFIX%%/bin/ld
|
||||
%%LLD%%llvm%%LLVM_SUFFIX%%/bin/ld.lld
|
||||
%%LLD%%llvm%%LLVM_SUFFIX%%/bin/ld64.lld
|
||||
llvm%%LLVM_SUFFIX%%/bin/llc
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= xtoolchain
|
||||
.ifndef NO_LLD_LINK
|
||||
PORTVERSION= 0.1
|
||||
.else
|
||||
PORTVERSION= 0.2
|
||||
.endif
|
||||
CATEGORIES= devel
|
||||
MASTER_SITES= # none
|
||||
DISTFILES= # none
|
||||
|
@ -37,11 +41,13 @@ do-install:
|
|||
@${INSTALL_DATA} ${WRKDIR}/xtoolchain.mk \
|
||||
${STAGEDIR}${PREFIX}/share/toolchains/llvm${LLVM_SUFFIX}.mk
|
||||
|
||||
.ifndef NO_LLD_LINK
|
||||
# XXX: would be better to add -fuse-ld=lld to LDFLAGS, but there isn't
|
||||
# yet a mechansim for that. Link added here, not in devel/llvm* to avoid
|
||||
# forcing lld on all users.
|
||||
post-install:
|
||||
@${MKDIR} ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin
|
||||
@${LN} -s ld.lld ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
LLVM_SUFFIX=90
|
||||
NO_LLD_LINK=yes
|
||||
|
||||
MASTERDIR= ${.CURDIR}/../xtoolchain-llvm-devel
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue