llvm-3.4-r1 added
This commit is contained in:
parent
9e32d036c8
commit
288681b7f7
|
@ -0,0 +1,29 @@
|
|||
diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
|
||||
--- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-24 03:32:31.593191000 -0400
|
||||
+++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp 2012-05-24 03:38:31.733163513 -0400
|
||||
@@ -1145,6 +1145,25 @@ Generic_GCC::GCCInstallationDetector::GC
|
||||
Prefixes.push_back(D.InstalledDir + "/..");
|
||||
}
|
||||
|
||||
+ llvm::OwningPtr<llvm::MemoryBuffer> File;
|
||||
+ for (unsigned k = 0, ke = CandidateTripleAliases.size(); k < ke; ++k) {
|
||||
+ if (!llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + CandidateTripleAliases[k].str(), File))
|
||||
+ {
|
||||
+ bool Exists;
|
||||
+ const std::string VersionText = File.get()->getBuffer().rsplit('-').second.substr(0,5).str();
|
||||
+ const std::string GentooPath = D.SysRoot + "/usr/lib/gcc/" + CandidateTripleAliases[k].str() + "/" + VersionText;
|
||||
+ if (!llvm::sys::fs::exists(GentooPath + "/crtbegin.o", Exists) && Exists)
|
||||
+ {
|
||||
+ Version = GCCVersion::Parse(VersionText);
|
||||
+ GCCInstallPath = GentooPath;
|
||||
+ GCCParentLibPath = GCCInstallPath + "/../../..";
|
||||
+ GCCTriple.setTriple(CandidateTripleAliases[k]);
|
||||
+ IsValid = true;
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
// Loop over the various components which exist and select the best GCC
|
||||
// installation available. GCC installs are ranked by version number.
|
||||
Version = GCCVersion::Parse("0.0.0");
|
|
@ -0,0 +1,71 @@
|
|||
From 1a539a8868070e49966c6b5f5e4b9f1257acd7dc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <gentoo@mgorny.alt.pl>
|
||||
Date: Fri, 19 Jul 2013 10:23:57 +0200
|
||||
Subject: [PATCH] clang gentoo install
|
||||
|
||||
---
|
||||
tools/clang/lib/Driver/Tools.cpp | 4 ++--
|
||||
tools/clang/tools/scan-build/scan-build | 4 ++--
|
||||
tools/clang/tools/scan-view/scan-view | 2 +-
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/tools/clang/lib/Driver/Tools.cpp b/tools/clang/lib/Driver/Tools.cpp
|
||||
index e014980..6e60513 100644
|
||||
--- a/tools/clang/lib/Driver/Tools.cpp
|
||||
+++ b/tools/clang/lib/Driver/Tools.cpp
|
||||
@@ -219,7 +219,7 @@ static void addProfileRT(const ToolChain &TC, const ArgList &Args,
|
||||
// libprofile_rt.so. We used to use the -l:libprofile_rt.a syntax, but that is
|
||||
// not supported by old linkers.
|
||||
std::string ProfileRT =
|
||||
- std::string(TC.getDriver().Dir) + "/../lib/libprofile_rt.a";
|
||||
+ "-l:libprofile_rt.a";
|
||||
|
||||
CmdArgs.push_back(Args.MakeArgString(ProfileRT));
|
||||
}
|
||||
@@ -6177,7 +6177,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
|
||||
// forward.
|
||||
if (D.IsUsingLTO(Args) || Args.hasArg(options::OPT_use_gold_plugin)) {
|
||||
CmdArgs.push_back("-plugin");
|
||||
- std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so";
|
||||
+ std::string Plugin = ToolChain.getDriver().Dir + "/../@libdir@/LLVMgold.so";
|
||||
CmdArgs.push_back(Args.MakeArgString(Plugin));
|
||||
|
||||
// Try to pass driver level flags relevant to LTO code generation down to
|
||||
diff --git a/tools/clang/tools/scan-build/scan-build b/tools/clang/tools/scan-build/scan-build
|
||||
index 22d5289..dcb4822 100755
|
||||
--- a/tools/clang/tools/scan-build/scan-build
|
||||
+++ b/tools/clang/tools/scan-build/scan-build
|
||||
@@ -410,7 +410,7 @@ sub CopyFiles {
|
||||
|
||||
my $Dir = shift;
|
||||
|
||||
- my $JS = Cwd::realpath("$RealBin/sorttable.js");
|
||||
+ my $JS = Cwd::realpath("@EPREFIX@/usr/share/llvm/sorttable.js");
|
||||
|
||||
DieDiag("Cannot find 'sorttable.js'.\n")
|
||||
if (! -r $JS);
|
||||
@@ -420,7 +420,7 @@ sub CopyFiles {
|
||||
DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
|
||||
if (! -r "$Dir/sorttable.js");
|
||||
|
||||
- my $CSS = Cwd::realpath("$RealBin/scanview.css");
|
||||
+ my $CSS = Cwd::realpath("@EPREFIX@/usr/share/llvm/scanview.css");
|
||||
|
||||
DieDiag("Cannot find 'scanview.css'.\n")
|
||||
if (! -r $CSS);
|
||||
diff --git a/tools/clang/tools/scan-view/scan-view b/tools/clang/tools/scan-view/scan-view
|
||||
index fb27da6..1f8ddb8 100755
|
||||
--- a/tools/clang/tools/scan-view/scan-view
|
||||
+++ b/tools/clang/tools/scan-view/scan-view
|
||||
@@ -54,7 +54,7 @@ def start_browser(port, options):
|
||||
webbrowser.open(url)
|
||||
|
||||
def run(port, options, root):
|
||||
- import ScanView
|
||||
+ from clang import ScanView
|
||||
try:
|
||||
print 'Starting scan-view at: http://%s:%d'%(options.host,
|
||||
port)
|
||||
--
|
||||
1.8.3.2
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
--- docs/Makefile.orig 2012-04-30 17:00:01.000000000 +0200
|
||||
+++ docs/Makefile 2012-04-30 17:15:52.000000000 +0200
|
||||
@@ -52,11 +52,10 @@
|
||||
# 'make generated BUILD_FOR_WEBSITE=1'
|
||||
generated:: $(generated_targets)
|
||||
|
||||
-install-html: $(PROJ_OBJ_DIR)/html.tar.gz
|
||||
+install-html:
|
||||
$(Echo) Installing HTML documentation
|
||||
$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html
|
||||
$(Verb) $(DataInstall) $(HTML) $(DESTDIR)$(PROJ_docsdir)/html
|
||||
- $(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/html.tar.gz $(DESTDIR)$(PROJ_docsdir)
|
||||
|
||||
$(PROJ_OBJ_DIR)/html.tar.gz: $(HTML)
|
||||
$(Echo) Packaging HTML documentation
|
||||
@@ -68,12 +67,11 @@
|
||||
install-doxygen: doxygen
|
||||
$(Echo) Installing doxygen documentation
|
||||
$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html/doxygen
|
||||
- $(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/doxygen.tar.gz $(DESTDIR)$(PROJ_docsdir)
|
||||
$(Verb) cd $(PROJ_OBJ_DIR)/doxygen && \
|
||||
$(FIND) . -type f -exec \
|
||||
$(DataInstall) {} $(DESTDIR)$(PROJ_docsdir)/html/doxygen \;
|
||||
|
||||
-doxygen: regendoc $(PROJ_OBJ_DIR)/doxygen.tar.gz
|
||||
+doxygen: regendoc
|
||||
|
||||
regendoc:
|
||||
$(Echo) Building doxygen documentation
|
||||
@@ -99,7 +97,6 @@
|
||||
install-ocamldoc: ocamldoc
|
||||
$(Echo) Installing ocamldoc documentation
|
||||
$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/ocamldoc/html
|
||||
- $(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/ocamldoc.tar.gz $(DESTDIR)$(PROJ_docsdir)
|
||||
$(Verb) cd $(PROJ_OBJ_DIR)/ocamldoc && \
|
||||
$(FIND) . -type f -exec \
|
||||
$(DataInstall) {} $(DESTDIR)$(PROJ_docsdir)/ocamldoc/html \;
|
||||
@@ -109,7 +106,6 @@
|
||||
$(Verb) $(RM) -rf $(PROJ_OBJ_DIR)/ocamldoc.tar*
|
||||
$(Verb) $(TAR) cf $(PROJ_OBJ_DIR)/ocamldoc.tar ocamldoc
|
||||
$(Verb) $(GZIPBIN) $(PROJ_OBJ_DIR)/ocamldoc.tar
|
||||
- $(Verb) $(CP) $(PROJ_OBJ_DIR)/ocamldoc.tar.gz $(PROJ_OBJ_DIR)/ocamldoc/html/
|
||||
|
||||
regen-ocamldoc:
|
||||
$(Echo) Building ocamldoc documentation
|
|
@ -0,0 +1,24 @@
|
|||
--- cmake/modules/LLVMConfig.cmake.in.old 2013-12-30 14:40:54.888983600 +0100
|
||||
+++ cmake/modules/LLVMConfig.cmake.in 2013-12-30 14:44:15.448970509 +0100
|
||||
@@ -39,16 +39,10 @@
|
||||
set(LLVM_LIBRARY_DIRS ${LLVM_INSTALL_PREFIX}/lib)
|
||||
set(LLVM_DEFINITIONS "-D__STDC_LIMIT_MACROS" "-D__STDC_CONSTANT_MACROS")
|
||||
|
||||
-# We try to include using the current setting of CMAKE_MODULE_PATH,
|
||||
-# which suppossedly was filled by the user with the directory where
|
||||
-# this file was installed:
|
||||
-include( LLVM-Config OPTIONAL RESULT_VARIABLE LLVMCONFIG_INCLUDED )
|
||||
-
|
||||
-# If failed, we assume that this is an un-installed build:
|
||||
-if( NOT LLVMCONFIG_INCLUDED )
|
||||
- set(CMAKE_MODULE_PATH
|
||||
+# For some reasons without it it fails on Gentoo, see bug #496480
|
||||
+set(CMAKE_MODULE_PATH
|
||||
${CMAKE_MODULE_PATH}
|
||||
- "@LLVM_SOURCE_DIR@/cmake/modules")
|
||||
- include( LLVM-Config )
|
||||
-endif()
|
||||
+ "@LLVM_INSTALL_PREFIX@/share/llvm/cmake")
|
||||
+
|
||||
+include(LLVM-Config)
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
https://bugs.gentoo.org/show_bug.cgi?id=497298
|
||||
http://llvm.org/bugs/show_bug.cgi?id=18346
|
||||
|
||||
SVN revisions:
|
||||
http://llvm.org/viewvc/llvm-project?view=revision&revision=197503
|
||||
http://llvm.org/viewvc/llvm-project?view=revision&revision=197505
|
||||
http://llvm.org/viewvc/llvm-project?view=revision&revision=197520
|
||||
|
||||
diff -Naur llvm-3.4.orig/lib/Target/X86/X86ISelLowering.cpp llvm-3.4/lib/Target/X86/X86ISelLowering.cpp
|
||||
--- llvm-3.4.orig/lib/Target/X86/X86ISelLowering.cpp 2014-01-08 11:22:23.373060109 +0100
|
||||
+++ llvm-3.4/lib/Target/X86/X86ISelLowering.cpp 2014-01-08 11:23:58.517125907 +0100
|
||||
@@ -15226,9 +15226,15 @@
|
||||
MBB->addSuccessor(EndMBB);
|
||||
}
|
||||
|
||||
+ // Make sure the last operand is EFLAGS, which gets clobbered by the branch
|
||||
+ // that was just emitted, but clearly shouldn't be "saved".
|
||||
+ assert((MI->getNumOperands() <= 3 ||
|
||||
+ !MI->getOperand(MI->getNumOperands() - 1).isReg() ||
|
||||
+ MI->getOperand(MI->getNumOperands() - 1).getReg() == X86::EFLAGS)
|
||||
+ && "Expected last argument to be EFLAGS");
|
||||
unsigned MOVOpc = Subtarget->hasFp256() ? X86::VMOVAPSmr : X86::MOVAPSmr;
|
||||
// In the XMM save block, save all the XMM argument registers.
|
||||
- for (int i = 3, e = MI->getNumOperands(); i != e; ++i) {
|
||||
+ for (int i = 3, e = MI->getNumOperands() - 1; i != e; ++i) {
|
||||
int64_t Offset = (i - 3) * 16 + VarArgsFPOffset;
|
||||
MachineMemOperand *MMO =
|
||||
F->getMachineMemOperand(
|
||||
diff -Naur llvm-3.4.orig/lib/Target/X86/X86InstrCompiler.td llvm-3.4/lib/Target/X86/X86InstrCompiler.td
|
||||
--- llvm-3.4.orig/lib/Target/X86/X86InstrCompiler.td 2014-01-08 11:22:23.374060109 +0100
|
||||
+++ llvm-3.4/lib/Target/X86/X86InstrCompiler.td 2014-01-08 11:23:39.654112857 +0100
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
|
||||
// x86-64 va_start lowering magic.
|
||||
-let usesCustomInserter = 1 in {
|
||||
+let usesCustomInserter = 1, Defs = [EFLAGS] in {
|
||||
def VASTART_SAVE_XMM_REGS : I<0, Pseudo,
|
||||
(outs),
|
||||
(ins GR8:$al,
|
||||
@@ -81,7 +81,8 @@
|
||||
"#VASTART_SAVE_XMM_REGS $al, $regsavefi, $offset",
|
||||
[(X86vastart_save_xmm_regs GR8:$al,
|
||||
imm:$regsavefi,
|
||||
- imm:$offset)]>;
|
||||
+ imm:$offset),
|
||||
+ (implicit EFLAGS)]>;
|
||||
|
||||
// The VAARG_64 pseudo-instruction takes the address of the va_list,
|
||||
// and places the address of the next argument into a register.
|
||||
diff -Naur llvm-3.4.orig/test/CodeGen/X86/vaargs.ll llvm-3.4/test/CodeGen/X86/vaargs.ll
|
||||
--- llvm-3.4.orig/test/CodeGen/X86/vaargs.ll 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ llvm-3.4/test/CodeGen/X86/vaargs.ll 2014-01-08 11:23:53.451122402 +0100
|
||||
@@ -0,0 +1,67 @@
|
||||
+; RUN: llc -mcpu=corei7-avx %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=NO-FLAGS
|
||||
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
+target triple = "x86_64-apple-macosx10.9.0"
|
||||
+
|
||||
+%struct.__va_list_tag = type { i32, i32, i8*, i8* }
|
||||
+
|
||||
+; Check that vastart gets the right thing.
|
||||
+define i32 @sum(i32 %count, ...) nounwind optsize ssp uwtable {
|
||||
+; CHECK: testb %al, %al
|
||||
+; CHECK-NEXT: je
|
||||
+; CHECK-NEXT: ## BB#{{[0-9]+}}:
|
||||
+; CHECK-NEXT: vmovaps %xmm0, 48(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm1, 64(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm2, 80(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm3, 96(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm4, 112(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm5, 128(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm6, 144(%rsp)
|
||||
+; CHECK-NEXT: vmovaps %xmm7, 160(%rsp)
|
||||
+
|
||||
+; Check that [EFLAGS] hasn't been pulled in.
|
||||
+; NO-FLAGS-NOT: %flags
|
||||
+
|
||||
+ %ap = alloca [1 x %struct.__va_list_tag], align 16
|
||||
+ %1 = bitcast [1 x %struct.__va_list_tag]* %ap to i8*
|
||||
+ call void @llvm.va_start(i8* %1)
|
||||
+ %2 = icmp sgt i32 %count, 0
|
||||
+ br i1 %2, label %.lr.ph, label %._crit_edge
|
||||
+
|
||||
+.lr.ph: ; preds = %0
|
||||
+ %3 = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i64 0, i64 0, i32 0
|
||||
+ %4 = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i64 0, i64 0, i32 2
|
||||
+ %.pre = load i32* %3, align 16
|
||||
+ br label %5
|
||||
+
|
||||
+; <label>:5 ; preds = %.lr.ph, %13
|
||||
+ %6 = phi i32 [ %.pre, %.lr.ph ], [ %14, %13 ]
|
||||
+ %.01 = phi i32 [ %count, %.lr.ph ], [ %15, %13 ]
|
||||
+ %7 = icmp ult i32 %6, 41
|
||||
+ br i1 %7, label %8, label %10
|
||||
+
|
||||
+; <label>:8 ; preds = %5
|
||||
+ %9 = add i32 %6, 8
|
||||
+ store i32 %9, i32* %3, align 16
|
||||
+ br label %13
|
||||
+
|
||||
+; <label>:10 ; preds = %5
|
||||
+ %11 = load i8** %4, align 8
|
||||
+ %12 = getelementptr i8* %11, i64 8
|
||||
+ store i8* %12, i8** %4, align 8
|
||||
+ br label %13
|
||||
+
|
||||
+; <label>:13 ; preds = %10, %8
|
||||
+ %14 = phi i32 [ %6, %10 ], [ %9, %8 ]
|
||||
+ %15 = add nsw i32 %.01, 1
|
||||
+ %16 = icmp sgt i32 %15, 0
|
||||
+ br i1 %16, label %5, label %._crit_edge
|
||||
+
|
||||
+._crit_edge: ; preds = %13, %0
|
||||
+ %.0.lcssa = phi i32 [ %count, %0 ], [ %15, %13 ]
|
||||
+ call void @llvm.va_end(i8* %1)
|
||||
+ ret i32 %.0.lcssa
|
||||
+}
|
||||
+
|
||||
+declare void @llvm.va_start(i8*) nounwind
|
||||
+
|
||||
+declare void @llvm.va_end(i8*) nounwind
|
||||
diff -Naur llvm-3.4.orig/test/CodeGen/X86/vastart-defs-eflags.ll llvm-3.4/test/CodeGen/X86/vastart-defs-eflags.ll
|
||||
--- llvm-3.4.orig/test/CodeGen/X86/vastart-defs-eflags.ll 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ llvm-3.4/test/CodeGen/X86/vastart-defs-eflags.ll 2014-01-08 11:23:39.654112857 +0100
|
||||
@@ -0,0 +1,23 @@
|
||||
+; RUN: llc %s -o - | FileCheck %s
|
||||
+
|
||||
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
+target triple = "x86_64-apple-macosx10.10.0"
|
||||
+
|
||||
+; Check that vastart handling doesn't get between testb and je for the branch.
|
||||
+define i32 @check_flag(i32 %flags, ...) nounwind {
|
||||
+entry:
|
||||
+; CHECK: {{^}} testb $2, %bh
|
||||
+; CHECK-NOT: test
|
||||
+; CHECK: {{^}} je
|
||||
+ %and = and i32 %flags, 512
|
||||
+ %tobool = icmp eq i32 %and, 0
|
||||
+ br i1 %tobool, label %if.end, label %if.then
|
||||
+
|
||||
+if.then: ; preds = %entry
|
||||
+ br label %if.end
|
||||
+
|
||||
+if.end: ; preds = %entry, %if.then
|
||||
+ %hasflag = phi i32 [ 1, %if.then ], [ 0, %entry ]
|
||||
+ ret i32 %hasflag
|
||||
+}
|
||||
+
|
|
@ -0,0 +1,96 @@
|
|||
From b8846d389ff5e2b768a114f752cf39788accba26 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
|
||||
Date: Mon, 19 Aug 2013 13:22:46 +0200
|
||||
Subject: [PATCH] gentoo install fixes
|
||||
|
||||
---
|
||||
Makefile.config.in | 6 +++---
|
||||
Makefile.rules | 6 +++---
|
||||
tools/llvm-config/BuildVariables.inc.in | 2 ++
|
||||
tools/llvm-config/Makefile | 4 ++++
|
||||
tools/llvm-config/llvm-config.cpp | 5 +++--
|
||||
utils/FileCheck/Makefile | 2 +-
|
||||
7 files changed, 17 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/Makefile.config.in b/Makefile.config.in
|
||||
index dcca45f..e75ae2e 100644
|
||||
--- a/Makefile.config.in
|
||||
+++ b/Makefile.config.in
|
||||
@@ -95,10 +95,10 @@ PROJ_internal_prefix := $(prefix)
|
||||
endif
|
||||
|
||||
PROJ_bindir := $(PROJ_prefix)/bin
|
||||
-PROJ_libdir := $(PROJ_prefix)/lib
|
||||
+PROJ_libdir := $(PROJ_prefix)/$(GENTOO_LIBDIR)
|
||||
PROJ_datadir := $(PROJ_prefix)/share
|
||||
-PROJ_docsdir := $(PROJ_prefix)/docs/llvm
|
||||
-PROJ_etcdir := $(PROJ_prefix)/etc/llvm
|
||||
+PROJ_docsdir := $(PROJ_prefix)/share/doc/@PF@
|
||||
+PROJ_etcdir := @EPREFIX@/etc/llvm
|
||||
PROJ_includedir := $(PROJ_prefix)/include
|
||||
PROJ_infodir := $(PROJ_prefix)/info
|
||||
PROJ_mandir := $(PROJ_prefix)/share/man
|
||||
diff --git a/Makefile.rules b/Makefile.rules
|
||||
index e53598b..217f754 100644
|
||||
--- a/Makefile.rules
|
||||
+++ b/Makefile.rules
|
||||
@@ -275,7 +275,7 @@ ifeq ($(ENABLE_OPTIMIZED),1)
|
||||
BuildMode := Release
|
||||
# Don't use -fomit-frame-pointer on Darwin or FreeBSD.
|
||||
ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin Darwin DragonFly FreeBSD GNU/kFreeBSD))
|
||||
- OmitFramePointer := -fomit-frame-pointer
|
||||
+ OmitFramePointer :=
|
||||
endif
|
||||
|
||||
CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer)
|
||||
diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
|
||||
index fe87afb..fd9f2c6 100644
|
||||
--- a/tools/llvm-config/BuildVariables.inc.in
|
||||
+++ b/tools/llvm-config/BuildVariables.inc.in
|
||||
@@ -25,3 +25,4 @@
|
||||
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
|
||||
#define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
|
||||
#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
|
||||
+#define LLVM_LIBDIR "@LLVM_LIBDIR@"
|
||||
diff --git a/tools/llvm-config/Makefile b/tools/llvm-config/Makefile
|
||||
index b20b6bf..fc56781 100644
|
||||
--- a/tools/llvm-config/Makefile
|
||||
+++ b/tools/llvm-config/Makefile
|
||||
@@ -55,6 +55,8 @@ $(ObjDir)/BuildVariables.inc: $(BUILDVARIABLES_SRCPATH) Makefile $(ObjDir)/.dir
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_TARGETS_BUILT@/$(subst /,\/,$(TARGETS_TO_BUILD))/' \
|
||||
>> temp.sed
|
||||
+ $(Verb) $(ECHO) 's/@LLVM_LIBDIR@/$(subst /,\/,$(GENTOO_LIBDIR))/' \
|
||||
+ >> temp.sed
|
||||
$(Verb) $(SED) -f temp.sed < $< > $@
|
||||
$(Verb) $(RM) temp.sed
|
||||
|
||||
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
|
||||
index 3924e2e..f439c60 100644
|
||||
--- a/tools/llvm-config/llvm-config.cpp
|
||||
+++ b/tools/llvm-config/llvm-config.cpp
|
||||
@@ -250,7 +250,7 @@ int main(int argc, char **argv) {
|
||||
ActivePrefix = CurrentExecPrefix;
|
||||
ActiveIncludeDir = ActivePrefix + "/include";
|
||||
ActiveBinDir = ActivePrefix + "/bin";
|
||||
- ActiveLibDir = ActivePrefix + "/lib";
|
||||
+ ActiveLibDir = ActivePrefix + "/" LLVM_LIBDIR;
|
||||
ActiveIncludeOption = "-I" + ActiveIncludeDir;
|
||||
}
|
||||
|
||||
diff --git a/utils/FileCheck/Makefile b/utils/FileCheck/Makefile
|
||||
index 268b7bc..e7674f9 100644
|
||||
--- a/utils/FileCheck/Makefile
|
||||
+++ b/utils/FileCheck/Makefile
|
||||
@@ -15,7 +15,7 @@ USEDLIBS = LLVMSupport.a
|
||||
TOOL_NO_EXPORTS = 1
|
||||
|
||||
# Don't install this utility
|
||||
-NO_INSTALL = 1
|
||||
+#NO_INSTALL = 1
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
--
|
||||
1.8.4.2
|
||||
|
|
@ -0,0 +1,512 @@
|
|||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-devel/llvm/llvm-3.4-r1.ebuild,v 1.1 2014/04/02 23:24:29 hasufell Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
PYTHON_COMPAT=( python{2_6,2_7} pypy pypy2_0 )
|
||||
|
||||
inherit cmake-utils eutils flag-o-matic multilib multilib-minimal \
|
||||
python-r1 toolchain-funcs pax-utils check-reqs
|
||||
|
||||
DESCRIPTION="Low Level Virtual Machine"
|
||||
HOMEPAGE="http://llvm.org/"
|
||||
SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.gz
|
||||
clang? ( http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.gz
|
||||
http://llvm.org/releases/${PV}/clang-${PV}.src.tar.gz
|
||||
http://llvm.org/releases/${PV}/clang-tools-extra-${PV}.src.tar.gz )
|
||||
!doc? ( http://dev.gentoo.org/~mgorny/dist/${P}-manpages.tar.bz2 )"
|
||||
|
||||
LICENSE="UoI-NCSA"
|
||||
SLOT="0/${PV}"
|
||||
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos"
|
||||
IUSE="clang debug doc gold +libffi multitarget ncurses ocaml python
|
||||
+static-analyzer test udis86 xml video_cards_radeon
|
||||
kernel_Darwin kernel_FreeBSD"
|
||||
|
||||
COMMON_DEPEND="
|
||||
sys-libs/zlib:0=
|
||||
clang? (
|
||||
python? ( ${PYTHON_DEPS} )
|
||||
static-analyzer? (
|
||||
dev-lang/perl:*
|
||||
${PYTHON_DEPS}
|
||||
)
|
||||
xml? ( dev-libs/libxml2:2= )
|
||||
)
|
||||
gold? ( >=sys-devel/binutils-2.22:*[cxx] )
|
||||
libffi? ( virtual/libffi:0=[${MULTILIB_USEDEP}] )
|
||||
ncurses? ( sys-libs/ncurses:5=[${MULTILIB_USEDEP}] )
|
||||
ocaml? ( dev-lang/ocaml:0= )
|
||||
udis86? ( dev-libs/udis86:0=[pic(+),${MULTILIB_USEDEP}] )"
|
||||
DEPEND="${COMMON_DEPEND}
|
||||
dev-lang/perl
|
||||
>=sys-devel/make-3.81
|
||||
>=sys-devel/flex-2.5.4
|
||||
>=sys-devel/bison-1.875d
|
||||
|| ( >=sys-devel/gcc-3.0 >=sys-devel/gcc-apple-4.2.1
|
||||
( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
|
||||
)
|
||||
|| ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-3.2.3 )
|
||||
clang? ( xml? ( virtual/pkgconfig ) )
|
||||
doc? ( dev-python/sphinx )
|
||||
libffi? ( virtual/pkgconfig )
|
||||
${PYTHON_DEPS}"
|
||||
RDEPEND="${COMMON_DEPEND}
|
||||
clang? ( !<=sys-devel/clang-3.4-r99
|
||||
!>=sys-devel/clang-9999 )
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2
|
||||
!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )"
|
||||
PDEPEND="clang? ( =sys-devel/clang-3.4-r100 )"
|
||||
|
||||
# pypy gives me around 1700 unresolved tests due to open file limit
|
||||
# being exceeded. probably GC does not close them fast enough.
|
||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}
|
||||
test? ( || ( $(python_gen_useflags 'python*') ) )"
|
||||
|
||||
# Some people actually override that in make.conf. That sucks since
|
||||
# we need to run install per-directory, and ninja can't do that...
|
||||
# so why did it call itself ninja in the first place?
|
||||
CMAKE_MAKEFILE_GENERATOR=emake
|
||||
|
||||
pkg_pretend() {
|
||||
# in megs
|
||||
# !clang !debug !multitarget -O2 400
|
||||
# !clang !debug multitarget -O2 550
|
||||
# clang !debug !multitarget -O2 950
|
||||
# clang !debug multitarget -O2 1200
|
||||
# !clang debug multitarget -O2 5G
|
||||
# clang !debug multitarget -O0 -g 12G
|
||||
# clang debug multitarget -O2 16G
|
||||
# clang debug multitarget -O0 -g 14G
|
||||
|
||||
local build_size=550
|
||||
use clang && build_size=1200
|
||||
|
||||
if use debug; then
|
||||
ewarn "USE=debug is known to increase the size of package considerably"
|
||||
ewarn "and cause the tests to fail."
|
||||
ewarn
|
||||
|
||||
(( build_size *= 14 ))
|
||||
elif is-flagq -g || is-flagq -ggdb; then
|
||||
ewarn "The C++ compiler -g option is known to increase the size of the package"
|
||||
ewarn "considerably. If you run out of space, please consider removing it."
|
||||
ewarn
|
||||
|
||||
(( build_size *= 10 ))
|
||||
fi
|
||||
|
||||
# Multiply by number of ABIs :).
|
||||
local abis=( $(multilib_get_enabled_abis) )
|
||||
(( build_size *= ${#abis[@]} ))
|
||||
|
||||
local CHECKREQS_DISK_BUILD=${build_size}M
|
||||
check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
pkg_pretend
|
||||
|
||||
# need to check if the active compiler is ok
|
||||
|
||||
broken_gcc=( 3.2.2 3.2.3 3.3.2 4.1.1 )
|
||||
broken_gcc_x86=( 3.4.0 3.4.2 )
|
||||
broken_gcc_amd64=( 3.4.6 )
|
||||
|
||||
gcc_vers=$(gcc-fullversion)
|
||||
|
||||
if has "${gcc_vers}" "${broken_gcc[@]}"; then
|
||||
elog "Your version of gcc is known to miscompile llvm."
|
||||
elog "Check http://www.llvm.org/docs/GettingStarted.html for"
|
||||
elog "possible solutions."
|
||||
die "Your currently active version of gcc is known to miscompile llvm"
|
||||
fi
|
||||
|
||||
if use abi_x86_32 && has "${gcc_vers}" "${broken_gcc_x86[@]}"; then
|
||||
elog "Your version of gcc is known to miscompile llvm on x86"
|
||||
elog "architectures. Check"
|
||||
elog "http://www.llvm.org/docs/GettingStarted.html for possible"
|
||||
elog "solutions."
|
||||
die "Your currently active version of gcc is known to miscompile llvm"
|
||||
fi
|
||||
|
||||
if use abi_x86_64 && has "${gcc_vers}" "${broken_gcc_amd64[@]}"; then
|
||||
elog "Your version of gcc is known to miscompile llvm in amd64"
|
||||
elog "architectures. Check"
|
||||
elog "http://www.llvm.org/docs/GettingStarted.html for possible"
|
||||
elog "solutions."
|
||||
die "Your currently active version of gcc is known to miscompile llvm"
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
default
|
||||
|
||||
rm -f "${S}"/tools/clang "${S}"/projects/compiler-rt \
|
||||
|| die "symlinks removal failed"
|
||||
|
||||
if use clang; then
|
||||
mv "${WORKDIR}"/clang-${PV} "${S}"/tools/clang \
|
||||
|| die "clang source directory move failed"
|
||||
mv "${WORKDIR}"/compiler-rt-${PV} "${S}"/projects/compiler-rt \
|
||||
|| die "compiler-rt source directory move failed"
|
||||
mv "${WORKDIR}"/clang-tools-extra-${PV} "${S}"/tools/clang/tools/extra \
|
||||
|| die "clang-tools-extra source directory move failed"
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}"/${P}-fix_varargs.patch
|
||||
|
||||
epatch "${FILESDIR}"/${PN}-3.2-nodoctargz.patch
|
||||
epatch "${FILESDIR}"/${PN}-3.4-gentoo-install.patch
|
||||
# Hack cmake search path for Gentoo, bug #496480
|
||||
epatch "${FILESDIR}"/${PN}-3.3-cmake-modulepath.patch
|
||||
|
||||
if use clang; then
|
||||
# Automatically select active system GCC's libraries, bugs #406163 and #417913
|
||||
epatch "${FILESDIR}"/clang-3.1-gentoo-runtime-gcc-detection-v3.patch
|
||||
|
||||
epatch "${FILESDIR}"/clang-3.4-gentoo-install.patch
|
||||
fi
|
||||
|
||||
local sub_files=(
|
||||
Makefile.config.in
|
||||
Makefile.rules
|
||||
tools/llvm-config/llvm-config.cpp
|
||||
)
|
||||
use clang && sub_files+=(
|
||||
tools/clang/lib/Driver/Tools.cpp
|
||||
tools/clang/tools/scan-build/scan-build
|
||||
)
|
||||
|
||||
# unfortunately ./configure won't listen to --mandir and the-like, so take
|
||||
# care of this.
|
||||
# note: we're setting the main libdir intentionally.
|
||||
# where per-ABI is appropriate, we use $(GENTOO_LIBDIR) make.
|
||||
einfo "Fixing install dirs"
|
||||
sed -e "s,@libdir@,$(get_libdir),g" \
|
||||
-e "s,@PF@,${PF},g" \
|
||||
-e "s,@EPREFIX@,${EPREFIX},g" \
|
||||
-i "${sub_files[@]}" \
|
||||
|| die "install paths sed failed"
|
||||
|
||||
# User patches
|
||||
epatch_user
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
# disable timestamps since they confuse ccache
|
||||
local conf_flags=(
|
||||
--disable-timestamps
|
||||
--enable-keep-symbols
|
||||
--enable-shared
|
||||
--with-optimize-option=
|
||||
$(use_enable !debug optimized)
|
||||
$(use_enable debug assertions)
|
||||
$(use_enable debug expensive-checks)
|
||||
$(use_enable ncurses terminfo)
|
||||
$(use_enable libffi)
|
||||
)
|
||||
|
||||
if use clang; then
|
||||
conf_flags+=( --with-clang-resource-dir=../lib/clang/${PV} )
|
||||
fi
|
||||
# well, it's used only by clang executable c-index-test
|
||||
if multilib_build_binaries && use clang && use xml; then
|
||||
conf_flags+=( XML2CONFIG="$(tc-getPKG_CONFIG) libxml-2.0" )
|
||||
else
|
||||
conf_flags+=( ac_cv_prog_XML2CONFIG="" )
|
||||
fi
|
||||
|
||||
local targets bindings
|
||||
if use multitarget; then
|
||||
targets='all'
|
||||
else
|
||||
targets='host,cpp'
|
||||
use video_cards_radeon && targets+=',r600'
|
||||
fi
|
||||
conf_flags+=( --enable-targets=${targets} )
|
||||
|
||||
if multilib_build_binaries; then
|
||||
use gold && conf_flags+=( --with-binutils-include="${EPREFIX}"/usr/include/ )
|
||||
# extra commas don't hurt
|
||||
use ocaml && bindings+=',ocaml'
|
||||
fi
|
||||
|
||||
[[ ${bindings} ]] || bindings='none'
|
||||
conf_flags+=( --enable-bindings=${bindings} )
|
||||
|
||||
if use udis86; then
|
||||
conf_flags+=( --with-udis86 )
|
||||
fi
|
||||
|
||||
if use libffi; then
|
||||
local CPPFLAGS=${CPPFLAGS}
|
||||
append-cppflags "$(pkg-config --cflags libffi)"
|
||||
fi
|
||||
|
||||
# build with a suitable Python version
|
||||
python_export_best
|
||||
|
||||
# llvm prefers clang over gcc, so we may need to force that
|
||||
tc-export CC CXX
|
||||
|
||||
ECONF_SOURCE=${S} \
|
||||
econf "${conf_flags[@]}"
|
||||
|
||||
multilib_build_binaries && cmake_configure
|
||||
}
|
||||
|
||||
cmake_configure() {
|
||||
# sadly, cmake doesn't seem to have host autodetection
|
||||
# but it's fairly easy to steal this from configured autotools
|
||||
local targets=$(sed -n -e 's/^TARGETS_TO_BUILD=//p' Makefile.config || die)
|
||||
local libdir=$(get_libdir)
|
||||
local mycmakeargs=(
|
||||
# just the stuff needed to get correct cmake modules
|
||||
$(cmake-utils_use ncurses LLVM_ENABLE_TERMINFO)
|
||||
|
||||
-DLLVM_TARGETS_TO_BUILD="${targets// /;}"
|
||||
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
|
||||
)
|
||||
|
||||
BUILD_DIR=${S%/}_cmake \
|
||||
cmake-utils_src_configure
|
||||
}
|
||||
|
||||
set_makeargs() {
|
||||
MAKEARGS=(
|
||||
VERBOSE=1
|
||||
REQUIRES_RTTI=1
|
||||
GENTOO_LIBDIR=$(get_libdir)
|
||||
)
|
||||
|
||||
# for tests, we want it all! otherwise, we may use a little filtering...
|
||||
# adding ONLY_TOOLS also disables unittest building...
|
||||
if [[ ${EBUILD_PHASE_FUNC} != src_test ]]; then
|
||||
local tools=( llvm-config )
|
||||
use clang && tools+=( clang )
|
||||
|
||||
if multilib_build_binaries; then
|
||||
tools+=(
|
||||
opt llvm-as llvm-dis llc llvm-ar llvm-nm llvm-link lli
|
||||
llvm-extract llvm-mc llvm-bcanalyzer llvm-diff macho-dump
|
||||
llvm-objdump llvm-readobj llvm-rtdyld llvm-dwarfdump llvm-cov
|
||||
llvm-size llvm-stress llvm-mcmarkup llvm-symbolizer obj2yaml
|
||||
yaml2obj lto bugpoint
|
||||
)
|
||||
|
||||
# the build system runs explicitly specified tools in parallel,
|
||||
# so we need to split it into two runs
|
||||
if [[ ${1} != -1 ]]; then
|
||||
# those require lto
|
||||
tools+=( llvm-lto )
|
||||
use gold && tools+=( gold )
|
||||
|
||||
# those require clang :)
|
||||
# we need to explicitly specify all its tools
|
||||
# since we're passing BUILD_CLANG_ONLY
|
||||
use clang && tools+=(
|
||||
clang/tools/{clang-check,clang-format,extra}
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
MAKEARGS+=(
|
||||
# filter tools + disable unittests implicitly
|
||||
ONLY_TOOLS="${tools[*]}"
|
||||
|
||||
# this disables unittests & docs from clang
|
||||
BUILD_CLANG_ONLY=YES
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
local MAKEARGS
|
||||
set_makeargs -1
|
||||
emake "${MAKEARGS[@]}"
|
||||
|
||||
if multilib_build_binaries; then
|
||||
set_makeargs
|
||||
emake -C tools "${MAKEARGS[@]}"
|
||||
|
||||
if use doc; then
|
||||
emake -C "${S}"/docs -f Makefile.sphinx man
|
||||
use clang && emake -C "${S}"/tools/clang/docs/tools \
|
||||
BUILD_FOR_WEBSITE=1 DST_MAN_DIR="${T}"/ man
|
||||
emake -C "${S}"/docs -f Makefile.sphinx html
|
||||
fi
|
||||
fi
|
||||
|
||||
if use debug; then
|
||||
pax-mark m Debug+Asserts+Checks/bin/llvm-rtdyld
|
||||
pax-mark m Debug+Asserts+Checks/bin/lli
|
||||
else
|
||||
pax-mark m Release/bin/llvm-rtdyld
|
||||
pax-mark m Release/bin/lli
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
local MAKEARGS
|
||||
set_makeargs
|
||||
|
||||
# build the remaining tools & unittests
|
||||
emake "${MAKEARGS[@]}"
|
||||
|
||||
pax-mark m unittests/ExecutionEngine/JIT/Release/JITTests
|
||||
pax-mark m unittests/ExecutionEngine/MCJIT/Release/MCJITTests
|
||||
pax-mark m unittests/Support/Release/SupportTests
|
||||
|
||||
# respect TMPDIR!
|
||||
local -x LIT_PRESERVES_TMP=1
|
||||
emake "${MAKEARGS[@]}" check
|
||||
use clang && emake "${MAKEARGS[@]}" -C tools/clang test
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/llvm/Config/config.h
|
||||
/usr/include/llvm/Config/llvm-config.h
|
||||
)
|
||||
|
||||
use clang && MULTILIB_WRAPPED_HEADERS+=(
|
||||
/usr/include/clang/Config/config.h
|
||||
)
|
||||
|
||||
multilib-minimal_src_install
|
||||
|
||||
# Remove unnecessary headers on FreeBSD, bug #417171
|
||||
use kernel_FreeBSD && use clang && rm "${ED}"usr/lib/clang/${PV}/include/{std,float,iso,limits,tgmath,varargs}*.h
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
local MAKEARGS
|
||||
set_makeargs
|
||||
|
||||
emake "${MAKEARGS[@]}" DESTDIR="${D}" install
|
||||
|
||||
# Preserve ABI-variant of llvm-config.
|
||||
dodir /tmp
|
||||
mv "${ED}"/usr/bin/llvm-config "${ED}"/tmp/"${CHOST}"-llvm-config || die
|
||||
|
||||
if ! multilib_build_binaries; then
|
||||
# Drop all the executables since LLVM doesn't like to
|
||||
# clobber when installing.
|
||||
rm -r "${ED}"/usr/bin || die
|
||||
|
||||
# Backwards compat, will be happily removed someday.
|
||||
dosym "${CHOST}"-llvm-config /tmp/llvm-config.${ABI}
|
||||
else
|
||||
# Move files back.
|
||||
mv "${ED}"/tmp/*llvm-config* "${ED}"/usr/bin || die
|
||||
# Create a symlink for host's llvm-config.
|
||||
dosym "${CHOST}"-llvm-config /usr/bin/llvm-config
|
||||
|
||||
# Install docs.
|
||||
if use doc; then
|
||||
doman "${S}"/docs/_build/man/*.1
|
||||
use clang && doman "${T}"/clang.1
|
||||
dohtml -r "${S}"/docs/_build/html/
|
||||
else
|
||||
if ! use clang; then
|
||||
rm "${WORKDIR}"/${P}-manpages/clang.1 || die
|
||||
fi
|
||||
doman "${WORKDIR}"/${P}-manpages/*.1
|
||||
fi
|
||||
|
||||
# Symlink the gold plugin.
|
||||
if use gold; then
|
||||
dodir /usr/${CHOST}/binutils-bin/lib/bfd-plugins
|
||||
dosym ../../../../$(get_libdir)/LLVMgold.so \
|
||||
/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so
|
||||
fi
|
||||
|
||||
# install cmake modules
|
||||
emake -C "${S%/}"_cmake/cmake/modules DESTDIR="${D}" install
|
||||
fi
|
||||
|
||||
# Fix install_names on Darwin. The build system is too complicated
|
||||
# to just fix this, so we correct it post-install
|
||||
local lib= f= odylib= libpv=${PV}
|
||||
if [[ ${CHOST} == *-darwin* ]] ; then
|
||||
eval $(grep PACKAGE_VERSION= configure)
|
||||
[[ -n ${PACKAGE_VERSION} ]] && libpv=${PACKAGE_VERSION}
|
||||
for lib in lib{EnhancedDisassembly,LLVM-${libpv},LTO,profile_rt,clang}.dylib LLVMHello.dylib ; do
|
||||
# libEnhancedDisassembly is Darwin10 only, so non-fatal
|
||||
# + omit clang libs if not enabled
|
||||
[[ -f ${ED}/usr/lib/${lib} ]] || continue
|
||||
|
||||
ebegin "fixing install_name of $lib"
|
||||
install_name_tool \
|
||||
-id "${EPREFIX}"/usr/lib/${lib} \
|
||||
"${ED}"/usr/lib/${lib}
|
||||
eend $?
|
||||
done
|
||||
for f in "${ED}"/usr/bin/* "${ED}"/usr/lib/lib{LTO,clang}.dylib ; do
|
||||
# omit clang libs if not enabled
|
||||
[[ -f ${ED}/usr/lib/${lib} ]] || continue
|
||||
|
||||
odylib=$(scanmacho -BF'%n#f' "${f}" | tr ',' '\n' | grep libLLVM-${libpv}.dylib)
|
||||
ebegin "fixing install_name reference to ${odylib} of ${f##*/}"
|
||||
install_name_tool \
|
||||
-change "${odylib}" \
|
||||
"${EPREFIX}"/usr/lib/libLLVM-${libpv}.dylib \
|
||||
-change "@rpath/libclang.dylib" \
|
||||
"${EPREFIX}"/usr/lib/libclang.dylib \
|
||||
-change "${S}"/Release/lib/libclang.dylib \
|
||||
"${EPREFIX}"/usr/lib/libclang.dylib \
|
||||
"${f}"
|
||||
eend $?
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
insinto /usr/share/vim/vimfiles/syntax
|
||||
doins utils/vim/*.vim
|
||||
|
||||
if use clang; then
|
||||
cd tools/clang || die
|
||||
|
||||
if use static-analyzer ; then
|
||||
dobin tools/scan-build/ccc-analyzer
|
||||
dosym ccc-analyzer /usr/bin/c++-analyzer
|
||||
dobin tools/scan-build/scan-build
|
||||
|
||||
insinto /usr/share/${PN}
|
||||
doins tools/scan-build/scanview.css
|
||||
doins tools/scan-build/sorttable.js
|
||||
fi
|
||||
|
||||
python_inst() {
|
||||
if use static-analyzer ; then
|
||||
pushd tools/scan-view >/dev/null || die
|
||||
|
||||
python_doscript scan-view
|
||||
|
||||
touch __init__.py || die
|
||||
python_moduleinto clang
|
||||
python_domodule __init__.py Reporter.py Resources ScanView.py startfile.py
|
||||
|
||||
popd >/dev/null || die
|
||||
fi
|
||||
|
||||
if use python ; then
|
||||
pushd bindings/python/clang >/dev/null || die
|
||||
|
||||
python_moduleinto clang
|
||||
python_domodule __init__.py cindex.py enumerations.py
|
||||
|
||||
popd >/dev/null || die
|
||||
fi
|
||||
|
||||
# AddressSanitizer symbolizer (currently separate)
|
||||
python_doscript "${S}"/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py
|
||||
}
|
||||
python_foreach_impl python_inst
|
||||
fi
|
||||
}
|
Loading…
Reference in New Issue