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
|
||||
DISTVERSION= 9.0.0
|
||||
PORTREVISION= 1
|
||||
PORTREVISION= 2
|
||||
CATEGORIES= devel lang
|
||||
.if ${DISTVERSION:M*rc*}
|
||||
MASTER_SITES= https://prereleases.llvm.org/${LLVM_RELEASE}/${RCDIR}
|
||||
|
@ -66,7 +66,7 @@ CMAKE_ARGS+= -DPYTHON_EXECUTABLE=${PYTHON_CMD} \
|
|||
CFLAGS+= -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_i386= COMPILER_RT OPENMP
|
||||
OPTIONS_DEFINE_powerpc64= OPENMP
|
||||
|
@ -106,6 +106,9 @@ DOCS_CMAKE_ON= -DLLVM_ENABLE_SPHINX=ON \
|
|||
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
|
||||
-DLLVM_BUILD_DOCS=ON
|
||||
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_EXTRA_PATCHES= ${PATCHDIR}/extras
|
||||
EXTRAS_IMPLIES= CLANG
|
||||
|
@ -217,6 +220,11 @@ EXTRAS_PATTERN= ${EXTRAS_COMMANDS:tW:C/ */|/g}|${EXTRAS_LIBS:tW:C/ */|/g}
|
|||
|
||||
.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
|
||||
# ----------- start of sync block ------------------
|
||||
# Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it.
|
||||
|
@ -238,7 +246,7 @@ COMMANDS+= ${CLANG_COMMANDS}
|
|||
MAN1SRCS+= clang.1 \
|
||||
diagtool.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 \
|
||||
tools/clang/tools/clang-format/clang-format-diff.py \
|
||||
tools/clang/tools/clang-format/git-clang-format \
|
||||
|
@ -536,7 +544,7 @@ post-install-LIT-on:
|
|||
${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
|
||||
|
||||
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)'
|
||||
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_log_interface.h
|
||||
%%COMPILER_RT%%llvm%%LLVM_SUFFIX%%/include/xray/xray_records.h
|
||||
llvm%%LLVM_SUFFIX%%/lib/CheckerDependencyHandlingAnalyzerPlugin.so
|
||||
llvm%%LLVM_SUFFIX%%/lib/CheckerOptionHandlingAnalyzerPlugin.so
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/CheckerDependencyHandlingAnalyzerPlugin.so
|
||||
%%CLANG%%llvm%%LLVM_SUFFIX%%/lib/CheckerOptionHandlingAnalyzerPlugin.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_cmath.h
|
||||
%%CLANG%%%%OPENMP%%llvm%%LLVM_SUFFIX%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_complex_builtins.h
|
||||
|
|
Loading…
Reference in a new issue