Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 535974
Collapse All | Expand All

(-)a/sys-devel/llvm/Manifest (+17 lines)
Line 0 Link Here
1
AUX clang-3.4-darwin_prefix-include-paths.patch 710 SHA256 f76311dfc5fa734a3a72fa516f695486595963824d5b6891fd1454d71c27fa0b SHA512 e130d7392b82ffc40ec96c0ee45d53cf032c761e00a7a2382af1f826e2a892b12069a7f5407307e1828fb741e522b8e10728d593d839e1b5648ccf9460feff0e WHIRLPOOL d2b24e224cb90be9615994d64af92b139325b2630cc43851370b8989d0eb7ee8f43ad421e3036041a30ec1fb30c1e3ddaf09d54f461484963a2bd8ea2fba24c6
2
AUX clang-3.5-gentoo-install.patch 2166 SHA256 e359a219f2d0d2b88094bbb5ab91fd50d9662686f77e85b7ccfb8d1c4a6fd39d SHA512 07e5b3d4131a7d58577bcb99a82c585258c98a38e71b7e8dda058b467a558471e1ddeec5c9f5492f5d17e280cd4b09e49338e0926dd2534583bc8a2772bce26d WHIRLPOOL 5582b2015b4d3e845a45bfda08c156683df11685170f253f79ccf016f2e771b016d213417d83068f01a41bd8e0148474711cd6f9b7187e758322e9ebb9c390dd
3
AUX clang-3.5-gentoo-runtime-gcc-detection-v3.patch 1694 SHA256 24691db819d08f87f0144a67900ae6797c0df4d180b55acc5c377d890ac2e72e SHA512 a34f694560ef0c7366ad0dc243a479afc74b6122d624b8681538da69c70d0d1869245a89c61d49add890c5f76134281470f5e75a59e6fc9ac963230fc56fe8e6 WHIRLPOOL 4f4af09e08c7d5af89558e77d0a2a4542f77ae505e9020ca6e48e20ef71c4db6016ed0211b2a303b756994f62949c91c216cc2f81b16ff65c71414d354977c8f
4
AUX llvm-3.2-nodoctargz.patch 1761 SHA256 e17494aef638d2fe3fb0b669516ffcc9e560161903e1e165de0eecba684c8c1b SHA512 d12a8996d8a1160f7bad4ce3b3a9ddfb2d29d91fc160876c145f9241927b0cf4413f3b29bc2bf291f0421f61a512de8057e8f3d0029a8a09ba3f1d93582723b5 WHIRLPOOL be273271db8293829a63120cfc917711c99d8893cae6f95af2583def735131f629ee67b5a1515df007477f34abeaf5f2729d689eefdc61eb3aae6b1959971507
5
AUX llvm-3.5-gcc-4.9.patch 1722 SHA256 c73f64311ff67534b581729b3ef0fecf452b86961c3b668ac2e6b50f1eff0bd2 SHA512 5ad0a742fca3eb9e08a183af9f90370baf85528bba6f3083d19592fe2a704950ca8c6bf9e930f9834255de3fc5832c49a06c9ca29a66e45928d9047abd9ad8ac WHIRLPOOL dac24fcb47d8b094ffa6b4403dbd7604901dd0f5ef6665a882380109584e4de815b2f277e05d44c05e1a3d22a7003075b2b2649f3f614f299b38bc6d594400ae
6
AUX llvm-3.5-gentoo-install.patch 3204 SHA256 0c97173613505ea92f0aa79d4e04e797f1917fdc33b34daee05752bb52336d53 SHA512 f60b04f1fc7798f7869f3d80e4c163086c398e01b81220d60ccff42be5899fa036d5ab95257933e89e4c5efd04267a09015917c6a617b86b82d7ab4f5d0de221 WHIRLPOOL 81ce5835b9eb1fe1b162f35d6e37762cc8d613e67c5791f078ecd0e354a87eb92e52452bd6e9a7f70953dabea99d197786e87ed64dc802223149b8e97d6de265
7
AUX llvm-3.5-musl-compiler-rt.patch 2404 SHA256 992e7be032cac68d05f686ad06bd8d8266f3f176e275322988871f05d69b5213 SHA512 406c7311d2341c8d635999b5276c1e69b0a0b77b15f55cead49239f513c1a5b06dd5023b552d1e4ede544841b6a7543bdd764ba3775dd792309732fc2a9cb056 WHIRLPOOL 5b2dbf6ff8cf39d698feba11e3b994c66623c50bdb5a30beb8e95bff2dd10e1580eb954041baba64784ba1d5b22d88f457f67b83dbef1b418f45214a4e78e88a
8
AUX llvm-3.5-musl-fixes.patch 3465 SHA256 e7ea600500b948bcf5d3eaad0664039b1cdfb27ece878f176b038a97c86183e5 SHA512 b5c5c6e25d7c15d5a014537e8b77d1f648bd3abb56aa1b1342849235e7887468d0b46031ac00115ee8c1786a1ad4695dee9d43c9d38dbfca8577faeee5db156f WHIRLPOOL f7ede3ed9e8d06aa76eb12c3e23a35629be9d4676aa21017758b25cbf97d1e03534763e2a0008d2b549672b10c326925da5040319f70c0c8d139add8c4eb7661
9
AUX llvm-3.5-musl-support.patch 5228 SHA256 3d967be662643016a9e250bd48e70b7e633a73a4293c3328bd53f19007dcf111 SHA512 3b4bfd485ca49a2494c36d10fc6bd57fb437eff2852833af54e178c9f7ac9238eb5061baa5739fb340407326c3a3aa6adeedb3c8e190d6f94dbcc4aa78824ad1 WHIRLPOOL 9838d31b5c8de0cbcf3581dbbf1090654e4111e300ed30b787d67c3f00b8b92b60b97375f6ea1b58d894973b89d3d992a2bd08e232656a56a36f9b435b512cc2
10
AUX llvm-3.5.0-fix_LLVMExports_cmake.patch 1563 SHA256 924303a7fa7ee46276eb2984e3e2d9304873df1d63c0d878371cf98b4094aef0 SHA512 8e8c3ae2c8e2bac0d78a7f572ccfae9cfc30e52ffbfa953596c075cf6adc4e5881d2b80cad4d87bbf1de837d88352334bb51a331adc8d8db74354945c036637e WHIRLPOOL b525bbf3a7ade5906e9e35315af1ccb50c4392e1d104c516927a3ab9b627bc3d0fcf41bd0b77093f6743131f801d37d53d1065371e5c86eb4e7d538eb969b3a8
11
DIST cfe-3.5.0.src.tar.xz 8233432 SHA256 fc80992e004b06f6c7afb612de1cdaa9ac9d25811c55f94fcf7331d9b81cdb8b SHA512 b26a5e2cd81c150607c23b22fafc0d9c7f12b83b45e476b8e75bf5e99d42be7c98ffeac7349df664f01b00900864a01429860b298e48961861377a4b2daf3e49 WHIRLPOOL 5dd8b6fe97933b74f1668b1d753c16cd3bcd05ccf72aac1283aa449caf93f5ba88ae79e7668f7e79b554e1421549a87af21c86cf92657c1b4d77744165718ce7
12
DIST clang-tools-extra-3.5.0.src.tar.xz 216256 SHA256 2981beb378afb5aa5c50ed017720a42a33e77e902c7086ad2d412ef4fa931f69 SHA512 5ff2cc5d143b78fbe6645486f02e50f738a92aaf6b8e85cfc6f91e659684686b12e61fc8f00b814b4372c5ed2c2b1be5eca61ea696fbe074b815877b799534ee WHIRLPOOL 10b5afc550fa6a8c33739fbf9268e934732b2892842d398152676e66ab90aed3c6e1bae02bc1b8aa0a9a917b6b450f60950317a9eda3f9e377971cbe00164b11
13
DIST compiler-rt-3.5.0.src.tar.xz 1088352 SHA256 a4b3e655832bf8d9a357ea2c771db347237460e131988cbb96cda40ff39a8136 SHA512 862cce2d6b398bd1a8399496a547e6ab976a31f676528beebfbea5fd7dc54aa72e1c25deefa12f6167096521eba74090565b0168806451da02ddac04e922fc48 WHIRLPOOL 248acf997d70d7904aa79bf83e0c02ba4e5f8c2812c03f44a8e1e31b845a654f250c09ec6a123f9245d0db8713e8cc5a4087b9ce785af4f5eb7e55d9dbd362a2
14
DIST llvm-3.5.0-manpages.tar.bz2 35314 SHA256 724e752a60016dce8cc536658906d3646c600e977374e0ea692a5d0fe2d4a021 SHA512 d99d6096d7f21a81923297584fe5eeb23e0d83d4538fe376615c92fffc8aff3189999f7ab3c537b5aa5d6bc2c22c53eb05717d48c7ab99c42315b8665bac62c3 WHIRLPOOL 68ced06ee6678c5333c662eb1cc0da744c5a184b12dd059c1b77ec200b1d3cc231f270b9d9b6e177d728776894277b3f9061338aa55620c90474eb97915b7819
15
DIST llvm-3.5.0.src.tar.xz 11735940 SHA256 28e199f368ef0a4666708f31c7991ad3bcc3a578342b0306526dd35f07595c03 SHA512 b4d0f325dbdb0a8f10e5fd031954ef4b1971d8f99f4e4b53834801a2b74a7acde3f77c655c8355b407424b363edfb10f71d85fc370356dc52af5c636a1bba197 WHIRLPOOL 561520823468b61c63df8e13f876b7ac586eb1e52c256e9a36370e5d46e8cef3937655c36fbb51eebd3680fab67412e7c777479477fc728e7a8f35420e573ef1
16
EBUILD llvm-3.5.0-r99.ebuild 15143 SHA256 94a1674bde07e026e0ca1e9f982f5f753f425b949183f4c5355d1af6a2388028 SHA512 ccb3ab314aab5d9af0d64ba5331d5390cd7d60b91e4ac50bee350d0d5885b712eb2b3e08c3df249c012fec7b410b7e32203948fddb444a4bbced86a655c705e3 WHIRLPOOL 308ec5e0ae0c874d2a43f7c571b5fb65a2566a36a3dcca4657304643b5d8fb6614ea5745383da819dbca5798b3dcbfcd49ca27de29a69cf216a6c0f15a5b1fab
17
MISC metadata.xml 2787 SHA256 22dc7b91c98fb4258271cc9cd4bd99f214b30f258bbdfea83dc37ac74df8d498 SHA512 4fca0d2551a889e7800c688077adf405697d05730bf66621ac53fdefeeeaddb7a8d868973edc9a6fe48e9a07734f1d43fd88229bae693fe181a7dbb95eeb9481 WHIRLPOOL 6284033d40bef02510f924ec1e6a9d3e1072bf26945fdedde0ddaf1d6d35c3d30971cdefa583a8e4d9db3da67bee04145ace15ded4cee63f534588b66633c76b
(-)a/sys-devel/llvm/files/clang-3.4-darwin_prefix-include-paths.patch (+18 lines)
Line 0 Link Here
1
--- tools/clang/lib/Frontend/InitHeaderSearch.cpp
2
+++ tools/clang/lib/Frontend/InitHeaderSearch.cpp
3
@@ -233,6 +233,7 @@
4
     case llvm::Triple::Bitrig:
