aboutsummaryrefslogtreecommitdiff
blob: dda51f24864439a1c2f5681c6941802e06f69158 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EGIT_REPO_URI="git://github.com/D-Programming-GDC/GDC.git"
EGIT_BRANCH="gdc-4.8"
EGIT_COMMIT="6296cfbe97"
EGIT_SOURCEDIR="${WORKDIR}/dev"
EGIT_NOUNPACK=1

inherit git-2

IUSE="d"
FILESDIR=${PORTDIR}/sys-devel/gcc/files

# Original GCC code starts here
PATCH_VER="1.2"
UCLIBC_VER="1.0"

# Hardened gcc 4 stuff
PIE_VER="0.5.7"
SPECS_VER="0.2.0"
SPECS_GCC_VER="4.4.3"
# arch/libc configurations known to be stable with {PIE,SSP}-by-default
PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64"
PIE_UCLIBC_STABLE="x86 arm amd64 mips ppc ppc64"
SSP_STABLE="amd64 x86 mips ppc ppc64 arm"
# uclibc need tls and nptl support for SSP support
# uclibc need to be >= 0.9.33
SSP_UCLIBC_STABLE="x86 amd64 mips ppc ppc64 arm"
#end Hardened stuff

inherit toolchain

DESCRIPTION="The GNU Compiler Collection"

LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+"

KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~x86 ~amd64-fbsd ~x86-fbsd"

RDEPEND=""
DEPEND="${RDEPEND}
	elibc_glibc? ( >=sys-libs/glibc-2.8 )
	>=${CATEGORY}/binutils-2.20"

if [[ ${CATEGORY} != cross-* ]] ; then
	PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.8 )"
fi

src_unpack() {
	if has_version '<sys-libs/glibc-2.12' ; then
		ewarn "Your host glibc is too old; disabling automatic fortify."
		ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315"
		EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch"
	fi

	toolchain_src_unpack

	use vanilla && return 0
	#Use -r1 for newer piepatchet that use DRIVER_SELF_SPECS for the hardened specs.
	[[ ${CHOST} == ${CTARGET} ]] && epatch "${GCC_FILESDIR}"/gcc-spec-env-r1.patch

	if use d ; then
		# Get GDC sources into the tree.
		git-2_src_unpack
		cd ../dev || die "Changing into Git checkout directory failed."
		./setup-gcc.sh ../gcc-${GCC_PV} || die "Could not setup GDC."
	fi
}

pkg_setup() {
	toolchain_pkg_setup

	if use lto ; then
		ewarn
		ewarn "LTO support is still experimental and unstable.  Any bug reports"
		ewarn "about LTO that do not include an upstream patch will be closed as"
		ewarn "invalid."
		ewarn
	fi
}

pkg_postinst() {
	toolchain_pkg_postinst

	elog
	elog "Packages failing to build with GCC 4.8 are tracked at"
	elog "https://bugs.gentoo.org/461954"
	elog
}