summaryrefslogtreecommitdiff
path: root/sys-devel/gcc-apple
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/gcc-apple')
-rw-r--r--sys-devel/gcc-apple/Manifest19
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.0.1_p5465-default-altivec.patch38
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-arch-option.patch57
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-autoconf-m4-precious.patch12
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-dsymutil.patch20
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs-r1.patch39
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs.patch27
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1-texinfo.patch33
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-darwin14.patch148
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-perl-5.18.patch11
-rw-r--r--sys-devel/gcc-apple/files/libstdc++-16.patch11
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.2.1_p5666-r2.ebuild375
-rw-r--r--sys-devel/gcc-apple/metadata.xml13
13 files changed, 803 insertions, 0 deletions
diff --git a/sys-devel/gcc-apple/Manifest b/sys-devel/gcc-apple/Manifest
new file mode 100644
index 000000000000..e1d2a427a124
--- /dev/null
+++ b/sys-devel/gcc-apple/Manifest
@@ -0,0 +1,19 @@
+AUX gcc-apple-4.0.1_p5465-default-altivec.patch 1381 SHA256 699dfea402a5a2d80f8374254a36fc7552f32b5fc25c1d15d9b88b7742874f09 SHA512 8eb71bb7d478af415d4222774172423744ec8ded1c1fe03da03779a4e8d19ce7783bf246b7249f30249a4d9f2eb34f667fa43a2e40edba23f22fe535c2dc6100 WHIRLPOOL 071667d5b0b49ce0a455e7fb7f0960e50e9ccb6d8f73464fee89a06836439e65fa42730d0e959511c6ad26865f4a3c6352801c7ff3bce51c3bfdf019fcf70ebc
+AUX gcc-apple-4.2.1-arch-option.patch 2151 SHA256 f7f7da2d46ec6dc8ab8cf8754994abf93db7a925f20f92433e2e3f0f49b15e85 SHA512 daa34b0db6b5ce46766628819b7234fd1310060d359bf088d5ab06f2aeef9f4fc33f403b428e105c7cecc6d4d3b823134ddc090cc0c44bd6650d3b6a65c58635 WHIRLPOOL 555e66197abe1b95c60281c6158eb1039883819b510c205de17aedc1b4a4f5b9bb6404e342a5df75520d09b3ca5d009a70abcb2970d8ca0d29fb323dbff7f84e
+AUX gcc-apple-4.2.1-autoconf-m4-precious.patch 340 SHA256 22d04767775394bf88f7108e29338fe3d1d8f5f3c7ce115d211730c9c52562cc SHA512 7a7f40e1aa87c92d412d9b803cfbe43ecc51568a39bfab29eb3307489661a68c40d690af53a8902ce55e96f364860287a19934e3fe3d075c5d62e086d72836db WHIRLPOOL c666cc4ee0e63f0421a404ff21e7beb52dc89442ba09a3366e46a0027b2156b61e1258abff3c9d5d452b2439481226b78871c7d65b4e1e3d1bec261352d83401
+AUX gcc-apple-4.2.1-dsymutil.patch 853 SHA256 bba3d9d406afe12f1fd55f7b91ab65c07d4a1b37401d711a0ea287104aa07040 SHA512 382a49d92f03772e71bbb5b31257187b3fd964583f4a1ab2a19a459f679d9dd48549813cb3ef03e6cbaf728c9e62162364d1dafb75257d85b687b7e356d580d0 WHIRLPOOL 0f2964ebd56dfdb5ad84bc465fb64cc0140c9ecbfc3eefa584ff06b2d1c8bfce8f09d2ab449628730813daf265d0e9dd1ea673d28b62670f9f3f1ad123e90fb4
+AUX gcc-apple-4.2.1-prefix-search-dirs-r1.patch 1587 SHA256 87cc753a3e125a04e2a3019c39b113a269c6801d1d14affd02f0cb0d2adc9901 SHA512 04ebd1b02ce022c4277988fabb7c198286bc9604ade70cf5d64a0296781a377b6c26ad8206da63d37ca1211537b4b8d31d7b06ae1fa3405f77f19ce01636156f WHIRLPOOL 37dee072631014a6ab90c14c1bbab3bf20a662fccf771e135c943a600796e3362c776ab09a745f872666f384f4fe57fbf5cdd203b3a935607eff4ad5c1de3d67
+AUX gcc-apple-4.2.1-prefix-search-dirs.patch 1053 SHA256 8f71661b144df92cd9a924b54cbd11a28de0b7ddc258a489bd1e1913e7d4a208 SHA512 0efdedb7a69b21732f254567f0593319f06ed25c12641d6df0219c5b1c90768494286affd98c02a726c82ffe0e27aa4548c9701981dc6a2eb8a0c3455b78a364 WHIRLPOOL 0df7f9cb80d692f93e88f073562d51658d251956ea53b1eb1a5d364fe961c22521436ea0429f711c9424ef6da47b945fafc64ffa42aa70d89c244c8442a75344
+AUX gcc-apple-4.2.1-texinfo.patch 1110 SHA256 1efd6ac46557feb01b7c28b214209ed3eab4714d91b6cbdf8701801ff53d545d SHA512 1b27fa076dffc80d4ea9cc2e209f4ef2cd31ba4f585b977c20a15432cb7a86f3bc76aa734cb328e5702309585e1c440ed33fd605b863e41c91d96268d1b6bf36 WHIRLPOOL 7b4a80716e02d212893291b69465aeab83dde2ff326497929fce040736f6fd8cd8efe3ce1272e039fc36b9a3780665653b7477ea8ab76595d349d84af26a19f6
+AUX gcc-apple-4.2.1_p5666-darwin14.patch 4870 SHA256 3e97bf7788f0a16fb93baa34ab5053f89cc503486123ba23ee809956d4fbaf9a SHA512 4569f6ae976760074629f5526a45793e10ca56508f13642c4da173c387f4ccf1ffc62b595e3fbc8694fd0d673f5a19eb5a9002b211ed149ad4492044d26bbba7 WHIRLPOOL 387000a9adb9875e728069d93bd90862e16fab847d1d71ee0ca72ff61b4155ef170221b2d17ccf354c1d2a808b297c7783f041bf0f09cc534be3da388266cc8e
+AUX gcc-apple-4.2.1_p5666-perl-5.18.patch 286 SHA256 7364a7a2c8fc79d5698bc96572e15269e04a619d6cc30d7a640d14c2ec0711c6 SHA512 bdbb2e1d6146ff461c762d3efff59f272762121b033eb24bb1a016ab946268ec77dc22d01997870c406ac09d55e668eead61865a696a490482e69befb84cfdba WHIRLPOOL a531698dfc39cc1073d85a0063b2ce729461135979dd06a78dc2efc73c02989a4c123cbe3623609dad7f8c08ba2a25f43e0586083ce99ae85904b4f1f2913903
+AUX libstdc++-16.patch 253 SHA256 f037576ba363256c61979eb68a2c1dff24445e8c5f403a729bead2c7db1f0314 SHA512 aefc96161aba55ee77620e440cab3674f069331a6947e26acf56562e286e64f0888b247b9e67b02f68b16f4522e7e6ab4b145190508ed9222ad2dc98cc625716 WHIRLPOOL 87eb1017709dacc552861aa1a85fa81c53ef4a89017dbab18cdc62ddcd0f9aca13ac3aac51268644cf8a812bc23023f4ee2ed09e1684c6f61865400d8a7d5e21
+DIST gcc-5666.3.tar.gz 19367320 SHA256 6c46f4376d11ada5be0cfc3894b9296edf574af3c616ab71803ea78edfd7015b SHA512 31cf52a00f31bcd7c47382888152cfe9851688c8fb7b1f236197b06b8acdd96b1943d327f8fab0fd305531c99a8fbf4865b2214dc2d1a236bb8ad39f710ce931 WHIRLPOOL 03711b56d38b2cb3b5af735802a82ef435cf42c3aa4fa74fa754b016edea447d011e626115fe59449def14ac34422788340165faab567b6fb992d1fe1684f93d
+DIST gcc-apple-4.2.1_p5646-gfortran.patch 38284 SHA256 c909a792b4e3ea76cbba6d8aefd712ef98506bd4e3dd275a144e5ed272c2ae22 SHA512 94b1c7d343b780e52bbbbc213987feda7d8f7e083d7c338ab244e89e69ba5c2fc74a9695c5f38f273e4e50683ef67b4de85abd4aa0c5c2fe3a28f7bf275dbf3a WHIRLPOOL 12da437da136b1d581b075b86d7a1ae8687e56fd811e0fc4b650faf2831746466358d63d34309bee9ab4254dff4f861685ecb0f5a20697ad7e77afc7cd0d7ef4
+DIST gcc-fortran-4.2.4.tar.bz2 905688 SHA256 6fc2056cd62921b2859381749710af765a46877bd46f9fe5ef6fab0671c47e04 SHA512 1a36587a3691b8d7ecd23938efcdfca42642b6b260a1c830f6d791bb1b8ac32953998c45d77eee2d557861d631431569503c796b61aeaea9ac5fffbce1982faa WHIRLPOOL 5db1f448b3c08985ee2d0b1a9101e72733f4859184892da67268650c1010c26487b5ff15670151e67fdde5e4bd9053ed2e98b1582d1f4f99375b1bcdaf94351a
+DIST libstdcxx-16.tar.gz 64695692 SHA256 a7d8041e50e110f5a503e188a05cb217f0c99c51f248a0a1387cc07a0b6f167f SHA512 2f0e8d694aaaf94fc2a0463ebd4a5775865421dedb431a6f6f701a8d33078e768bef232f72e2cf1f8e2d278eb60ff54030f5ad22b43eb0643d49bc4717e96b05 WHIRLPOOL fb90a1df90e60717906d227fb1dc2b8639fd063dbf6eec39d3a840dc8025c5384bd2c8b0a86158f8c072a1008ac2561e8e9f512ef4a4f84c081903154bb9d378
+DIST libstdcxx-39.tar.gz 117081330 SHA256 aad6c0b7aa80b8117af1868d502f7aa4d042e5f33cada853a8ba75980391c6bb SHA512 c640292c0f371069fbb635ed0385627c8abab869db93513922e19b25886864d093eef3684c49bf1ba82325f2d1d3cd1eb382ef6ea9dee039208fe99fe8653db6 WHIRLPOOL ae0eba85e393ea8f14369557712e26c6662e147dec6d8ec0da0919a8290a834c7a1c0150bcc48972f111a14fcfe1501362b2b0dc9dc57aeb8456a35b74d8457e
+EBUILD gcc-apple-4.2.1_p5666-r2.ebuild 13193 SHA256 0ed5d81df030a5f87103bcaff68e98eed4450fea82a9b8de6ec01dc6bbe629e5 SHA512 4d85007f599e285ef6f91d40e422a9d380c0eb3e8eb6be522d2b635b7e6da98fe9ea62ad63e73b61aa04fd6546cc497246a1dc75ee1fc669f2cbea1734e12f12 WHIRLPOOL ce7a95794cabe9a1bc328b96b55a20ef96e647a6341d688766ac3847cdc8c6ea3ad728b83681d7360c6b19db281da660c8853c47cea5788ca7cf091e077e3e22
+MISC ChangeLog 5227 SHA256 334d2017f0c9411c02ef99c628e05740a43cdc82cf71bb2e8a276e1d52495003 SHA512 874038b55c0c5703890273ad1a539aa404b0753340339e42f50eb9f135614e987326f35505adcb2db74c759ffdd4859a3d31f25952b7bef782fc845f63dd6e1f WHIRLPOOL f4bce37f10f754584f4ba41e3242ae171c36d6ea051a015726a24cf324b7218e5ceaf8e0715238fc32af95b9da725f4e7e5a9b490e24d43113cbbedf697071be
+MISC ChangeLog-2015 15474 SHA256 be7735f12a7d53a70d2b3b4b8ac157bccba5643fe8769bce844fcd54a0adbc06 SHA512 ac010807af2bd101211962417a88cb000e23a7a230ff64bbf4829b16129eea9da24ca5d35124cd557d0d897e66d8e642f1e1c9a74755354897858ed596937e8a WHIRLPOOL 41392e18ed401df72776143d733b5f8da2518aee537e8ead704270de3c8821a45b75adf97624e7e2c4c99656eabca3b16604160bebc624cb75981af855753062
+MISC metadata.xml 530 SHA256 cf6199d73a3b413442595861daebab28d16f561aacc47dd20d0228583909aecd SHA512 29922e179098de072d1a5bd869ba4505a88ee1340ceb66b0898b58446ddd74b6a6dcc961b4a1445d2db3b95259c6cb31030b9c0b7ea036a92b303b7f7ac3b371 WHIRLPOOL 52fe3540af10f029e8be63b0aa8ed1c3e52a08ebdc799b31e7b7f9ddaac73052c657cacd9c8fe4a77bc8a150bb1b70ac8bca3575a7bc5c6d007d384d2a0f97fc
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.0.1_p5465-default-altivec.patch b/sys-devel/gcc-apple/files/gcc-apple-4.0.1_p5465-default-altivec.patch
new file mode 100644
index 000000000000..e7b0bbbf8078
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.0.1_p5465-default-altivec.patch
@@ -0,0 +1,38 @@
+* reverse patch to gain 10.4 behaviour for AltiVec.
+
+--- gcc/config/rs6000/rs6000-c.c
++++ gcc/config/rs6000/rs6000-c.c
+@@ -245,22 +245,22 @@
+ builtin_define ("__bool=__attribute__((altivec(bool__))) unsigned");
+
+ /* APPLE LOCAL begin AltiVec */
++ builtin_define ("vector=vector");
++ builtin_define ("pixel=pixel");
++ builtin_define ("_Bool=_Bool");
++ builtin_define ("bool=bool");
++ init_vector_keywords (pfile);
++
++ /* Indicate that the compiler supports Apple AltiVec syntax,
++ including context-sensitive keywords. */
+ if (rs6000_altivec_pim)
+ {
+- builtin_define ("vector=vector");
+- builtin_define ("pixel=pixel");
+- builtin_define ("_Bool=_Bool");
+- builtin_define ("bool=bool");
+- init_vector_keywords (pfile);
+-
+- /* Indicate that the compiler supports Apple AltiVec syntax,
+- including context-sensitive keywords. */
+ builtin_define ("__APPLE_ALTIVEC__");
+ builtin_define ("vec_step(T)=(sizeof (__typeof__(T)) / sizeof (__typeof__(T) __attribute__((altivec(element__)))))");
+-
+- /* Enable context-sensitive macros. */
+- cpp_get_callbacks (pfile)->macro_to_expand = rs6000_macro_to_expand;
+ }
++
++ /* Enable context-sensitive macros. */
++ cpp_get_callbacks (pfile)->macro_to_expand = rs6000_macro_to_expand;
+ /* APPLE LOCAL end AltiVec */
+ }
+ if (TARGET_SPE)
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-arch-option.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-arch-option.patch
new file mode 100644
index 000000000000..94abba89306c
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-arch-option.patch
@@ -0,0 +1,57 @@
+Description: Add dummy -arch option with simplistic check.
+Author: Heiko Przybyl <zuxez@cs.tu-berlin.de>
+
+diff -pruN gcc-5664.orig/gcc/gcc.c gcc-5664/gcc/gcc.c
+--- gcc-5664.orig/gcc/gcc.c 2010-09-21 22:28:11.000000000 +0200
++++ gcc-5664/gcc/gcc.c 2010-09-21 22:28:24.000000000 +0200
+@@ -88,6 +88,8 @@ compilation is specified by a string cal
+ #include "flags.h"
+ #include "opts.h"
+
++#include <mach-o/arch.h>
++
+ /* By default there is no special suffix for target executables. */
+ /* FIXME: when autoconf is fixed, remove the host check - dj */
+ #if defined(TARGET_EXECUTABLE_SUFFIX) && defined(HOST_EXECUTABLE_SUFFIX)
+--- gcc-5664/gcc/gcc.c.orig 2010-09-22 01:30:04.000000000 +0200
++++ gcc-5664/gcc/gcc.c 2010-09-22 01:36:52.000000000 +0200
+@@ -1401,6 +1401,39 @@ translate_options (int *argcp, const cha
+ nskip += 1;
+ else if (! strcmp (p, "Xassembler"))
+ nskip += 1;
++ /* GENTOO_PORTAGE Allow but filter -arch. */
++ if (! strcmp (p, "arch")) {
++ if (i + 1 == argc)
++ fatal ("argument to `-arch' is missing");
++ /* Check current arch vs. given arch if possible. */
++ const NXArchInfo *ai = NXGetLocalArchInfo();
++ if (ai) {
++ /* Returns the most generic setting */
++ /* aka "i386", "x86_64", "ppc", "ppc64", "arm". */
++ const NXArchInfo *gai = NXGetArchInfoFromCpuType(ai->cputype, CPU_SUBTYPE_MULTIPLE);
++ if (gai) {
++ const char *name = gai->name;
++#ifdef __LP64__
++ /* Make sure x64 on 32bit kernel is set correctly. */
++ if (gai->cputype == CPU_TYPE_I386) {
++ name = "x86_64";
++ }
++ else if (gai->cputype == CPU_TYPE_POWERPC) {
++ name = "ppc64";
++ }
++#endif
++ if (strcmp(name, argv[i + 1]) != 0) {
++ fatal ("`-arch %s' does not match current compiler arch `%s'",
++ argv[i + 1], name);
++ }
++ }
++ }
++
++ /* Skip argument. */
++ i += 2;
++ /* Don't add option to the new env. */
++ nskip = 0;
++ }
+
+ /* Watch out for an option at the end of the command line that
+ is missing arguments, and avoid skipping past the end of the
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-autoconf-m4-precious.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-autoconf-m4-precious.patch
new file mode 100644
index 000000000000..0ad6ced95867
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-autoconf-m4-precious.patch
@@ -0,0 +1,12 @@
+https://sourceware.org/ml/libffi-discuss/2009/msg00289.html
+
+--- libgomp/configure.ac
++++ libgomp/configure.ac
+@@ -110,6 +110,7 @@
+ m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+ m4_define([_AC_ARG_VAR_PRECIOUS],[])
+ AC_PROG_CC
++m4_undefine([_AC_ARG_VAR_PRECIOUS])
+ m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+ AC_SUBST(CFLAGS)
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-dsymutil.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-dsymutil.patch
new file mode 100644
index 000000000000..8da025d8c5d0
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-dsymutil.patch
@@ -0,0 +1,20 @@
+Revert of dsymutil part of
+http://gcc.gnu.org/ml/gcc-patches/2006-09/msg00057.html
+See http://article.gmane.org/gmane.linux.gentoo.alt/4327
+
+--- gcc/config/darwin.h
++++ gcc/config/darwin.h
+@@ -326,12 +326,7 @@
+ "/* APPLE LOCAL nested functions 4357979 */"\
+ %{fnested-functions: -allow_stack_execute} \
+ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %G %L}} \
+-"/* APPLE LOCAL begin mainline 4.3 2006-10-31 4370146 */"\
+- %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}}\n\
+-%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
+-"/* APPLE LOCAL end mainline 4.3 2006-10-31 4370146 */"\
+- %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm: \
+- %{g*:%{!gstabs*:%{!g0: dsymutil %{o*:%*}%{!o:a.out}}}}}}}}}}}}"
++ %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}}"
+ /* APPLE LOCAL end mainline */
+
+ #ifdef TARGET_SYSTEM_ROOT
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs-r1.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs-r1.patch
new file mode 100644
index 000000000000..497248527d6d
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs-r1.patch
@@ -0,0 +1,39 @@
+In Prefix we are really self-providing, so don't look back!
+Original patch by Heiko Przybyl
+
+/usr/lib and /lib are not valid locations to search for startfiles,
+especially as they come BEFORE the prefix locations.
+
+--- gcc/gcc.c
++++ gcc/gcc.c
+@@ -1525,8 +1525,8 @@ static const char *gcc_libexec_prefix;
+ #endif
+
+ static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
+-static const char *const standard_exec_prefix_1 = "/usr/libexec/gcc/";
+-static const char *const standard_exec_prefix_2 = "/usr/lib/gcc/";
++static const char *const standard_exec_prefix_1 = "@GENTOO_PORTAGE_EPREFIX@/usr/libexec/gcc/";
++static const char *const standard_exec_prefix_2 = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/";
+ static const char *md_exec_prefix = MD_EXEC_PREFIX;
+
+ static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
+diff --git a/a/gcc/config/darwin.h b/b/gcc/config/darwin.h
+index 482cd4c..b971c64 100644
+--- gcc/config/darwin.h
++++ gcc/config/darwin.h
+@@ -24,6 +24,15 @@ Boston, MA 02110-1301, USA. */
+ #ifndef CONFIG_DARWIN_H
+ #define CONFIG_DARWIN_H
+
++#undef STANDARD_STARTFILE_PREFIX
++#define STANDARD_STARTFILE_PREFIX "@GENTOO_PORTAGE_TPREFIX@/usr/lib"
++
++#undef STANDARD_STARTFILE_PREFIX_1
++#define STANDARD_STARTFILE_PREFIX_1 "@GENTOO_PORTAGE_TPREFIX@/lib"
++
++#undef STANDARD_STARTFILE_PREFIX_2
++#define STANDARD_STARTFILE_PREFIX_2 STANDARD_STARTFILE_PREFIX_1
++
+ /* The definitions in this file are common to all processor types
+ running Darwin, which is the kernel for Mac OS X. Darwin is
+ basically a BSD user layer laid over a Mach kernel, then evolved
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs.patch
new file mode 100644
index 000000000000..2cd947b4e82f
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-prefix-search-dirs.patch
@@ -0,0 +1,27 @@
+In Prefix we are really self-providing, so don't look back!
+Patch by Heiko Przybyl
+
+--- gcc/gcc.c
++++ gcc/gcc.c
+@@ -1525,8 +1525,8 @@ static const char *gcc_libexec_prefix;
+ #endif
+
+ static const char *const standard_exec_prefix = STANDARD_EXEC_PREFIX;
+-static const char *const standard_exec_prefix_1 = "/usr/libexec/gcc/";
+-static const char *const standard_exec_prefix_2 = "/usr/lib/gcc/";
++static const char *const standard_exec_prefix_1 = "@GENTOO_PORTAGE_EPREFIX@/usr/libexec/gcc/";
++static const char *const standard_exec_prefix_2 = "@GENTOO_PORTAGE_EPREFIX@/usr/lib/gcc/";
+ static const char *md_exec_prefix = MD_EXEC_PREFIX;
+
+ static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
+--- gcc/config/darwin.h
++++ gcc/config/darwin.h
+@@ -1286,7 +1286,7 @@ void add_framework_path (char *);
+ } \
+ } while (0)
+
+-#define SYSROOT_PRIORITY PREFIX_PRIORITY_FIRST
++#define SYSROOT_PRIORITY PREFIX_PRIORITY_LAST
+ /* APPLE LOCAL end isysroot 5083137 */
+
+ /* Every program on darwin links against libSystem which contains the pthread
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1-texinfo.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-texinfo.patch
new file mode 100644
index 000000000000..f82fe60d2ee7
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1-texinfo.patch
@@ -0,0 +1,33 @@
+--- configure
++++ configure
+@@ -3748,7 +3748,7 @@
+ # For an installed makeinfo, we require it to be from texinfo 4.4 or
+ # higher, else we use the "missing" dummy.
+ if ${MAKEINFO} --version \
+- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
++ | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|4\.[1-9][0-9]|[5-9])' >/dev/null 2>&1; then
+ :
+ else
+ MAKEINFO="$MISSING makeinfo"
+--- gcc/configure.ac
++++ gcc/configure.ac
+@@ -882,7 +882,7 @@
+ # that we can use it.
+ gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
+ [GNU texinfo.* \([0-9][0-9.]*\)],
+- [4.[4-9]*])
++ [4.[4-9]*|4.[1-9][0-9]])
+ if test $gcc_cv_prog_makeinfo_modern = no; then
+ MAKEINFO="$MISSING makeinfo"
+ AC_MSG_WARN([
+--- libgomp/configure.ac
++++ libgomp/configure.ac
+@@ -135,7 +135,7 @@
+ # that we can use it.
+ ACX_CHECK_PROG_VER([MAKEINFO], [makeinfo], [--version],
+ [GNU texinfo.* \([0-9][0-9.]*\)],
+- [4.[4-9]*])
++ [4.[4-9]*|4.[1-9][0-9]])
+ AM_CONDITIONAL(BUILD_INFO, test $gcc_cv_prog_makeinfo_modern = "yes")
+
+
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-darwin14.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-darwin14.patch
new file mode 100644
index 000000000000..fb785b0ad9c4
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-darwin14.patch
@@ -0,0 +1,148 @@
+https://537826.bugs.gentoo.org/attachment.cgi?id=394896
+https://bugs.gentoo.org/show_bug.cgi?id=537826
+Michael Weiser
+
+Backport of https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=218873 (as
+per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407) to correctly encode Mac
+OS X versions >10.9 into __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__.
+Extended to also encode patch level the way clang and Apple GCC 4.2.1 do.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810 has a much more generic
+patch. But it's not yet in-tree pending legal paperwork. Once that's done, we
+can backport that.
+
+--- gcc/libgcov.c
++++ gcc/libgcov.c
+@@ -34,6 +34,14 @@
+ #include "coretypes.h"
+ #include "tm.h"
+
++/* to deal with XBC headers from 10.10 */
++#ifndef __has_extension
++#define __has_extension(x) 0
++#endif
++#ifndef __has_feature
++#define __has_feature(x) 0
++#endif
++
+ /* APPLE LOCAL begin instant off 6414141 */
+ #if defined(__APPLE__) && !defined(__STATIC__) && !defined(__ppc__) && !defined(__ppc64__) && !defined(__arm__)
+ #include <vproc.h>
+--- gcc/config/darwin-driver.c.orig 2010-10-14 22:27:53.000000000 +0200
++++ gcc/config/darwin-driver.c 2015-01-25 21:15:09.000000000 +0100
+@@ -174,8 +174,6 @@
+ version_p = osversion + 1;
+ if (ISDIGIT (*version_p))
+ major_vers = major_vers * 10 + (*version_p++ - '0');
+- if (major_vers > 4 + 9)
+- goto parse_failed;
+ if (*version_p++ != '.')
+ goto parse_failed;
+ version_pend = strchr(version_p, '.');
+--- gcc/config/darwin-c.c.orig 2015-01-25 19:44:40.000000000 +0100
++++ gcc/config/darwin-c.c 2015-01-25 21:05:47.000000000 +0100
+@@ -930,31 +930,91 @@
+
+ /* Return the value of darwin_macosx_version_min suitable for the
+ __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro,
+- so '10.4.2' becomes 1042.
++ so '10.4.2' becomes 1042 and '10.10.2' becomes 101002.
++ Cap patch level to 9 in the old format.
+ Print a warning if the version number is not known. */
+ static const char *
+ /* APPLE LOCAL ARM 5683689 */
+ macosx_version_as_macro (void)
+ {
+- static char result[] = "1000";
++ static char result[7] = "1000";
++ int inputindex = 3, outputindex = 2;
+
++ /* make sure version starts with "10." - makes sure we can safely start
++ * parsing at inputindex == 3 */
+ if (strncmp (darwin_macosx_version_min, "10.", 3) != 0)
+ goto fail;
++
++ /* first character of minor version needs to be digit */
+ if (! ISDIGIT (darwin_macosx_version_min[3]))
+ goto fail;
+- result[2] = darwin_macosx_version_min[3];
+- if (darwin_macosx_version_min[4] != '\0')
++
++ result[outputindex++] = darwin_macosx_version_min[inputindex++];
++
++ if (ISDIGIT (darwin_macosx_version_min[inputindex])) {
++ /* Starting with OS X 10.10, the macro ends '00' rather than '0',
++ i.e. 10.10.x becomes 101000 rather than 10100. */
++ result[outputindex++] = darwin_macosx_version_min[inputindex++];
++ result[4] = '0';
++ result[5] = '0';
++ result[6] = '\0';
++ }
++
++ /* if we're out of input, leave patch level at 0 or 00 and finish */
++ if (darwin_macosx_version_min[inputindex] == '\0')
++ return result;
++
++ /* a dot *must* follow now */
++ if (darwin_macosx_version_min[inputindex++] != '.')
++ goto fail;
++
++ /* a digit must follow after the dot */
++ if (! ISDIGIT (darwin_macosx_version_min[inputindex]))
++ goto fail;
++
++ /* old-style macro */
++ if (outputindex == 3)
++ {
++ /* one-digit patch level */
++ if (darwin_macosx_version_min[inputindex + 1] == '\0')
+ {
+- if (darwin_macosx_version_min[4] != '.')
+- goto fail;
+- if (! ISDIGIT (darwin_macosx_version_min[5]))
+- goto fail;
+- if (darwin_macosx_version_min[6] != '\0')
+- goto fail;
+- result[3] = darwin_macosx_version_min[5];
++ result[outputindex] = darwin_macosx_version_min[inputindex];
++ return result;
+ }
+- else
+- result[3] = '0';
++
++ inputindex++;
++ if (! ISDIGIT (darwin_macosx_version_min[inputindex++]))
++ goto fail;
++
++ /* three digits? */
++ if (darwin_macosx_version_min[inputindex] != '\0')
++ goto fail;
++
++ /* no room for another digit. Traditional Apple GCC 4.2.1 doesn't accept
++ * it but current clang caps it to 9. We choose to be in line with clang. */
++ result[outputindex] = '9';
++ return result;
++ }
++
++ /* new-style macro */
++
++ /* leave a leading zero if only one digit is following */
++ if (darwin_macosx_version_min[inputindex + 1] == '\0') {
++ result[outputindex + 1] = darwin_macosx_version_min[inputindex];
++ return result;
++ }
++
++ result[outputindex++] = darwin_macosx_version_min[inputindex++];
++
++ /* a digit must follow now */
++ if (! ISDIGIT (darwin_macosx_version_min[inputindex]))
++ goto fail;
++
++ result[outputindex] = darwin_macosx_version_min[inputindex++];
++
++ /* no more input allowed */
++ if (darwin_macosx_version_min[inputindex] != '\0')
++ goto fail;
+
+ return result;
+
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-perl-5.18.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-perl-5.18.patch
new file mode 100644
index 000000000000..af3688aa48e5
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5666-perl-5.18.patch
@@ -0,0 +1,11 @@
+--- a/contrib/texi2pod.pl
++++ b/contrib/texi2pod.pl
+@@ -337,7 +337,7 @@ while(<$inf>) {
+ $_ = "\n=item $1\n";
+ }
+ } else {
+- $_ = "\n=item $ic\n";
++ $_ = "\n=item Z\&LT;\&GT;$ic\n";
+ $ic =~ y/A-Ya-y/B-Zb-z/;
+ $ic =~ s/(\d+)/$1 + 1/eg;
+ }
diff --git a/sys-devel/gcc-apple/files/libstdc++-16.patch b/sys-devel/gcc-apple/files/libstdc++-16.patch
new file mode 100644
index 000000000000..81d075bface7
--- /dev/null
+++ b/sys-devel/gcc-apple/files/libstdc++-16.patch
@@ -0,0 +1,11 @@
+--- libstdc++-v3/include/bits/c++config
++++ libstdc++-v3/include/bits/c++config
+@@ -76,7 +76,7 @@
+ }
+ namespace std
+ {
+- using namespace __gnu_debug_def __attribute__ ((strong));
++ using namespace __gnu_debug_def;
+ }
+ #else
+ # define _GLIBCXX_STD std
diff --git a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5666-r2.ebuild b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5666-r2.ebuild
new file mode 100644
index 000000000000..bd1d11209952
--- /dev/null
+++ b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5666-r2.ebuild
@@ -0,0 +1,375 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+inherit eutils toolchain flag-o-matic autotools prefix
+
+GCC_VERS=${PV/_p*/}
+APPLE_VERS="${PV/*_p/}.3"
+DESCRIPTION="Apple branch of the GNU Compiler Collection, Developer Tools 4.0"
+HOMEPAGE="https://gcc.gnu.org"
+SRC_URI="http://www.opensource.apple.com/darwinsource/tarballs/other/gcc-${APPLE_VERS}.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-16.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-39.tar.gz
+ fortran? (
+ mirror://gnu/gcc/gcc-4.2.4/gcc-fortran-4.2.4.tar.bz2
+ https://dev.gentoo.org/~grobian/distfiles/${PN}-4.2.1_p5646-gfortran.patch
+ )"
+LICENSE="GPL-2 GPL-3"
+
+SLOT="42"
+KEYWORDS="~ppc-macos ~x64-macos ~x86-macos"
+IUSE="bootstrap fortran nls +openmp objc objc++ +cxx"
+
+RDEPEND=">=sys-libs/zlib-1.1.4
+ >=sys-libs/ncurses-5.2-r2
+ nls? ( sys-devel/gettext )
+ >=sys-devel/gcc-config-1.8-r1
+ sys-libs/csu
+ !<sys-apps/portage-2.2.14
+ fortran? (
+ >=dev-libs/gmp-4.2.1
+ >=dev-libs/mpfr-2.2.0_p10
+ )"
+DEPEND="${RDEPEND}
+ >=sys-apps/texinfo-4.2-r4
+ >=sys-devel/bison-1.875
+ ${CATEGORY}/binutils-apple
+ >=dev-libs/mpfr-2.2.0_p10"
+
+S=${WORKDIR}/gcc-${APPLE_VERS}
+
+# TPREFIX is the prefix of the CTARGET installation
+export TPREFIX=${TPREFIX:-${EPREFIX}}
+
+do_bootstrap() {
+ is_crosscompile && return 1
+ [[ ${CHOST} != ${CBUILD} ]] && return 1
+ [[ ${EPREFIX} != ${TPREFIX} ]] && return 1
+ return 0
+}
+
+src_unpack() {
+ # override toolchain.eclass func
+ unpack ${A}
+}
+
+src_prepare() {
+ # Support for fortran
+ if use fortran ; then
+ mv "${WORKDIR}"/gcc-4.2.4/gcc/fortran gcc/ || die
+ mv "${WORKDIR}"/gcc-4.2.4/libgfortran . || die
+ # from: substracted from http://r.research.att.com/tools/
+ epatch "${DISTDIR}"/${PN}-4.2.1_p5646-gfortran.patch
+ fi
+
+ # move in libstdc++
+ case ${CHOST} in
+ *-darwin1*|i?86-*-darwin9|powerpc-*-darwin9)
+ LIBSTDCXX_APPLE_VERSION=39
+ ;;
+ *)
+ # pre Leopard has no dtrace, which is required by 37.11 and above
+ # Leopard only has 32-bits version of dtrace
+ LIBSTDCXX_APPLE_VERSION=16
+ ;;
+ esac
+ mv "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/libstdc++-v3 .
+ if [[ ${LIBSTDCXX_APPLE_VERSION} == 16 ]] ; then
+ epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch # does it apply on 37?
+ sed -i -e 's/__block\([^_]\)/__blk\1/g' \
+ libstdc++-v3/include/ext/mt_allocator.h \
+ libstdc++-v3/src/mt_allocator.cc || die "conflict fix failed"
+ fi
+
+ # we use our libtool
+ sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
+ gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
+ # add prefixed Frameworks to default search paths (may want to change this
+ # in a cross-compile)
+ sed -i -e "/\"\/System\/Library\/Frameworks\"\,/i\ \ \"${EPREFIX}/Frameworks\"\, " \
+ gcc/config/darwin-c.c || die "sed gcc/config/darwin-c.c failed"
+
+ # Workaround deprecated "+Nc" syntax for GNU tail(1)
+ sed -i -e "s:tail +16c:tail -c +16:g" \
+ gcc/Makefile.in || die "sed gcc/Makefile.in failed."
+
+ # default to AltiVec on PPC, like for older releases
+ epatch "${FILESDIR}"/${PN}-4.0.1_p5465-default-altivec.patch
+
+ # support -arch XXX if XXX is actually what the toolchain targets because
+ # some upstreams insist on setting it
+ epatch "${FILESDIR}"/${PN}-4.2.1-arch-option.patch
+
+ # dsymutil stuff breaks on 10.4/x86, revert it
+ [[ ${CHOST} == *86*-apple-darwin8 ]] && \
+ epatch "${FILESDIR}"/${PN}-${GCC_VERS}-dsymutil.patch
+
+ # support OS X 10.10
+ epatch "${FILESDIR}"/${P}-darwin14.patch
+
+ # bootstrapping might fail with host provided gcc on 10.4/x86
+ if ! is_crosscompile && ! echo "int main(){return 0;}" | gcc -o "${T}"/foo \
+ -mdynamic-no-pic -x c - >/dev/null 2>&1;
+ then
+ einfo "-mdynamic-no-pic doesn't work - disabling..."
+ echo "BOOT_CFLAGS=-g -O2" > config/mh-x86-darwin
+ XD=gcc/config/i386/x-darwin
+ awk 'BEGIN{x=1}{if ($0 ~ "use -mdynamic-no-pic to build x86")
+ {x=1-x} else if (x) print}' $XD > t && mv t $XD \
+ || die "Failed to rewrite $XD"
+ fi
+
+ epatch "${FILESDIR}"/${P}-perl-5.18.patch
+
+ epatch "${FILESDIR}"/${PN}-4.2.1-prefix-search-dirs-r1.patch
+ eprefixify "${S}"/gcc/gcc.c
+ sed -i -e "s|@GENTOO_PORTAGE_TPREFIX@|${TPREFIX}|g" "${S}"/gcc/config/darwin.h
+
+ if use !bootstrap ; then
+ # this only occurs with up-to-date tools from the Prefix, and actually
+ # breaks the bootstrap since the autoconf needs a very recent automake
+ epatch "${FILESDIR}"/${PN}-${GCC_VERS}-texinfo.patch
+ epatch "${FILESDIR}"/${PN}-${GCC_VERS}-autoconf-m4-precious.patch
+ cd "${S}"/gcc && eautoconf
+ cd "${S}"/libgomp && eautoconf
+ fi
+
+ local BRANDING_GCC_PKGVERSION="$(sed -n -e '/^#define VERSUFFIX/s/^[^"]*"\([^"]\+\)".*$/\1/p' "${S}"/gcc/version.c)"
+ BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/(/(Gentoo ${PVR}, }
+ einfo "patching gcc version: ${GCC_VERS}${BRANDING_GCC_PKGVERSION}"
+
+ sed -i -e "s~VERSUFFIX \"[^\"]*~VERSUFFIX \"${BRANDING_GCC_PKGVERSION}~" \
+ "${S}"/gcc/version.c || die "failed to update VERSUFFIX with Gentoo branding"
+ sed -i -e 's~developer\.apple\.com\/bugreporter~bugs\.gentoo\.org\/~' \
+ "${S}"/gcc/version.c || die "Failed to change the bug URL"
+
+ # fix the install_names of all shared libraries for the target
+ # NOTE: do this after any automake-ing!
+ # Yes, patching generated files is bad. Talk to me once you've found a way to do this inside automake.
+ sed -i -e "s|-install_name \$(slibdir)|-install_name ${TPREFIX}/usr/${CTARGET}/lib/gcc|" "${S}"/gcc/config/t-slibgcc-darwin
+ sed -i -e "s|-rpath \$(toolexeclibdir)|-rpath ${TPREFIX}/usr/${CTARGET}/lib/gcc|" \
+ "${S}"/{libgomp,libstdc++-v3/src,libstdc++-v3/libsupc++}/Makefile.in
+}
+
+src_configure() {
+ local langs="c"
+ use cxx && langs="${langs},c++"
+ use objc && langs="${langs},objc"
+ use objc++ && langs="${langs/,objc/},objc,obj-c++" # need objc with objc++
+ use fortran && langs="${langs},fortran"
+
+ LIBPATH=${EPREFIX}/usr/lib/gcc/${CTARGET}/${GCC_VERS}
+ if is_crosscompile ; then
+ BINPATH=${EPREFIX}/usr/${CHOST}/${CTARGET}/gcc-bin/${GCC_VERS}
+ else
+ BINPATH=${EPREFIX}/usr/${CTARGET}/gcc-bin/${GCC_VERS}
+ fi
+ STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
+
+ local myconf="${myconf} \
+ --prefix=${EPREFIX}/usr \
+ --bindir=${BINPATH} \
+ --includedir=${LIBPATH}/include \
+ --datadir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS} \
+ --mandir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS}/man \
+ --infodir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS}/info \
+ --with-gxx-include-dir=${STDCXX_INCDIR} \
+ --host=${CHOST} \
+ --enable-version-specific-runtime-libs"
+
+ if is_crosscompile ; then
+ # Straight from the GCC install doc:
+ # "GCC has code to correctly determine the correct value for target
+ # for nearly all native systems. Therefore, we highly recommend you
+ # not provide a configure target when configuring a native compiler."
+ myconf="${myconf} --target=${CTARGET}"
+
+ # Tell compiler where to find what it needs
+ myconf="${myconf} --with-sysroot=${EPREFIX}/usr/${CTARGET}"
+
+ # Set this to something sane for both native and target
+ CFLAGS="-O2 -pipe"
+
+ local VAR="CFLAGS_"${CTARGET//-/_}
+ CXXFLAGS=${!VAR}
+ fi
+ [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}"
+
+ # Native Language Support
+ if use nls ; then
+ myconf="${myconf} --enable-nls --without-included-gettext"
+ else
+ myconf="${myconf} --disable-nls"
+ fi
+
+ # reasonably sane globals (hopefully)
+ myconf="${myconf} \
+ --with-system-zlib \
+ --disable-checking \
+ --disable-werror"
+
+ # ???
+ myconf="${myconf} --enable-shared --enable-threads=posix"
+
+ # make clear we're in an offset
+ use prefix && myconf="${myconf} --with-local-prefix=${TPREFIX}/usr"
+
+ do_bootstrap || myconf="${myconf} --disable-bootstrap"
+
+ # we don't use a GNU linker, so tell GCC where to find the linker stuff we
+ # want it to use
+ myconf="${myconf} \
+ --with-as=${EPREFIX}/usr/bin/${CTARGET}-as \
+ --with-ld=${EPREFIX}/usr/bin/${CTARGET}-ld"
+
+ # make sure we never do multilib stuff, for that we need a different Prefix
+ [[ -z ${I_KNOW_WHAT_IM_DOING_I_WANT_APPLE_MULTILIB} ]] \
+ && myconf="${myconf} --disable-multilib"
+
+ myconf="${myconf} --enable-languages=${langs} $(use_enable openmp libgomp)"
+
+ # The produced libgcc_s.dylib is faulty if using a bit too much
+ # optimisation. Nail it down to something sane
+ CFLAGS="-O2 -pipe"
+ CXXFLAGS=${CFLAGS}
+
+ # https://gcc.gnu.org/ml/gcc-patches/2006-11/msg00765.html
+ # (won't hurt if already 64-bits, but is essential when coming from a
+ # multilib compiler -- the default)
+ [[ ${CTARGET} == powerpc64-* || ${CTARGET} == x86_64-* ]] && \
+ export CC="${CC:-$(tc-getCC)} -m64"
+
+ # Clang on OSX defaults to c99 mode, while GCC defaults to gnu89
+ # (C90 + extensions). This makes Clang barf on GCC's sources, so
+ # work around that. Bugs #491098, #574736
+ export CC="${CC:-$(tc-getCC)} -std=gnu89"
+
+ mkdir -p "${WORKDIR}"/build
+ cd "${WORKDIR}"/build
+ einfo "Configuring GCC with: ${myconf//--/\n\t--}"
+ "${S}"/configure ${myconf} || die "conf failed"
+}
+
+src_compile() {
+ cd "${WORKDIR}"/build || die
+ if ! do_bootstrap; then
+ GCC_MAKE_TARGET=${GCC_MAKE_TARGET-all}
+ else
+ GCC_MAKE_TARGET=${GCC_MAKE_TARGET-bootstrap}
+ fi
+ emake ${GCC_MAKE_TARGET} || die "emake failed"
+}
+
+src_install() {
+ cd "${WORKDIR}"/build
+ # -jX doesn't work
+ emake -j1 DESTDIR="${D}" install || die
+
+ # Punt some tools which are really only useful while building gcc
+ find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
+ # This one comes with binutils
+ find "${ED}" -name libiberty.a -exec rm -f "{}" \;
+
+ # Basic sanity check
+ if ! is_crosscompile ; then
+ local EXEEXT
+ eval $(grep ^EXEEXT= "${WORKDIR}"/build/gcc/config.log)
+ [[ -r ${D}${BINPATH}/gcc${EXEEXT} ]] || die "gcc not found in ${ED}"
+ fi
+
+ # create gcc-config entry
+ dodir /etc/env.d/gcc
+ local gcc_envd_base="/etc/env.d/gcc/${CHOST}-${GCC_VERS}"
+
+ gcc_envd_file="${ED}${gcc_envd_base}"
+
+ # phase PATH/ROOTPATH out ...
+ echo "PATH=\"${BINPATH}\"" > ${gcc_envd_file}
+ echo "ROOTPATH=\"${BINPATH}\"" >> ${gcc_envd_file}
+ echo "GCC_PATH=\"${BINPATH}\"" >> ${gcc_envd_file}
+
+ # we don't do multilib
+ LDPATH="${LIBPATH}"
+ echo "LDPATH=\"${LDPATH}\"" >> ${gcc_envd_file}
+ echo "MANPATH=\"${EPREFIX}/usr/share/gcc-data/${CHOST}/${GCC_VERS}/man\"" >> ${gcc_envd_file}
+ echo "INFOPATH=\"${EPREFIX}/usr/share/gcc-data/${CHOST}/${GCC_VERS}/info\"" >> ${gcc_envd_file}
+ echo "STDCXX_INCDIR=\"g++-v${GCC_VERS/\.*/}\"" >> ${gcc_envd_file}
+ is_crosscompile && echo "CTARGET=${CTARGET}" >> ${gcc_envd_file}
+
+ # Move <cxxabi.h> to compiler-specific directories
+ [[ -f ${D}${STDCXX_INCDIR}/cxxabi.h ]] && \
+ mv -f "${D}"${STDCXX_INCDIR}/cxxabi.h "${D}"${LIBPATH}/include/
+
+ # These should be symlinks
+ dodir /usr/bin
+ cd "${D}"${BINPATH}
+ for x in cpp gcc g++ c++ g77 gcj gcjh gfortran ; do
+ # For some reason, g77 gets made instead of ${CTARGET}-g77...
+ # this should take care of that
+ [[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
+
+ if [[ -f ${CTARGET}-${x} ]] && ! is_crosscompile ; then
+ ln -sf ${CTARGET}-${x} ${x}
+
+ # Create version-ed symlinks
+ dosym ${BINPATH#${EPREFIX}}/${CTARGET}-${x} \
+ /usr/bin/${CTARGET}-${x}-${GCC_VERS}
+ dosym ${BINPATH#${EPREFIX}}/${CTARGET}-${x} \
+ /usr/bin/${x}-${GCC_VERS}
+ fi
+
+ if [[ -f ${CTARGET}-${x}-${GCC_VERS} ]] ; then
+ rm -f ${CTARGET}-${x}-${GCC_VERS}
+ ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_VERS}
+ fi
+ done
+
+ # I do not know if this will break gcj stuff, so I'll only do it for
+ # objc for now; basically "ffi.h" is the correct file to include,
+ # but it gets installed in .../GCCVER/include and yet it does
+ # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
+ # is installed in .../GCCVER/include/libffi; the following fixes
+ # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
+ if [[ -d ${D}${LIBPATH}/include/libffi ]] ; then
+ mv -i "${D}"${LIBPATH}/include/libffi/* "${D}"${LIBPATH}/include || die
+ rm -r "${D}"${LIBPATH}/include/libffi || die
+ fi
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CHOST} prepstrip "${D}${BINPATH}"
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+ # gcc used to install helper binaries in lib/ but then moved to libexec/
+ [[ -d ${ED}/usr/libexec/gcc ]] && \
+ env RESTRICT="" CHOST=${CHOST} prepstrip "${ED}/usr/libexec/gcc/${CTARGET}/${GCC_VERS}"
+
+ # prune empty dirs left behind
+ find "${ED}" -type d | xargs rmdir >& /dev/null
+
+ # The gcc runtime libs have an invalid install_name; this is correct,
+ # as they are copied to the right location by gcc-config later.
+ QA_IGNORE_INSTALL_NAME_FILES=()
+ pushd "${ED}/usr/lib/gcc/${CTARGET}/${GCC_VERS}" > /dev/null
+ for file in *.dylib; do
+ QA_IGNORE_INSTALL_NAME_FILES+=( "${file}" )
+ done
+ popd > /dev/null
+}
+
+pkg_postinst() {
+ # beware this also switches when it's on another branch version of GCC
+ gcc-config ${CTARGET}-${GCC_VERS}
+}
+
+pkg_postrm() {
+ # clean up the cruft left behind by cross-compilers
+ if is_crosscompile ; then
+ if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
+ rm -f "${EROOT}"/etc/env.d/gcc/config-${CTARGET}
+ rm -f "${EROOT}"/etc/env.d/??gcc-${CTARGET}
+ rm -f "${EROOT}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
+ fi
+ return 0
+ fi
+}
diff --git a/sys-devel/gcc-apple/metadata.xml b/sys-devel/gcc-apple/metadata.xml
new file mode 100644
index 000000000000..eb4d397c67f0
--- /dev/null
+++ b/sys-devel/gcc-apple/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>prefix@gentoo.org</email>
+ <name>Gentoo Prefix</name>
+ </maintainer>
+ <use>
+ <flag name="objc">Build support for the Objective C code language</flag>
+ <flag name="objc++">Build support for the Objective C++ language</flag>
+ <flag name="regression-test">Run the testsuite and install the results (requires FEATURES=test)</flag>
+ </use>
+</pkgmetadata>