5
       break;
6
     default:
7
+      AddPath("@GENTOO_PORTAGE_EPREFIX@/usr/include", System, false);
8
       // FIXME: temporary hack: hard-coded paths.
9
       AddPath("/usr/local/include", System, false);
10
       break;
11
@@ -505,6 +506,7 @@
12
   // Add the default framework include paths on Darwin.
13
   if (HSOpts.UseStandardSystemIncludes) {
14
     if (triple.isOSDarwin()) {
15
+      AddPath("@GENTOO_PORTAGE_EPREFIX@/Frameworks", System, true);
16
       AddPath("/System/Library/Frameworks", System, true);
17
       AddPath("/Library/Frameworks", System, true);
18
     }
(-)a/sys-devel/llvm/files/clang-3.5-gentoo-install.patch (+57 lines)
Line 0 Link Here
1
---
2
 tools/clang/lib/Driver/Tools.cpp        | 2 +-
3
 tools/clang/tools/scan-build/scan-build | 4 ++--
4
 tools/clang/tools/scan-view/scan-view   | 2 +-
5
 3 files changed, 4 insertions(+), 4 deletions(-)
6
7
diff --git a/tools/clang/lib/Driver/Tools.cpp b/tools/clang/lib/Driver/Tools.cpp
8
index 187ed38..55bcd99 100644
9
--- a/tools/clang/lib/Driver/Tools.cpp
10
+++ b/tools/clang/lib/Driver/Tools.cpp
11
@@ -1404,7 +1404,7 @@ static void AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
12
   // as gold requires -plugin to come before any -plugin-opt that -Wl might
13
   // forward.
14
   CmdArgs.push_back("-plugin");
15
-  std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so";
16
+  std::string Plugin = ToolChain.getDriver().Dir + "/../@libdir@/LLVMgold.so";
17
   CmdArgs.push_back(Args.MakeArgString(Plugin));
18
 
19
   // Try to pass driver level flags relevant to LTO code generation down to
20
diff --git a/tools/clang/tools/scan-build/scan-build b/tools/clang/tools/scan-build/scan-build
21
index 0f119f6..58f78d9 100755
22
--- a/tools/clang/tools/scan-build/scan-build
23
+++ b/tools/clang/tools/scan-build/scan-build
24
@@ -419,7 +419,7 @@
25
26
   my $Dir = shift;
27
28
-  my $JS = Cwd::realpath("$RealBin/sorttable.js");
29
+  my $JS = Cwd::realpath("@EPREFIX@/usr/share/llvm/sorttable.js");
30
31
   DieDiag("Cannot find 'sorttable.js'.\n")
32
     if (! -r $JS);
33
@@ -429,7 +429,7 @@
34
   DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
35
     if (! -r "$Dir/sorttable.js");
36
37
-  my $CSS = Cwd::realpath("$RealBin/scanview.css");
38
+  my $CSS = Cwd::realpath("@EPREFIX@/usr/share/llvm/scanview.css");
39
40
   DieDiag("Cannot find 'scanview.css'.\n")
41
     if (! -r $CSS);
42
diff --git a/tools/clang/tools/scan-view/scan-view b/tools/clang/tools/scan-view/scan-view
43
index fb27da6..1f8ddb8 100755
44
--- a/tools/clang/tools/scan-view/scan-view
45
+++ b/tools/clang/tools/scan-view/scan-view
46
@@ -54,7 +54,7 @@ def start_browser(port, options):
47
     webbrowser.open(url)
48
 
49
 def run(port, options, root):
50
-    import ScanView
51
+    from clang import ScanView
52
     try:
53
         print 'Starting scan-view at: http://%s:%d'%(options.host,
54
                                                      port)
55
-- 
56
1.8.4.4
57
(-)a/sys-devel/llvm/files/clang-3.5-gentoo-runtime-gcc-detection-v3.patch (+42 lines)
Line 0 Link Here
1
From 916572e1243633ddf913c8f32771a3a7f70fd853 Mon Sep 17 00:00:00 2001
2
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
3
Date: Fri, 5 Sep 2014 16:49:35 +0200
4
Subject: [PATCH] Support obtaining active toolchain from gcc-config.
5
6
---
7
 tools/clang/lib/Driver/ToolChains.cpp | 19 +++++++++++++++++++
8
 1 file changed, 19 insertions(+)
9
10
diff --git a/tools/clang/lib/Driver/ToolChains.cpp b/tools/clang/lib/Driver/ToolChains.cpp
11
index b46f69d..2d4374d 100644
12
--- a/tools/clang/lib/Driver/ToolChains.cpp
13
+++ b/tools/clang/lib/Driver/ToolChains.cpp
14
@@ -1253,6 +1253,25 @@ Generic_GCC::GCCInstallationDetector::init(
15
       Prefixes.push_back("/usr");
16
   }
17
 
18
+  for (unsigned k = 0, ke = CandidateTripleAliases.size(); k < ke; ++k) {
19
+    llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> File =
20
+        llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + CandidateTripleAliases[k].str());
21
+    if (File)
22
+    {
23
+      const std::string VersionText = File.get()->getBuffer().rsplit('-').second.substr(0,5).str();
24
+      const std::string GentooPath = D.SysRoot + "/usr/lib/gcc/" + CandidateTripleAliases[k].str() + "/" + VersionText;
25
+      if (llvm::sys::fs::exists(GentooPath + "/crtbegin.o"))
26
+      {
27
+        Version = GCCVersion::Parse(VersionText);
28
+        GCCInstallPath = GentooPath;
29
+        GCCParentLibPath = GCCInstallPath + "/../../..";
30
+        GCCTriple.setTriple(CandidateTripleAliases[k]);
31
+        IsValid = true;
32
+        return;
33
+      }
34
+    }
35
+  }
36
+
37
   // Loop over the various components which exist and select the best GCC
