commit:     29727ce6e434d8265350bbe7d1c47b13d17eb192
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 10 08:43:12 2016 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Sep 10 08:43:12 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=29727ce6

sys-devel/llvm: restore llvm-3.4.2 for Prefix bootstraps, bug #588132

Package-Manager: portage-2.2.28

 sys-devel/llvm/Manifest                            |   4 +
 ...clang-3.1-gentoo-runtime-gcc-detection-v3.patch |  29 +++
 .../llvm/files/clang-3.4-darwin_build_fix.patch    |  47 ++++
 .../llvm/files/clang-3.4-gentoo-install.patch      |  80 +++++++
 sys-devel/llvm/files/llvm-3.4-gentoo-install.patch |  96 ++++++++
 sys-devel/llvm/llvm-3.4.2-r100.ebuild              | 245 +++++++++++++++++++++
 6 files changed, 501 insertions(+)

diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
index 239bf72..37b5d6f 100644
--- a/sys-devel/llvm/Manifest
+++ b/sys-devel/llvm/Manifest
@@ -1,3 +1,4 @@
+DIST cfe-3.4.2.src.tar.gz 10612313 SHA256 
5ba6f5772f8d00f445209356a7daf83c5bca2da5acd10de517ad2359ae95bc10 SHA512 
e01fa8e312e9b3b7b3cb572ac21349161aaa50078ecfe7bded273b75db4a0c44acde524f8fdfcbeec54c61eeeb8339e9917d1f205a8fda18e34fe7ccbe89c36d
 WHIRLPOOL 
153208b1a60bb5fbe92a7162cb26bbe70d591e7db9dcf06fcd54efc539bbff0403ec88e64236969c9f256e5586bc333840bd6178fd158577d6fe228d9edd4dcd
 DIST cfe-3.5.0.src.tar.xz 8233432 SHA256 
fc80992e004b06f6c7afb612de1cdaa9ac9d25811c55f94fcf7331d9b81cdb8b SHA512 
b26a5e2cd81c150607c23b22fafc0d9c7f12b83b45e476b8e75bf5e99d42be7c98ffeac7349df664f01b00900864a01429860b298e48961861377a4b2daf3e49
 WHIRLPOOL 
5dd8b6fe97933b74f1668b1d753c16cd3bcd05ccf72aac1283aa449caf93f5ba88ae79e7668f7e79b554e1421549a87af21c86cf92657c1b4d77744165718ce7
 DIST cfe-3.5.2.src.tar.xz 8268008 SHA256 
4feb575f74fb3a74b6245400460230141bf610f235ef3a25008cfe6137828620 SHA512 
2ad9a7daa8e62cdbf47b001aa6b937a06ae7e6396dcd1832797e2d98036522443ccfca9f1253e16d531a99d1edf237fcd2b457c55491ff68ca4534a2396ca52f
 WHIRLPOOL 
51789ba2a3193d404b26d26b999fc47f1bc4b56b45048078cc51e4ff5c31d834d360ee0c2d16096c060f85acab6de9055dc375569348ae3307e4b280406f2d9e
 DIST cfe-3.6.2.src.tar.xz 8617576 SHA256 
ae9180466a23acb426d12444d866b266ff2289b266064d362462e44f8d4699f3 SHA512 
ed837c48f38d8998efd675b56477c8681dcedfcf3f71bba65930f145501289bebb6fe6a6d9de336548f94c381d016b99f10c58e046b885449755d44ac782de03
 WHIRLPOOL 
a17419cea329999c8662c0008dbd0391ed5f52045d0175488979e7620f6a9a21b08e451a5e21d3bf944597bb37934a8228fa89c09d773882359822d59bd447a8
@@ -12,6 +13,7 @@ DIST clang-tools-extra-3.7.1.src.tar.xz 277476 SHA256 
4a91edaccad1ce984c7c49a4a8
 DIST clang-tools-extra-3.8.0.src.tar.xz 334072 SHA256 
afbda810106a6e64444bc164b921be928af46829117c95b996f2678ce4cb1ec4 SHA512 
f0e593a76df5485f403079bd2fbb4e51c3d1c3fc4e63e2c2910894e8f2a7c14b47265435f3c52f035fb3fe2f595812d0f9869235296157a39c071a23e6a8b178
 WHIRLPOOL 
