summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/kgcc64/kgcc64-3.4.6.ebuild')
-rw-r--r--sys-devel/kgcc64/kgcc64-3.4.6.ebuild73
1 files changed, 73 insertions, 0 deletions
diff --git a/sys-devel/kgcc64/kgcc64-3.4.6.ebuild b/sys-devel/kgcc64/kgcc64-3.4.6.ebuild
new file mode 100644
index 000000000000..e824f0497620
--- /dev/null
+++ b/sys-devel/kgcc64/kgcc64-3.4.6.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=4
+
+case ${CHOST} in
+ hppa*) CTARGET=hppa64-${CHOST#*-};;
+ mips*) CTARGET=${CHOST/mips/mips64};;
+ powerpc*) CTARGET=${CHOST/powerpc/powerpc64};;
+ s390*) CTARGET=${CHOST/s390/s390x};;
+ sparc*) CTARGET=${CHOST/sparc/sparc64};;
+ i?86*) CTARGET=x86_64-${CHOST#*-};;
+esac
+export CTARGET
+TOOLCHAIN_ALLOWED_LANGS="c"
+GCC_TARGET_NO_MULTILIB=true
+
+PATCH_VER="1.2"
+GCC_FILESDIR=${FILESDIR/${PN}/gcc}
+
+inherit eutils toolchain
+
+DESCRIPTION="64bit kernel compiler"
+
+KEYWORDS="-* ~hppa ~mips ~ppc ~s390 sparc"
+
+# unlike every other target, hppa has not unified the 32/64 bit
+# ports in binutils yet
+DEPEND="hppa? ( sys-devel/binutils-hppa64 )
+ !sys-devel/gcc-hppa64
+ !sys-devel/gcc-mips64
+ !sys-devel/gcc-powerpc64
+ !sys-devel/gcc-sparc64"
+
+src_prepare() {
+ toolchain_src_prepare
+ epatch "${GCC_FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
+
+ # Arch stuff
+ case $(tc-arch) in
+ mips)
+ # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
+ # -mtune=r10000 support to gcc (Allows the compiler to generate code to
+ # take advantage of R10k's second ALU, perform shifts, etc..
+ epatch "${GCC_FILESDIR}"/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
+
+ # This is a very special patch -- it allows us to build kernels on SGI IP28
+ # (Indigo2 Impact R10000) systems.
+ # Unless you're building an IP28 kernel, you really don't need care about what
+ # this patch does, because if you are, you are probably already aware of what
+ # it does.
+ # All that said, the abilities of this patch are disabled by default and need
+ # to be enabled by passing -mr10k-cache-barrier.
+ # The option also accepts a flag, which are highlighted below:
+ # -mr10k-cache-barrier=1 - Protect stores only (IP28)
+ # -mr10k-cache-barrier=2 - Protect stores and loads (IP32 R10K)
+ epatch "${GCC_FILESDIR}"/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v4.patch
+ ;;
+ esac
+}
+
+pkg_postinst() {
+ cd "${ROOT}"/usr/bin
+ local x
+ for x in gcc cpp ; do
+ cat <<-EOF >${CTARGET%%-*}-linux-${x}
+ #!/bin/sh
+ exec ${CTARGET}-${x} "\$@"
+ EOF
+ chmod a+rx ${CTARGET%%-*}-linux-${x}
+ done
+}