38
   // installation available. GCC installs are ranked by version number.
39
   Version = GCCVersion::Parse("0.0.0");
40
-- 
41
2.1.0
42
(-)a/sys-devel/llvm/files/llvm-3.5-gcc-4.9.patch (+44 lines)
Line 0 Link Here
1
--- docs/Makefile.orig	2012-04-30 17:00:01.000000000 +0200
Line 0 Link Here
1
commit 080fb498017d17af2e4d7563608c7d8a848f20da
2
Author: Sanjoy Das <sanjoy at azulsystems.com>
3
Date:   Thu Jun 19 15:38:02 2014 -0700
4
5
    Fix the --enable-shared build.
6
    
7
    Currently a build configured with ./configure --enable-shared breaks
8
    with an undefined "llvm::cl::parser<llvm::PassInfo
9
    const*>::getOption(unsigned int) const" symbol when linking opt.  This
10
    body for this symbol gets emitted into Pass.o (along with the destructor
11
    for PassNameParser), but gets linked into libLLVM-3.5svn.so with local
12
    visibility, causing the link error.
13
    
14
    This fix uses the existing EXTERN_TEMPLATE machinery to force a globally
15
    visible definition for the functions in parser<const PassInfo *> into
16
    Pass.o.
17
18
diff --git a/include/llvm/IR/LegacyPassNameParser.h b/include/llvm/IR/LegacyPassNameParser.h
19
index e2e4912..a07e3fd 100644
20
--- a/include/llvm/IR/LegacyPassNameParser.h
21
+++ b/include/llvm/IR/LegacyPassNameParser.h
22
@@ -95,6 +95,8 @@ private:
23
   }