4928669a3c019eebe0a98ee72e25ef70ddf3c1d29e6a4aa18e408276b2a870069460c39e0e8fbe960d8d56127bb6951433d1fd89015d192951004e527b065ec9
 DIST clang-tools-extra-3.8.1.src.tar.xz 334768 SHA256 
664a5c60220de9c290bf2a5b03d902ab731a4f95fe73a00856175ead494ec396 SHA512 
ec8c4a6ac4fd1a0e24fc15e56ba00828e0d718c2f7bd477ea134ab094c67f4f4b2f603f128ec11a03b7f25f3e9b8fe75181e40730c56b7b683f54e3f37573137
 WHIRLPOOL 
b05213cbe21b778e718233cecbf4d01b92c1f133eced6fdd3fa5059c4b10e5f0407549634f65032af177ba1614250f5c02e283c2b03563db3e227b1afcae424b
 DIST clang-tools-extra-3.9.0.src.tar.xz 455144 SHA256 
5b7aec46ec8e999ec683c87ad744082e1133781ee4b01905b4bdae5d20785f14 SHA512 
7d5f8d3b44e45022db65434f4d141f23706edf6aa9f3c28ded43e84e85c7c4878ffe98bf15f71e4c71fd176dfc49ce5180892d710bc5eccf95de1ed12f3c8074
 WHIRLPOOL 
44863889eaa33face00b9644f5c1465446bec39f88bc5ea32835dfa091a83161e292c2b3bcdcccb7cb34cdc3f1970bb3bbfbf6918c425b11a1465bedc3e0611f
+DIST compiler-rt-3.4.src.tar.gz 1858593 SHA256 
f37c89b1383ce462d47537a0245ac798600887a9be9f63073e16b79ed536ab5c SHA512 
70efffaf12ff7c15befa87ce808489c6f6b6eb421d0ab5d8ecd525239efc8aab850c7ed34b31a993ff5e499657b72598619945cc4461fe3e5359e9a94aaac0c8
 WHIRLPOOL 
ad558b5877a01e476d30d2757959ab04be0c385b2fe3442bcc578bf36c6f3214cd78b4adda24fcb1f3b2b84353db213b82e8d7d4c40e66c3f57aed3a49322dbc
 DIST compiler-rt-3.5.0.src.tar.xz 1088352 SHA256 
a4b3e655832bf8d9a357ea2c771db347237460e131988cbb96cda40ff39a8136 SHA512 
862cce2d6b398bd1a8399496a547e6ab976a31f676528beebfbea5fd7dc54aa72e1c25deefa12f6167096521eba74090565b0168806451da02ddac04e922fc48
 WHIRLPOOL 
248acf997d70d7904aa79bf83e0c02ba4e5f8c2812c03f44a8e1e31b845a654f250c09ec6a123f9245d0db8713e8cc5a4087b9ce785af4f5eb7e55d9dbd362a2
 DIST compiler-rt-3.5.2.src.tar.xz 1093000 SHA256 
542d7aadd21e7fe35bea0a7912bc965f08a1a566746cebcca76f96dcfeb74dc3 SHA512 
319a8a1dbe07eb4f1fcccfe79a1fa445f348fb854a441500e89fa0a128e45716b65d06347f19a63de32e9294cd2331e914ae0d5fe8224f0b2452c39b79ac96ff
 WHIRLPOOL 
6e9286c56a60a515006c8232ca01622ae844185a5f31fb49bce632868862c5e560619f1c45da66878b5322a764f91a284cd296e9f13105d6f74e055a17321d93
 DIST compiler-rt-3.6.2.src.tar.xz 1128080 SHA256 
0f2ff37d80a64575fecd8cf0d5c50f7ac1f837ddf700d1855412bb7547431d87 SHA512 
7dafcc5bd4822475de649d8a84ae51af3c4ed4d0958f76b1b55ba79219638f3e78eb94a1986c6e9ba0e7f1ccf3ec834d546b5ca60e8b08083fea5880ecdf17a3
 WHIRLPOOL 
dd77e7df43c9028a6873ed903da67560fdb04968013016a7f0ad2d2e9a81b3a3d890b95e4f49a6bdef349806d6507defcd80a0a9fb50c1c9f778e7eff42dbc5d
@@ -23,6 +25,8 @@ DIST lldb-3.7.1.src.tar.xz 10650524 SHA256 
9a0bc315ef55f44c98cdf92d064df0847f453
 DIST lldb-3.8.0.src.tar.xz 10929768 SHA256 
