mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Fix build without CLANG enabled. [0]
Fix LLD build where PREFIX != LOCALBASE. [1] powerpc64: add configure option to select ELFv2 ABI [2] In preparation for compiler+ABI change in PowerPC64, this change adds a configure option to select ELFv2 as default powerpc64 ABI when compiling llvm90. The new option automatically set when ELFv2 environment is detected (when PPC_ABI=ELFv2) PR: 241400 [1], 241410 [0] Submitted by: Alfredo Dal'Ava Júnior [2] Differential Revision: https://reviews.freebsd.org/D22100 [2]
This commit is contained in:
parent
f7d99f8d2b
commit
54435b5150
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=515213
4 changed files with 72 additions and 7 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
PORTNAME= llvm
|
PORTNAME= llvm
|
||||||
DISTVERSION= 9.0.0
|
DISTVERSION= 9.0.0
|
||||||
PORTREVISION= 1
|
PORTREVISION= 2
|
||||||
CATEGORIES= devel lang
|
CATEGORIES= devel lang
|
||||||
.if ${DISTVERSION:M*rc*}
|
.if ${DISTVERSION:M*rc*}
|
||||||
MASTER_SITES= https://prereleases.llvm.org/${LLVM_RELEASE}/${RCDIR}
|
MASTER_SITES= https://prereleases.llvm.org/${LLVM_RELEASE}/${RCDIR}
|
||||||
|
@ -66,7 +66,7 @@ CMAKE_ARGS+= -DPYTHON_EXECUTABLE=${PYTHON_CMD} \
|
||||||
CFLAGS+= -DNDEBUG
|
CFLAGS+= -DNDEBUG
|
||||||
CXXFLAGS+= -DNDEBUG
|
CXXFLAGS+= -DNDEBUG
|
||||||
|
|
||||||
OPTIONS_DEFINE= BE_AMDGPU CLANG DOCS EXTRAS LIT LLD LLD_LINK LLDB PYCLANG
|
OPTIONS_DEFINE= BE_AMDGPU CLANG DOCS ELFV2 EXTRAS LIT LLD LLD_LINK LLDB PYCLANG
|
||||||
OPTIONS_DEFINE_amd64= COMPILER_RT GOLD OPENMP
|
OPTIONS_DEFINE_amd64= COMPILER_RT GOLD OPENMP
|
||||||
OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
|
OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
|
||||||
OPTIONS_DEFINE_powerpc64= OPENMP
|
OPTIONS_DEFINE_powerpc64= OPENMP
|
||||||
|
@ -106,6 +106,9 @@ DOCS_CMAKE_ON= -DLLVM_ENABLE_SPHINX=ON \
|
||||||
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
|
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
|
||||||
-DLLVM_BUILD_DOCS=ON
|
-DLLVM_BUILD_DOCS=ON
|
||||||
DOCS_PLIST_FILES= ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
|
DOCS_PLIST_FILES= ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
|
||||||
|
ELFV2_DESC= [PowerPC64] Use OpenPOWER ELF ABI v2 by default
|
||||||
|
ELFV2_EXTRA_PATCHES= ${PATCHDIR}/ppc64-elfv2
|
||||||
|
ELFV2_IMPLIES= CLANG
|
||||||
EXTRAS_DESC= Extra clang tools
|
EXTRAS_DESC= Extra clang tools
|
||||||
EXTRAS_EXTRA_PATCHES= ${PATCHDIR}/extras
|
EXTRAS_EXTRA_PATCHES= ${PATCHDIR}/extras
|
||||||
EXTRAS_IMPLIES= CLANG
|
EXTRAS_IMPLIES= CLANG
|
||||||
|
@ -217,6 +220,11 @@ EXTRAS_PATTERN= ${EXTRAS_COMMANDS:tW:C/ */|/g}|${EXTRAS_LIBS:tW:C/ */|/g}
|
||||||
|
|
||||||
.include <bsd.port.options.mk>
|
.include <bsd.port.options.mk>
|
||||||
|
|
||||||
|
# PPC_ABI variable is only defined after including bsd.port.options.mk
|
||||||
|
.if defined(PPC_ABI) && ${PPC_ABI} == ELFv2
|
||||||
|
OPTIONS_DEFAULT_powerpc64= ELFV2
|
||||||
|
.endif
|
||||||
|
|
||||||
# keep in sync with /usr/src/lib/clang/clang.build.mk
|
# keep in sync with /usr/src/lib/clang/clang.build.mk
|
||||||
# ----------- start of sync block ------------------
|
# ----------- start of sync block ------------------
|
||||||
# Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it.
|
# Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it.
|
||||||
|
@ -238,7 +246,7 @@ COMMANDS+= ${CLANG_COMMANDS}
|
||||||
MAN1SRCS+= clang.1 \
|
MAN1SRCS+= clang.1 \
|
||||||
diagtool.1 \
|
diagtool.1 \
|
||||||
scan-build.1
|
scan-build.1
|
||||||
CLANG_PATTERN= (c-index-test|clang|diagtool|hmaptool|scan-|Reporter.py|ScanView.py|scanview.css|sorttable.js|startfile.py|-analyzer)
|
CLANG_PATTERN= (c-index-test|clang|diagtool|hmaptool|scan-|Reporter.py|ScanView.py|scanview.css|sorttable.js|startfile.py|-analyzer|AnalyzerPlugin.so)
|
||||||
SHEBANG_FILES+= tools/clang/tools/scan-view/bin/scan-view \
|
SHEBANG_FILES+= tools/clang/tools/scan-view/bin/scan-view \
|
||||||
tools/clang/tools/clang-format/clang-format-diff.py \
|
tools/clang/tools/clang-format/clang-format-diff.py \
|
||||||
tools/clang/tools/clang-format/git-clang-format \
|
tools/clang/tools/clang-format/git-clang-format \
|
||||||
|
@ -536,7 +544,7 @@ post-install-LIT-on:
|
||||||
${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
|
${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
|
||||||
|
|
||||||
post-install-LLD_LINK-on:
|
post-install-LLD_LINK-on:
|
||||||
${LN} -s ld.lld ${STAGEDIR}${LOCALBASE}/llvm${LLVM_SUFFIX}/bin/ld
|
${LN} -s ld.lld ${STAGEDIR}${LLVM_PREFIX}/bin/ld
|
||||||
|
|
||||||
TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
|
TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
|
||||||
do-test:
|
do-test:
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
--- lib/Target/PowerPC/PPCTargetMachine.cpp.orig 2019-07-04 07:43:51 UTC
|
||||||
|
+++ lib/Target/PowerPC/PPCTargetMachine.cpp
|
||||||
|
@@ -209,6 +209,20 @@ static PPCTargetMachine::PPCABI computeTargetABI(const
|
||||||
|
if (TT.isMacOSX())
|
||||||
|
return PPCTargetMachine::PPC_ABI_UNKNOWN;
|
||||||
|
|
||||||
|
+ if (TT.isOSFreeBSD()) {
|
||||||
|
+ switch (TT.getArch()) {
|
||||||
|
+ case Triple::ppc64le:
|
||||||
|
+ case Triple::ppc64:
|
||||||
|
+ if (TT.getOSMajorVersion() >= 13)
|
||||||
|
+ return PPCTargetMachine::PPC_ABI_ELFv2;
|
||||||
|
+ else
|
||||||
|
+ return PPCTargetMachine::PPC_ABI_ELFv1;
|
||||||
|
+ case Triple::ppc:
|
||||||
|
+ default:
|
||||||
|
+ return PPCTargetMachine::PPC_ABI_UNKNOWN;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
switch (TT.getArch()) {
|
||||||
|
case Triple::ppc64le:
|
||||||
|
return PPCTargetMachine::PPC_ABI_ELFv2;
|
|
@ -0,0 +1,34 @@
|
||||||
|
--- tools/clang/lib/Basic/Targets/PPC.h.orig 2019-07-09 13:32:26 UTC
|
||||||
|
+++ tools/clang/lib/Basic/Targets/PPC.h
|
||||||
|
@@ -374,12 +374,29 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public
|
||||||
|
IntMaxType = SignedLong;
|
||||||
|
Int64Type = SignedLong;
|
||||||
|
|
||||||
|
+ if (Triple.getEnvironment() != llvm::Triple::UnknownEnvironment) {
|
||||||
|
+ switch (Triple.getEnvironment()){
|
||||||
|
+ case llvm::Triple::ELFv1:
|
||||||
|
+ ABI = "elfv1";
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ ABI = "elfv2";
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ if ((Triple.getOS() == llvm::Triple::FreeBSD) &&
|
||||||
|
+ (Triple.getOSMajorVersion() < 13)) {
|
||||||
|
+ ABI = "elfv1";
|
||||||
|
+ } else {
|
||||||
|
+ ABI = "elfv2";
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+
|
||||||
|
if ((Triple.getArch() == llvm::Triple::ppc64le)) {
|
||||||
|
resetDataLayout("e-m:e-i64:64-n32:64");
|
||||||
|
- ABI = "elfv2";
|
||||||
|
} else {
|
||||||
|
resetDataLayout("E-m:e-i64:64-n32:64");
|
||||||
|
- ABI = Triple.getEnvironment() == llvm::Triple::ELFv2 ? "elfv2" : "elfv1";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Triple.getOS() == llvm::Triple::AIX)
|
|
@ -2729,10 +2729,10 @@ llvm%%LLVM_SUFFIX%%/include/llvm/XRay/YAMLXRayRecord.h
|
||||||
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_interface.h
|
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_interface.h
|
||||||
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_log_interface.h
|
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_log_interface.h
|
||||||
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_records.h
|
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_records.h
|
||||||
llvm%%LLVM_SUFFIX%%/lib/CheckerDependencyHandlingAnalyzerPlugin.so
|
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/CheckerDependencyHandlingAnalyzerPlugin.so
|
||||||
llvm%%LLVM_SUFFIX%%/lib/CheckerOptionHandlingAnalyzerPlugin.so
|
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/CheckerOptionHandlingAnalyzerPlugin.so
|
||||||
%%GOLD%%llvm%%LLVM_SUFFIX%%/lib/LLVMgold.so
|
%%GOLD%%llvm%%LLVM_SUFFIX%%/lib/LLVMgold.so
|
||||||
llvm%%LLVM_SUFFIX%%/lib/SampleAnalyzerPlugin.so
|
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/SampleAnalyzerPlugin.so
|
||||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_builtin_vars.h
|
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_builtin_vars.h
|
||||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_cmath.h
|
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_cmath.h
|
||||||
%%CLANG%%%%OPENMP%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_complex_builtins.h
|
%%CLANG%%%%OPENMP%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_complex_builtins.h
|
||||||
|
|
Loading…
Add table
Reference in a new issue