24
 };
25
 
26
+EXTERN_TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>);
27
+
28
 ///===----------------------------------------------------------------------===//
29
 /// FilteredPassNameParser class - Make use of the pass registration
30
 /// mechanism to automatically add a command line argument to opt for
31
diff --git a/lib/IR/Pass.cpp b/lib/IR/Pass.cpp
32
index 91d86ae..00ce223 100644
33
--- a/lib/IR/Pass.cpp
34
+++ b/lib/IR/Pass.cpp
35
@@ -234,6 +234,8 @@ PassNameParser::~PassNameParser() {
36
   // attempting to remove the registration listener is an error.
37
 }
38
 
39
+TEMPLATE_INSTANTIATION(class cl::parser<const PassInfo *>);
40
+
41
 //===----------------------------------------------------------------------===//
42
 //   AnalysisUsage Class Implementation
43
 //
(-)a/sys-devel/llvm/files/llvm-3.5-gentoo-install.patch (+83 lines)
Line 0 Link Here
1
From b8846d389ff5e2b768a114f752cf39788accba26 Mon Sep 17 00:00:00 2001
2
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
3
Date: Mon, 19 Aug 2013 13:22:46 +0200
4
Subject: [PATCH] gentoo install fixes
5
6
---
7
 Makefile.config.in                      | 6 +++---
8
 Makefile.rules                          | 6 +++---
9
 tools/llvm-config/BuildVariables.inc.in | 2 ++
10
 tools/llvm-config/Makefile              | 4 ++++
11
 tools/llvm-config/llvm-config.cpp       | 5 +++--
12
 utils/FileCheck/Makefile                | 2 +-
13
 7 files changed, 17 insertions(+), 10 deletions(-)
14
15
diff --git a/Makefile.config.in b/Makefile.config.in
16
index dcca45f..e75ae2e 100644
17
--- a/Makefile.config.in
18
+++ b/Makefile.config.in
19
@@ -95,10 +95,10 @@ PROJ_internal_prefix := $(prefix)
20
 endif
21
 
22
 PROJ_bindir     := $(PROJ_prefix)/bin
23
-PROJ_libdir     := $(PROJ_prefix)/lib
24
+PROJ_libdir     := $(PROJ_prefix)/$(GENTOO_LIBDIR)
25
 PROJ_datadir    := $(PROJ_prefix)/share
26
-PROJ_docsdir    := $(PROJ_prefix)/docs/llvm
27
-PROJ_etcdir     := $(PROJ_prefix)/etc/llvm
28
+PROJ_docsdir    := $(PROJ_prefix)/share/doc/@PF@
29
+PROJ_etcdir     := @EPREFIX@/etc/llvm
30
 PROJ_includedir := $(PROJ_prefix)/include
31
 PROJ_infodir    := $(PROJ_prefix)/info
32
 PROJ_mandir     := $(PROJ_prefix)/share/man
33
diff --git a/Makefile.rules b/Makefile.rules
34
index e53598b..217f754 100644
35
--- a/Makefile.rules
36
+++ b/Makefile.rules
37
@@ -275,7 +275,7 @@ ifeq ($(ENABLE_OPTIMIZED),1)
38
   BuildMode := Release
39
   # Don't use -fomit-frame-pointer on Darwin or FreeBSD.
40
   ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin Darwin DragonFly FreeBSD GNU/kFreeBSD))
41
-    OmitFramePointer := -fomit-frame-pointer
42
+    OmitFramePointer :=
43
   endif
44
 
45
   CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer)
46
diff --git a/tools/llvm-config/BuildVariables.inc.in b/tools/llvm-config/BuildVariables.inc.in
47
index fe87afb..fd9f2c6 100644
48
--- a/tools/llvm-config/BuildVariables.inc.in
49
+++ b/tools/llvm-config/BuildVariables.inc.in
50
@@ -25,3 +25,4 @@
51
 #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
52
 #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
53
 #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
54
+#define LLVM_LIBDIR "@LLVM_LIBDIR@"
55
diff --git a/tools/llvm-config/Makefile b/tools/llvm-config/Makefile
56
index b20b6bf..fc56781 100644
57
--- a/tools/llvm-config/Makefile
58
+++ b/tools/llvm-config/Makefile
59
@@ -55,6 +55,8 @@ $(ObjDir)/BuildVariables.inc: $(BUILDVARIABLES_SRCPATH) Makefile $(ObjDir)/.dir
60
 	  >> temp.sed
61
 	$(Verb) $(ECHO) 's/@LLVM_TARGETS_BUILT@/$(subst /,\/,$(TARGETS_TO_BUILD))/' \
62
 	  >> temp.sed
63
+	$(Verb) $(ECHO) 's/@LLVM_LIBDIR@/$(subst /,\/,$(GENTOO_LIBDIR))/' \
64
+	  >> temp.sed
65
 	$(Verb) $(SED) -f temp.sed < $< > $@
66
 	$(Verb) $(RM) temp.sed
67
 
68
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
69
index 3924e2e..f439c60 100644
70
--- a/tools/llvm-config/llvm-config.cpp
71
+++ b/tools/llvm-config/llvm-config.cpp
72
@@ -250,7 +250,7 @@ int main(int argc, char **argv) {
73
     ActivePrefix = CurrentExecPrefix;
74
     ActiveIncludeDir = ActivePrefix + "/include";
75
     ActiveBinDir = ActivePrefix + "/bin";
76
-    ActiveLibDir = ActivePrefix + "/lib";
77
+    ActiveLibDir = ActivePrefix + "/" LLVM_LIBDIR;
78
     ActiveIncludeOption = "-I" + ActiveIncludeDir;
79
   }
80
 