e3f68f44147df0433e7989bf6ed1c58ff28d7c68b9c47553cb9915f744785a35 SHA512 
a491209ae12b0c7d938ebd94362396a50922326ed24ed11f71b1f19b61274a34a92d2bd46857b44081e7fa3e6d0a641d148bd4022f8edf71f80ff2aa7a55ebef
 WHIRLPOOL 
c498c22acab867419143745ce0212c70bdfc141dbae19ab53221908eba7961aae6a029cbad01b8409e6fbc187550141ed87f32366dd847ac57754891fbbc4049
 DIST lldb-3.8.1.src.tar.xz 10928220 SHA256 
349148116a47e39dcb5d5042f10d8a6357d2c865034563283ca512f81cdce8a3 SHA512 
d73c55daed6ef5e5ca784c7010f2d75be26024b14fa61a2861a8a6cbe129e417fb7be2a3b532e17e9d7de98ae38ce6a689d8166049eff365fb04f4bd772758f3
 WHIRLPOOL 
78dd8161cd1411bd62cb3ffe1196fe95ccb73d78f2e141a58c63776eb6d91065fe1348b1b8e241630cdf954ab659b333ebbcdcaeba3e6df36af62aaf3a7c6634
 DIST lldb-3.9.0.src.tar.xz 13754516 SHA256 
61280e07411e3f2b4cca0067412b39c16b0a9edd19d304d3fc90249899d12384 SHA512 
b2d7f36b4462dba8e478022da19981e2d029bc4728efeed50600f0d03e3dd4573e7fb3cee773ec19b11ad3d8ba53b1aef9de1b21612e77d2888d0f6de433b24a
 WHIRLPOOL 
6df1ea72ae76826e318a8602105203e6456a3dd7277a3080f3d5a32958c539e34922a178e0ea32440744a5b76029eb50032eb0de2288762490b67709da89dbf1
+DIST llvm-3.4-manpages.tar.bz2 33753 SHA256 
dc2616104cf333dd9ef56b2d31f9a36e81303e2c5756ff8bc221e05b46f7e1cb SHA512 
8e438a9392c9b896ccb2b1460a8f57ffa01633e3a6bba61e2bf2f718d970ff96c17d63b0bc0d4da1162e1d1dc4cb9b2a9e9a14a722e8a5b5d2f205f037ae665d
 WHIRLPOOL 
1c037a9972442937f84bc3147d77d4bbc6d6c0812c3025f3107c2ee5f6259afab990f6e1bca564237fdca8089e2372df4b7ca45cbdea686fbf891f92d1bfbbe6
+DIST llvm-3.4.2.src.tar.gz 15938155 SHA256 
17038d47069ad0700c063caed76f0c7259628b0e79651ce2b540d506f2f1efd7 SHA512 
6c1453f7d9d9110257db3574cc4f6227fed8938705cbb09851ac09a868089b48f1556a1b6e758aff6d97520b08b5605d3ed20411ad9dd22cdc573d62176905f0
 WHIRLPOOL 
f8b4d5167469e6f350ec41aede04e7b756e18f3d8e78b3270beb5791310a7b9b13c69e57c8bcfefbd0a78efc0c40e3b75a9a158eac72c025b7c77146e8dfaf7c
 DIST llvm-3.5.0-manpages.tar.bz2 35314 SHA256 
724e752a60016dce8cc536658906d3646c600e977374e0ea692a5d0fe2d4a021 SHA512 
d99d6096d7f21a81923297584fe5eeb23e0d83d4538fe376615c92fffc8aff3189999f7ab3c537b5aa5d6bc2c22c53eb05717d48c7ab99c42315b8665bac62c3
 WHIRLPOOL 
68ced06ee6678c5333c662eb1cc0da744c5a184b12dd059c1b77ec200b1d3cc231f270b9d9b6e177d728776894277b3f9061338aa55620c90474eb97915b7819
 DIST llvm-3.5.0.src.tar.xz 11735940 SHA256 
28e199f368ef0a4666708f31c7991ad3bcc3a578342b0306526dd35f07595c03 SHA512 
b4d0f325dbdb0a8f10e5fd031954ef4b1971d8f99f4e4b53834801a2b74a7acde3f77c655c8355b407424b363edfb10f71d85fc370356dc52af5c636a1bba197
 WHIRLPOOL 