81
-- 
82
1.8.4.2
83
(-)a/sys-devel/llvm/llvm-3.5.0-r99.ebuild (+543 lines)
Line 0 Link Here
1
diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk b/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk
2
--- a/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk	2014-02-14 10:20:33.000000000 -0100
Line 0 Link Here
1
llvm-musl.patch from alpine linux
2
3
diff -ru llvm-3.5.0.src.orig/include/llvm/Target/TargetLibraryInfo.h llvm-3.5.0.src/include/llvm/Target/TargetLibraryInfo.h
4
--- llvm-3.5.0.src.orig/include/llvm/Target/TargetLibraryInfo.h	2014-11-13 12:51:53.341455401 +0000
Line 0 Link Here
1
adapted from llvm-alpine-linux.patch from Alpine
2
3
diff -ru llvm-3.5.0.src.orig/include/llvm/ADT/Triple.h llvm-3.5.0.src/include/llvm/ADT/Triple.h
4
--- llvm-3.5.0.src.orig/include/llvm/ADT/Triple.h	2014-07-18 17:28:19.000000000 -0300
Line 0 Link Here
1
Index: cmake/modules/Makefile
2
===================================================================
3
--- cmake/modules/Makefile	(revision 217451)
Line 0 Link Here
1
# Copyright 1999-2015 Gentoo Foundation
2
# Distributed under the terms of the GNU General Public License v2
3
# $Header: /var/cvsroot/gentoo-x86/sys-devel/llvm/llvm-3.5.0.ebuild,v 1.11 2015/01/01 20:53:32 maekke Exp $
4
5
EAPI=5
6
7
PYTHON_COMPAT=( python2_7 pypy )
8
9
inherit eutils flag-o-matic multibuild multilib \
10
	multilib-minimal python-r1 toolchain-funcs pax-utils check-reqs prefix