561520823468b61c63df8e13f876b7ac586eb1e52c256e9a36370e5d46e8cef3937655c36fbb51eebd3680fab67412e7c777479477fc728e7a8f35420e573ef1
 DIST llvm-3.5.2.src.tar.xz 11876128 SHA256 
44196156d5749eb4b4224fe471a29cc3984df92570a4a89fa859f7394fc0c575 SHA512 
0f6a83cc61a385387e7baf8fb8f0d9f18e3fd00d2d389a3c7e2c3792be7d82ed095506cac52c24e65ae3c1f94456a441d39440feef6125e25ef18447ec9dd406
 WHIRLPOOL 
b41de51907d6d2c2d04a4c498b44f0ed560cc710e6e2d8678f5ef93a9009d140bc7c2406f4b25d5b901fd026689d48edce77a2e435687b489b835156a512e256

diff --git 
a/sys-devel/llvm/files/clang-3.1-gentoo-runtime-gcc-detection-v3.patch 
b/sys-devel/llvm/files/clang-3.1-gentoo-runtime-gcc-detection-v3.patch
new file mode 100644
index 00000000..49f1085
--- /dev/null
+++ b/sys-devel/llvm/files/clang-3.1-gentoo-runtime-gcc-detection-v3.patch
@@ -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");

diff --git a/sys-devel/llvm/files/clang-3.4-darwin_build_fix.patch 
b/sys-devel/llvm/files/clang-3.4-darwin_build_fix.patch
new file mode 100644
index 00000000..113b04b
--- /dev/null
+++ b/sys-devel/llvm/files/clang-3.4-darwin_build_fix.patch
@@ -0,0 +1,47 @@
+Our (gcc/binutils) toolchain doesn't do ARM targets, hence we will get
+"unable to interface with target machine" errors while building if we
+attempt to.  Disable those targets.
+
+Patch by Reza Jelveh from
+https://github.com/fishman/timebomb-gentoo-osx-overlay/blob/master/sys-devel/llvm/files/llvm-3.4-fix_darwin_build.patch
+
+--- a/projects/compiler-rt/make/platform/clang_darwin_embedded.mk
++++ b/projects/compiler-rt/make/platform/clang_darwin_embedded.mk
+@@ -27,20 +27,20 @@ UniversalArchs :=
+ # Soft-float version of the runtime. No floating-point instructions will be 
used
+ # and the ABI (out of necessity) passes floating values in normal registers:
+ # non-VFP variant of the AAPCS.
+-Configs += soft_static
+-UniversalArchs.soft_static := armv6m armv7m armv7em armv7
++# Configs += soft_static
++# UniversalArchs.soft_static := armv6m armv7m armv7em armv7
+ 
+ # Hard-float version of the runtime. On ARM VFP instructions and registers are
+ # allowed, and floating point values get passed in them. VFP variant of the
+ # AAPCS.
+ Configs += hard_static
+-UniversalArchs.hard_static := armv7em armv7 i386 x86_64
++UniversalArchs.hard_static := i386 x86_64
+ 
+-Configs += soft_pic
+-UniversalArchs.soft_pic := armv6m armv7m armv7em armv7
++# Configs += soft_pic
++# UniversalArchs.soft_pic := armv6m armv7m armv7em armv7
+ 
+ Configs += hard_pic
+-UniversalArchs.hard_pic := armv7em armv7 i386 x86_64
++UniversalArchs.hard_pic := i386 x86_64
+ 
+ CFLAGS := -Wall -Werror -Oz -fomit-frame-pointer -ffreestanding
+ 
+--- a/tools/clang/runtime/compiler-rt/Makefile
++++ b/tools/clang/runtime/compiler-rt/Makefile
+@@ -85,7 +85,7 @@ RuntimeLibrary.darwin.Configs := \
+       profile_osx.a profile_ios.a \
+       ubsan_osx.a
+ RuntimeLibrary.darwin_embedded.Configs := \
+-      soft_static.a hard_static.a soft_pic.a hard_pic.a
++       hard_static.a  hard_pic.a
+ 
+ # Support building compiler-rt with relocatable SDKs.
+ #