11
12
DESCRIPTION="Low Level Virtual Machine"
13
HOMEPAGE="http://llvm.org/"
14
SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz
15
	clang? ( http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.xz
16
		http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.xz
17
		http://llvm.org/releases/${PV}/clang-tools-extra-${PV}.src.tar.xz )
18
	!doc? ( http://dev.gentoo.org/~voyageur/distfiles/${P}-manpages.tar.bz2 )"
19
20
LICENSE="UoI-NCSA"
21
SLOT="0/3.5"
22
KEYWORDS="amd64 arm ppc x86"
23
IUSE="clang debug doc gold libedit +libffi multitarget ncurses ocaml python
24
	+static-analyzer test xml video_cards_radeon
25
	kernel_Darwin kernel_FreeBSD"
26
27
COMMON_DEPEND="
28
	sys-libs/zlib:0=
29
	clang? (
30
		python? ( ${PYTHON_DEPS} )
31
		static-analyzer? (
32
			dev-lang/perl:*
33
			${PYTHON_DEPS}
34
		)
35
		xml? ( dev-libs/libxml2:2= )
36
	)
37
	gold? ( >=sys-devel/binutils-2.22:*[cxx] )
38
	libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
39
	libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
40
	ncurses? ( >=sys-libs/ncurses-5.9-r3:5=[${MULTILIB_USEDEP}] )
41
	ocaml? ( dev-lang/ocaml:0= )"
42
# configparser-3.2 breaks the build (3.3 or none at all are fine)
43
DEPEND="${COMMON_DEPEND}
44
	app-arch/xz-utils
45
	dev-lang/perl
46
	>=sys-devel/make-3.81
47
	>=sys-devel/flex-2.5.4
48
	>=sys-devel/bison-1.875d
49
	|| ( >=sys-devel/gcc-3.0 >=sys-devel/gcc-apple-4.2.1
50
		( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
51
	)
52
	|| ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-3.2.3 )
53
	clang? ( xml? ( virtual/pkgconfig ) )
54
	doc? ( dev-python/sphinx )
55
	libffi? ( virtual/pkgconfig )
56
	!!<dev-python/configparser-3.3.0.2
57
	${PYTHON_DEPS}"
58
RDEPEND="${COMMON_DEPEND}
59
	clang? ( !<=sys-devel/clang-${PV}-r99
60
		!>=sys-devel/clang-9999 )
61
	abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2
62
		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )"
63
PDEPEND="clang? ( =sys-devel/clang-${PV}-r100 )"
64
65
# pypy gives me around 1700 unresolved tests due to open file limit
66
# being exceeded. probably GC does not close them fast enough.
67
REQUIRED_USE="${PYTHON_REQUIRED_USE}
68
	test? ( || ( $(python_gen_useflags 'python*') ) )"
69
70
S=${WORKDIR}/${P}.src
71
72
# Some people actually override that in make.conf. That sucks since
73
# we need to run install per-directory, and ninja can't do that...
74
# so why did it call itself ninja in the first place?
75
CMAKE_MAKEFILE_GENERATOR=emake
76
77
pkg_pretend() {
78
	# in megs
79
	# !clang !debug !multitarget -O2       400
80
	# !clang !debug  multitarget -O2       550
81
	#  clang !debug !multitarget -O2       950
82
	#  clang !debug  multitarget -O2      1200
83
	# !clang  debug  multitarget -O2      5G
84
	#  clang !debug  multitarget -O0 -g  12G
85
	#  clang  debug  multitarget -O2     16G
86
	#  clang  debug  multitarget -O0 -g  14G
87
88
	local build_size=550
89
	use clang && build_size=1200
90
91
	if use debug; then
92
		ewarn "USE=debug is known to increase the size of package considerably"
93
		ewarn "and cause the tests to fail."
94
		ewarn
95
96
		(( build_size *= 14 ))
97
	elif is-flagq -g || is-flagq -ggdb; then
98
		ewarn "The C++ compiler -g option is known to increase the size of the package"
99
		ewarn "considerably. If you run out of space, please consider removing it."
100
		ewarn
101
102
		(( build_size *= 10 ))
103
	fi
104
105
	# Multiply by number of ABIs :).
106
	local abis=( $(multilib_get_enabled_abis) )
107
	(( build_size *= ${#abis[@]} ))
108
109
	local CHECKREQS_DISK_BUILD=${build_size}M
110
	check-reqs_pkg_pretend
111
112
	if [[ ${MERGE_TYPE} != binary ]]; then
113
		echo 'int main() {return 0;}' > "${T}"/test.cxx || die
114
		ebegin "Trying to build a C++11 test program"
115
		if ! $(tc-getCXX) -std=c++11 -o /dev/null "${T}"/test.cxx; then
116
			eerror "LLVM-${PV} requires C++11-capable C++ compiler. Your current compiler"
117
			eerror "does not seem to support -std=c++11 option. Please upgrade your compiler"
118
			eerror "to gcc-4.7 or an equivalent version supporting C++11."
119
			die "Currently active compiler does not support -std=c++11"
120
		fi
121
		eend ${?}
122
	fi
123
}
124
125
pkg_setup() {
126
	pkg_pretend
127
}
128
129
src_unpack() {
130
	default
131
132
	rm -f "${S}"/tools/clang "${S}"/projects/compiler-rt \
133
		|| die "symlinks removal failed"
134
135
	if use clang; then
136
		mv "${WORKDIR}"/cfe-${PV}.src "${S}"/tools/clang \
137
			|| die "clang source directory move failed"
138
		mv "${WORKDIR}"/compiler-rt-${PV}.src "${S}"/projects/compiler-rt \
139
			|| die "compiler-rt source directory move failed"
140
		mv "${WORKDIR}"/clang-tools-extra-${PV}.src "${S}"/tools/clang/tools/extra \
141
			|| die "clang-tools-extra source directory move failed"
142
	fi
143
}
144
145
src_prepare() {
146
	epatch "${FILESDIR}"/${PN}-3.2-nodoctargz.patch
147
	epatch "${FILESDIR}"/${PN}-3.5-gcc-4.9.patch
148
	epatch "${FILESDIR}"/${PN}-3.5-gentoo-install.patch
149
150
	epatch "${FILESDIR}"/${PN}-3.5-musl-fixes.patch
151
	epatch "${FILESDIR}"/${PN}-3.5-musl-support.patch
152
	epatch "${FILESDIR}"/${PN}-3.5-musl-compiler-rt.patch
153
154
	epatch "${FILESDIR}"/${P}-fix_LLVMExports_cmake.patch
155
156
	if use clang; then
157
		# Automatically select active system GCC's libraries, bugs #406163 and #417913
158
		epatch "${FILESDIR}"/clang-3.5-gentoo-runtime-gcc-detection-v3.patch
159
160
		epatch "${FILESDIR}"/clang-3.5-gentoo-install.patch
161
		epatch "${FILESDIR}"/clang-3.4-darwin_prefix-include-paths.patch
162
		eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
163
	fi
164
165
	if use prefix && use clang; then
166
		sed -i -e "/^CFLAGS /s@-Werror@-I${EPREFIX}/usr/include@" \
167
			projects/compiler-rt/make/platform/clang_*.mk || die
168
	fi
169
170
	local sub_files=(
171
		Makefile.config.in
172
		Makefile.rules
173
		tools/llvm-config/llvm-config.cpp
174
	)
175
	use clang && sub_files+=(
176
		tools/clang/lib/Driver/Tools.cpp
177
		tools/clang/tools/scan-build/scan-build
178
	)
179
180
	# unfortunately ./configure won't listen to --mandir and the-like, so take
181
	# care of this.
182
	# note: we're setting the main libdir intentionally.
183
	# where per-ABI is appropriate, we use $(GENTOO_LIBDIR) make.
184
	einfo "Fixing install dirs"
185
	sed -e "s,@libdir@,$(get_libdir),g" \
186
		-e "s,@PF@,${PF},g" \
187
		-e "s,@EPREFIX@,${EPREFIX},g" \
188
		-i "${sub_files[@]}" \
189
		|| die "install paths sed failed"
190
191
	if use clang; then
192
		# constantly fails for a long time, likely due to our patches
193
		rm tools/clang/test/Driver/cross-linux.c || die
194
	fi
195
196
	# User patches
197
	epatch_user
198
199
	python_setup
200
}
201
202
multilib_src_configure() {
203
	# disable timestamps since they confuse ccache
204
	local conf_flags=(
205
		--disable-timestamps
206
		--enable-keep-symbols
207
		--enable-shared
208
		--with-optimize-option=
209
		$(tc-is-static-only && echo --disable-shared)
210
		$(use_enable !debug optimized)
211
		$(use_enable debug assertions)
212
		$(use_enable debug expensive-checks)
213
		$(use_enable libedit)
214
		$(use_enable ncurses terminfo)
215
		$(use_enable libffi)
216
	)
217
218
	# well, it's used only by clang executable c-index-test
219
	if multilib_is_native_abi && use clang && use xml; then
220
		conf_flags+=( XML2CONFIG="$(tc-getPKG_CONFIG) libxml-2.0" )
221
	else
222
		conf_flags+=( ac_cv_prog_XML2CONFIG="" )
223
	fi
224
225
	local targets bindings
226
	if use multitarget; then
227
		targets='all'
228
	else
229
		targets='host,cpp'
230
		use video_cards_radeon && targets+=',r600'
231
	fi
232
	conf_flags+=( --enable-targets=${targets} )
233
234
	if multilib_is_native_abi; then
235
		use gold && conf_flags+=( --with-binutils-include="${EPREFIX}"/usr/include/ )
236
		# extra commas don't hurt
237
		use ocaml && bindings+=',ocaml'
238
	fi
239
240
	[[ ${bindings} ]] || bindings='none'
241
	conf_flags+=( --enable-bindings=${bindings} )
242
243
	if use libffi; then
244
		local CPPFLAGS=${CPPFLAGS}
245
		append-cppflags "$(pkg-config --cflags libffi)"
246
	fi
247
248
	# llvm prefers clang over gcc, so we may need to force that
249
	tc-export CC CXX
250
251
	ECONF_SOURCE=${S} \
252
	econf "${conf_flags[@]}"
253
}
254
255
set_makeargs() {
256
	MAKEARGS=(
257
		VERBOSE=1
258
		REQUIRES_RTTI=1
259
		GENTOO_LIBDIR=$(get_libdir)
260
	)
261
262
	# for tests, we want it all! otherwise, we may use a little filtering...
263
	# adding ONLY_TOOLS also disables unittest building...
264
	if [[ ${EBUILD_PHASE_FUNC} != src_test ]]; then
265
		local tools=( llvm-config )
266
		use clang && tools+=( clang )
267
268
		if multilib_is_native_abi; then
269
			tools+=(
270
				opt llvm-as llvm-dis llc llvm-ar llvm-nm llvm-link lli
271
				llvm-extract llvm-mc llvm-bcanalyzer llvm-diff macho-dump
272
				llvm-objdump llvm-readobj llvm-rtdyld llvm-dwarfdump llvm-cov
273
				llvm-size llvm-stress llvm-mcmarkup llvm-profdata
274
				llvm-symbolizer obj2yaml yaml2obj lto bugpoint
275
			)
276
277
			# the build system runs explicitly specified tools in parallel,
278
			# so we need to split it into two runs
279
			if [[ ${1} != -1 ]]; then
280
				# those require lto
281
				tools+=( llvm-lto )
282
				use gold && tools+=( gold )
283
284
				# those require clang :)
285
				# we need to explicitly specify all its tools
286
				# since we're passing BUILD_CLANG_ONLY
287
				use clang && tools+=(
288
					clang/tools/{clang-check,clang-format,extra}
289
				)
290
			fi
291
		fi
292
293
		MAKEARGS+=(
294
			# filter tools + disable unittests implicitly
295
			ONLY_TOOLS="${tools[*]}"
296
297
			# this disables unittests & docs from clang
298
			BUILD_CLANG_ONLY=YES
299
		)
300
	fi
301
}
302
303
multilib_src_compile() {
304
	local MAKEARGS
305
	set_makeargs -1
306
	emake "${MAKEARGS[@]}"
307
308
	if multilib_is_native_abi; then
309
		set_makeargs
310
		emake -C tools "${MAKEARGS[@]}"
311
312
		if use doc; then
313
			emake -C "${S}"/docs -f Makefile.sphinx man
314
			use clang && emake -C "${S}"/tools/clang/docs/tools \
315
				BUILD_FOR_WEBSITE=1 DST_MAN_DIR="${T}"/ man
316
			emake -C "${S}"/docs -f Makefile.sphinx html
317
		fi
318
	fi
319
320
	if use debug; then
321
		pax-mark m Debug+Asserts+Checks/bin/llvm-rtdyld
322
		pax-mark m Debug+Asserts+Checks/bin/lli
323
		pax-mark m Debug+Asserts+Checks/bin/lli-child-target
324
	else
325
		pax-mark m Release/bin/llvm-rtdyld
326
		pax-mark m Release/bin/lli
327
		pax-mark m Release/bin/lli-child-target
328
	fi
329
}
330
331
multilib_src_test() {
332
	local MAKEARGS
333
	set_makeargs
334
335
	# build the remaining tools & unittests
336
	emake "${MAKEARGS[@]}"
337
338
	pax-mark m unittests/ExecutionEngine/JIT/Release/JITTests
339
	pax-mark m unittests/ExecutionEngine/MCJIT/Release/MCJITTests
340
	pax-mark m unittests/Support/Release/SupportTests
341
342
	# respect TMPDIR!
343
	local -x LIT_PRESERVES_TMP=1
344
	emake "${MAKEARGS[@]}" check
345
	use clang && emake "${MAKEARGS[@]}" -C tools/clang test
346
}
347
348
src_install() {
349
	local MULTILIB_CHOST_TOOLS=(
350
		/usr/bin/llvm-config
351
	)
352
353
	local MULTILIB_WRAPPED_HEADERS=(
354
		/usr/include/llvm/Config/config.h
355
		/usr/include/llvm/Config/llvm-config.h
356
	)
357
358
	if use clang; then
359
		# note: magic applied below
360
		MULTILIB_CHOST_TOOLS+=(
361
			/usr/bin/clang
362
			/usr/bin/clang++
363
			/usr/bin/clang-${PV}
364
			/usr/bin/clang++-${PV}
365
		)
366
367
		MULTILIB_WRAPPED_HEADERS+=(
368
			/usr/include/clang/Config/config.h
369
		)
370
	fi
371
372
	multilib-minimal_src_install
373
374
	# Remove unnecessary headers on FreeBSD, bug #417171
375
	use kernel_FreeBSD && use clang && rm "${ED}"usr/lib/clang/${PV}/include/{std,float,iso,limits,tgmath,varargs}*.h
376
}
377
378
multilib_src_install() {
379
	local MAKEARGS
380
	set_makeargs
381
382
	local root=${D}/_${ABI}
383
384
	emake "${MAKEARGS[@]}" DESTDIR="${root}" install
385
	multibuild_merge_root "${root}" "${D}"
386
387
	if ! multilib_is_native_abi; then
388
		# Backwards compat, will be happily removed someday.
389
		dosym "${CHOST}"-llvm-config /usr/bin/llvm-config.${ABI}
390
	else
391
		# Install docs.
392
		if use doc; then
393
			doman "${S}"/docs/_build/man/*.1
394
			use clang && doman "${T}"/clang.1
395
			dohtml -r "${S}"/docs/_build/html/
396
		else
397
			if ! use clang; then
398
				rm "${WORKDIR}"/${P}-manpages/clang.1 || die
399
			fi
400
			doman "${WORKDIR}"/${P}-manpages/*.1
401
		fi
402
403
		# Symlink the gold plugin.
404
		if use gold; then
405
			dodir /usr/${CHOST}/binutils-bin/lib/bfd-plugins
406
			dosym ../../../../$(get_libdir)/LLVMgold.so \
407
				/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so
408
		fi
409
	fi
410
411
	# apply CHOST and PV to clang executables
412
	# they're statically linked so we don't have to worry about the lib
413
	if use clang; then
414
		local clang_tools=( clang clang++ )
415
		local i
416
417
		# append ${PV} and symlink back
418
		# TODO: use alternatives.eclass? does that make any sense?
419
		# maybe with USE=-clang on :0 and USE=clang on older
420
		for i in "${clang_tools[@]}"; do
421
			mv "${ED%/}/usr/bin/${i}"{,-${PV}} || die
422
			dosym "${i}"-${PV} /usr/bin/${i}
423
		done
424
425
		# now prepend ${CHOST} and let the multilib-build.eclass symlink it
426
		if ! multilib_is_native_abi; then
427
			# non-native? let's replace it with a simple wrapper
428
			for i in "${clang_tools[@]}"; do
429
				rm "${ED%/}/usr/bin/${i}-${PV}" || die
430
				cat > "${T}"/wrapper.tmp <<-_EOF_
431
					#!${EPREFIX}/bin/sh
432
					exec "${i}-${PV}" $(get_abi_CFLAGS) "\${@}"
433
				_EOF_
434
				newbin "${T}"/wrapper.tmp "${i}-${PV}"
435
			done
436
		fi
437
	fi
438
439
	# Fix install_names on Darwin.  The build system is too complicated
440
	# to just fix this, so we correct it post-install
441
	local lib= f= odylib= ndylib= libpv=${PV}
442
	if [[ ${CHOST} == *-darwin* ]] ; then
443
		eval $(grep PACKAGE_VERSION= configure)
444
		[[ -n ${PACKAGE_VERSION} ]] && libpv=${PACKAGE_VERSION}
445
		for lib in lib{EnhancedDisassembly,LLVM-${libpv},LTO,profile_rt,clang}.dylib LLVMHello.dylib clang/${libpv}/lib/darwin/libclang_rt.asan_osx_dynamic.dylib; do
446
			# libEnhancedDisassembly is Darwin10 only, so non-fatal
447
			# + omit clang libs if not enabled
448
			[[ -f ${ED}/usr/lib/${lib} ]] || continue
449
450
			ebegin "fixing install_name of $lib"
451
			install_name_tool \
452
				-id "${EPREFIX}"/usr/lib/${lib} \
453
				"${ED}"/usr/lib/${lib}
454
			eend $?
455
		done
456
		for f in "${ED}"/usr/bin/* "${ED}"/usr/lib/lib*.dylib "${ED}"/usr/lib/clang/${libpv}/lib/darwin/*.dylib ; do
457
			# omit clang libs if not enabled
458
			[[ -f ${ED}/usr/lib/${lib} ]] || continue
459
460
			scanmacho -BF'%n#f' "${f}" | tr ',' '\n' | \
461
			while read odylib ; do
462
				ndylib=
463
				case ${odylib} in
464
					*/libclang.dylib)
465
						ndylib="${EPREFIX}"/usr/lib/libclang.dylib
466
						;;
467
					*/libLLVM-${libpv}.dylib)
468
						ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpv}.dylib
469
						;;
470
					*/libLTO.dylib)
471
						ndylib="${EPREFIX}"/usr/lib/libLTO.dylib
472
						;;
473
				esac
474
				if [[ -n ${ndylib} ]] ; then
475
					ebegin "fixing install_name reference to ${odylib} of ${f##*/}"
476
					install_name_tool \
477
						-change "${odylib}" "${ndylib}" \
478
						"${f}"
479
					eend $?
480
				fi
481
			done
482
		done
483
	fi
484
}
485
486
multilib_src_install_all() {
487
	insinto /usr/share/vim/vimfiles/syntax
488
	doins utils/vim/*.vim
489
490
	if use clang; then
491
		cd tools/clang || die
492
493
		if use static-analyzer ; then
494
			dobin tools/scan-build/ccc-analyzer
495
			dosym ccc-analyzer /usr/bin/c++-analyzer
496
			dobin tools/scan-build/scan-build
497
498
			insinto /usr/share/${PN}
499
			doins tools/scan-build/scanview.css
500
			doins tools/scan-build/sorttable.js
501
		fi
502
503
		python_inst() {
504
			if use static-analyzer ; then
505
				pushd tools/scan-view >/dev/null || die
506
507
				python_doscript scan-view
508
509
				touch __init__.py || die
510
				python_moduleinto clang
511
				python_domodule __init__.py Reporter.py Resources ScanView.py startfile.py
512
513
				popd >/dev/null || die
514
			fi
515
516
			if use python ; then
517
				pushd bindings/python/clang >/dev/null || die
518
519
				python_moduleinto clang
520
				python_domodule __init__.py cindex.py enumerations.py
521
522
				popd >/dev/null || die
523
			fi
524
525
			# AddressSanitizer symbolizer (currently separate)
526
			python_doscript "${S}"/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py
527
		}
528
		python_foreach_impl python_inst
529
	fi
530
}
(-)a/sys-devel/llvm/metadata.xml (-1 / +28 lines)
Line 0 Link Here
0
- 
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
3
<pkgmetadata>
4
	<maintainer>
5
		<email>voyageur@gentoo.org</email>
6
		<name>Bernard Cafarelli</name>
7
	</maintainer>
8
	<maintainer>
9
		<email>mgorny@gentoo.org</email>
10
		<name>Michał Górny</name>
11
	</maintainer>
12
	<longdescription>Low Level Virtual Machine (LLVM) is:
13
   1. A compilation strategy designed to enable effective program optimization across the entire lifetime of a program. LLVM supports effective optimization at compile time, link-time (particularly interprocedural), run-time and offline (i.e., after software is installed), while remaining transparent to developers and maintaining compatibility with existing build scripts.
14
   2. A virtual instruction set - LLVM is a low-level object code representation that uses simple RISC-like instructions, but provides rich, language-independent, type information and dataflow (SSA) information about operands. This combination enables sophisticated transformations on object code, while remaining light-weight enough to be attached to the executable. This combination is key to allowing link-time, run-time, and offline transformations.
15
   3. A compiler infrastructure - LLVM is also a collection of source code that implements the language and compilation strategy. The primary components of the LLVM infrastructure are a GCC-based C and C++ front-end, a link-time optimization framework with a growing set of global and interprocedural analyses and transformations, static back-ends for many popular (and some obscure) architectures, a back-end which emits portable C code, and a Just-In-Time compilers for several architectures.
16
   4. LLVM does not imply things that you would expect from a high-level virtual machine. It does not require garbage collection or run-time code generation (In fact, LLVM makes a great static compiler!). Note that optional LLVM components can be used to build high-level virtual machines and other systems that need these services.</longdescription>
17
	<use>
18
		<flag name='clang'>Build the clang C/C++ compiler</flag>
19
		<flag name='cmake'>Enable cmake support (experimental)</flag>
20
		<flag name='doc'>Build and install the HTML documentation and regenerate the man pages</flag>
21
		<flag name='gold'>Build the gold linker plugin</flag>
22
		<flag name='llvm-gcc'>Build LLVM with <pkg>sys-devel/llvm-gcc</pkg></flag>
23
		<flag name='multitarget'>Build all host targets (default: host only)</flag>
24
		<flag name='ncurses'>Support querying terminal properties using ncurses' terminfo</flag>
25
		<flag name='static-analyzer'>Install the Clang static analyzer (requires USE=clang)</flag>
26
		<flag name='udis86'>Enable support for <pkg>dev-libs/udis86</pkg> disassembler library</flag>
27
	</use>
28
</pkgmetadata>

Return to bug 535974