diff --git a/sys-devel/llvm/files/clang-3.4-gentoo-install.patch 
b/sys-devel/llvm/files/clang-3.4-gentoo-install.patch
new file mode 100644
index 00000000..0a1d9eb
--- /dev/null
+++ b/sys-devel/llvm/files/clang-3.4-gentoo-install.patch
@@ -0,0 +1,80 @@
+From a12fc090b3b43fe25c7de50c09782611e3834aeb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]>
+Date: Sat, 14 Jun 2014 19:35:33 +0200
+Subject: [PATCH] clang gentoo fixes
+
+---
+ tools/clang/lib/Driver/Tools.cpp        | 6 +++---
+ tools/clang/tools/scan-build/scan-build | 4 ++--
+ tools/clang/tools/scan-view/scan-view   | 2 +-
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/tools/clang/lib/Driver/Tools.cpp 
b/tools/clang/lib/Driver/Tools.cpp
+index b013eb5..dbbcacb 100644
+--- a/tools/clang/lib/Driver/Tools.cpp
++++ b/tools/clang/lib/Driver/Tools.cpp
+@@ -222,7 +222,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));
+ }
+@@ -5911,7 +5911,7 @@ void freebsd::Link::ConstructJob(Compilation &C, const 
JobAction &JA,
+   // forward.
+   if (D.IsUsingLTO(Args)) {
+     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
+@@ -6534,7 +6534,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const 
JobAction &JA,
+   // forward.
+   if (D.IsUsingLTO(Args)) {
+     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 0f119f6..58f78d9 100755
+--- a/tools/clang/tools/scan-build/scan-build
++++ b/tools/clang/tools/scan-build/scan-build
+@@ -419,7 +419,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);  
+@@ -429,7 +429,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)
+-- 
+2.0.0
+

diff --git a/sys-devel/llvm/files/llvm-3.4-gentoo-install.patch 
b/sys-devel/llvm/files/llvm-3.4-gentoo-install.patch
new file mode 100644
index 00000000..a2ba7de
--- /dev/null
+++ b/sys-devel/llvm/files/llvm-3.4-gentoo-install.patch
@@ -0,0 +1,96 @@
+From b8846d389ff5e2b768a114f752cf39788accba26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]>
+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
+

diff --git a/sys-devel/llvm/llvm-3.4.2-r100.ebuild 
b/sys-devel/llvm/llvm-3.4.2-r100.ebuild
new file mode 100644
index 00000000..5e73596
--- /dev/null
+++ b/sys-devel/llvm/llvm-3.4.2-r100.ebuild
@@ -0,0 +1,245 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+inherit eutils check-reqs flag-o-matic multilib pax-utils prefix \
+       python-any-r1 toolchain-funcs
+
+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-3.4.src.tar.gz
+               http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.gz )
+       https://dev.gentoo.org/~mgorny/dist/${PN}-3.4-manpages.tar.bz2";
+
+LICENSE="UoI-NCSA"
+SLOT="0/3.4"
+KEYWORDS="~ppc-macos ~x64-macos ~x86-macos"
+IUSE="clang +libffi"
+
+COMMON_DEPEND="
+       sys-libs/zlib:0=
+       libffi? ( >=virtual/libffi-3.0.13-r1:0= )"
+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-apple-4.2.1 >=sys-devel/llvm-3.3 )
+       >=sys-devel/binutils-apple-5.1
+       libffi? ( virtual/pkgconfig )
+       ${PYTHON_DEPS}"
+RDEPEND="${COMMON_DEPEND}
+       clang? ( !<=sys-devel/clang-${PV}-r99
+               !>=sys-devel/clang-9999 )"
+PDEPEND="clang? ( =sys-devel/clang-${PV}-r100 )"
+
+S=${WORKDIR}/${P}.src
+
+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 is-flagq '-g?(gdb)?([1-9])'; 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
+
+       local CHECKREQS_DISK_BUILD=${build_size}M
+       check-reqs_pkg_pretend
+}
+
+pkg_setup() {
+       pkg_pretend
+}
+
+src_unpack() {
+       default
+
+       rm -f "${S}"/tools/clang "${S}"/projects/compiler-rt \
+               || die "symlinks removal failed"
+
+       if use clang; then
+               mv "${WORKDIR}"/cfe-${PV}.src "${S}"/tools/clang \
+                       || die "clang source directory move failed"
+               mv "${WORKDIR}"/compiler-rt-3.4 "${S}"/projects/compiler-rt \
+                       || die "compiler-rt source directory move failed"
+       fi
+}
+
+src_prepare() {
+       epatch "${FILESDIR}"/${PN}-3.2-nodoctargz.patch
+       epatch "${FILESDIR}"/${PN}-3.4-gentoo-install.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
+               epatch "${FILESDIR}"/clang-3.4-darwin_build_fix.patch
+               epatch "${FILESDIR}"/clang-3.4-darwin_prefix-include-paths.patch
+               eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
+       fi
+
+       if use prefix && use clang; then
+               sed -i -e "/^CFLAGS /s@-Werror@-I${EPREFIX}/usr/include@" \
+                       projects/compiler-rt/make/platform/clang_*.mk || die
+       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"
+
+       if use clang; then
+               # constantly fails for a long time, likely due to our patches
+               rm tools/clang/test/Driver/cross-linux.c || die
+       fi
+
+       # User patches
+       epatch_user
+
+       python_setup
+}
+
+multilib_src_configure() {
+       # disable timestamps since they confuse ccache
+       local conf_flags=(
+               --disable-timestamps
+               --enable-keep-symbols
+               --enable-shared
+               --with-optimize-option=
+               --enableoptimized
+               --disable-assertions
+               --disable-expensive-checks
+               --disable-terminfo
+               $(use_enable libffi)
+
+               --enable-bindings=none
+               --enable-targets=host
+
+               ac_cv_prog_XML2CONFIG=""
+       )
+
+       if use clang; then
+               conf_flags+=(
+                       --with-clang-resource-dir=../lib/clang/${PV}
+               )
+       fi
+
+       if use libffi; then
+               local CPPFLAGS=${CPPFLAGS}
+               append-cppflags "$(pkg-config --cflags libffi)"
+       fi
+
+       # llvm prefers clang over gcc, so we may need to force that
+       tc-export CC CXX
+
+       ECONF_SOURCE=${S} \
+       econf "${conf_flags[@]}"
+}
+
+src_compile() {
+       LLVM_MAKEARGS=(
+               VERBOSE=1
+               REQUIRES_RTTI=1
+               GENTOO_LIBDIR=$(get_libdir)
+       )
+
+       emake "${LLVM_MAKEARGS[@]}"
+
+       pax-mark m Release/bin/llvm-rtdyld
+       pax-mark m Release/bin/lli
+       pax-mark m Release/bin/lli-child-target
+}
+
+src_install() {
+       emake "${LLVM_MAKEARGS[@]}" DESTDIR="${D}" install
+
+       if ! use clang; then
+               rm "${WORKDIR}"/${PN}-3.4-manpages/clang.1 || die
+       fi
+       doman "${WORKDIR}"/${PN}-3.4-manpages/*.1
+
+       # 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= ndylib= libpv=${PV}
+       if [[ ${CHOST} == *-darwin* ]] ; then
+               eval $(grep PACKAGE_VERSION= configure)
+               [[ -n ${PACKAGE_VERSION} ]] && libpv=${PACKAGE_VERSION}
+               libpvminor=${libpv%.[0-9]*}
+               for lib in 
lib{EnhancedDisassembly,LLVM-${libpv},LTO,profile_rt,clang}.dylib 
LLVMHello.dylib 
clang/${libpv}/lib/darwin/libclang_rt.asan_{osx,iossim}_dynamic.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*.dylib 
"${ED}"/usr/lib/clang/${libpv}/lib/darwin/*.dylib ; do
+                       # omit clang libs if not enabled
+                       [[ -f "${f}" ]] || continue
+
+                       scanmacho -BF'%n#f' "${f}" | tr ',' '\n' | \
+                       while read odylib ; do
+                               ndylib=
+                               case ${odylib} in
+                                       */libclang.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libclang.dylib
+                                               ;;
+                                       */libLLVM-${libpv}.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpv}.dylib
+                                               ;;
+                                       */libLLVM-${libpvminor}.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpvminor}.dylib
+                                               ;;
+                                       */libLTO.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLTO.dylib
+                                               ;;
+                               esac
+                               if [[ -n ${ndylib} ]] ; then
+                                       ebegin "fixing install_name reference 
to ${odylib} of ${f##*/}"
+                                       install_name_tool \
+                                               -change "${odylib}" "${ndylib}" 
\
+                                               "${f}"
+                                       eend $?
+                               fi
+                       done
+               done
+       fi
+}

Reply via email to