aboutsummaryrefslogtreecommitdiffstats
path: root/main/gcc/APKBUILD
blob: 06e175175d25cf7d1701368d46480a9700bb6695 (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=gcc
pkgver=4.5.1
_piepatchver=0.4.5
_specs_ver=0.2.0
_specs_gcc_ver=4.4.3

_uclibc_abiver=0.9.32
if [ "$ALPINE_LIBC" = "eglibc" ]; then
	_chost="i686-pc-linux-gnu"
	_with_arch="i686"
else
	_chost="i486-alpine-linux-uclibc"
	_dynamic_linker="--with-dynamic-linker=ld-uClibc.so.$_uclibc_abiver"
	_with_arch="i486"
fi

pkgrel=7
pkgdesc="The GNU Compiler Collection"
url="http://gcc.gnu.org"
license="GPL LGPL"
depends="binutils libgcc libgomp libobjc"
makedepends="bison flex gmp-dev mpfr-dev texinfo libmpc-dev gawk zlib-dev"
subpackages="$pkgname-doc libstdc++:libcxx g++:gpp libgcc libgomp libobjc"
source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-core-$pkgver.tar.bz2
	ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-g++-$pkgver.tar.bz2
	ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-objc-$pkgver.tar.bz2
	http://distfiles.gentoo.org/distfiles/gcc-$pkgver-piepatches-v${_piepatchver}.tar.bz2
	http://distfiles.gentoo.org/distfiles/gcc-$_specs_gcc_ver-specs-$_specs_ver.tar.bz2
	
	09_all_gcc-4.5-Wtrampolines.patch
	15_all_gcc-libgomp-no-werror.patch
	51_all_gcc-3.4-libiberty-pic.patch

	gcc-spec-env.patch
	pt_gnu_eh_frame.patch
	uclibc-getipinfo.patch
	gcc-4.5-dynamic-linker.patch
	PR32219.patch
	"
#	50_all_pr45312-kernel-miscompile.patch

_gccdir="$srcdir"/gcc-$pkgver
prepare() {
	cd "$_gccdir"

	# PIE patches from gentoo
	# thanks to Zorry for hard work on those patches
	for i in "$srcdir"/piepatch/*.patch; do
		msg "Applying $i"
		patch -p0 -i $i || return 1
	done

	# Gentoo and uclibc patches
	for i in $source; do
		case "$i" in
		*.patch)
			msg "Applying $i"
			patch -p1 -i "$srcdir"/$i || return 1
			;;
		esac
	done
	
	#PR33200
	sed -i 's/use_fixproto=yes/:/' gcc/config.gcc || return 1

	# enable hardened cflags by default
	# building gcc wih PIE seem to hit some strange bug. we probably run
	# out of some resource. so we disable PIE for gcc while enabling it
	# by default for everything else.
	local _hard_cflags="-DEFAULT_PIE_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW"
	sed -e "/^ALL_CFLAGS/iHARD_CFLAGS = ${_hard_cflags}" \
		-e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) -fno-PIE |' \
		-i gcc/Makefile.in || return 1
	sed -e "/stage1_cflags=/s/-fno-stack-protector/-fno-stack-protector -fno-PIE/" \
		-i configure
}

build() {
	cd "$_gccdir"
	echo ${pkgver} > gcc/BASE-VER
	export CFLAGS="-fno-stack-protector"
	mkdir build
	cd build
	../configure --prefix=/usr \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--build=${CHOST:-$_chost} \
		--host=${CHOST:-$_chost} \
		--target=${CHOST:-$_chost} \
		--disable-altivec \
		--disable-checking \
		--disable-fixed-point \
		--disable-libssp \
		--disable-libstdcxx-pch \
		--disable-multilib \
		--disable-nls \
		--disable-werror \
		--enable-__cxa_atexit \
		--enable-cld \
		--enable-esp \
		--enable-languages=c,c++,objc \
		--enable-shared \
		--enable-target-optspace \
		--enable-tls \
		--enable-threads \
		--with-arch=i486 \
		$_with_arch \
		$_dynamic_linker \
		--with-dynamic-linker-prefix=/lib \
		--with-system-zlib \
		--without-system-libunwind 

	make || return 1
}

package() {
	cd "$srcdir"/gcc-$pkgver/build
	make -j1 DESTDIR="${pkgdir}" install || return 1
	ln -s gcc "$pkgdir"/usr/bin/cc

	# binutils provides libiberty.a
	rm -f "$pkgdir"/usr/lib/libiberty.a

	# install the specs
	cd "$srcdir"/specs
	install -d "$pkgdir"/usr/share/gcc
	for i in *.specs; do
		install -m644 $i "$pkgdir"/usr/share/gcc/$i || return 1
	done
}

libcxx() {
	pkgdesc="GNU C++ standard runtime library"
	depends=
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libstdc++.so.* "$subpkgdir"/usr/lib/
}

gpp() {
	pkgdesc="GNU C++ standard library and compiler"
	depends="libstdc++"
	local libexec=usr/libexec/gcc/${CHOST:-$_chost}/$pkgver
	mkdir -p "$subpkgdir/$libexec" \
		"$subpkgdir"/usr/bin \
		"$subpkgdir"/usr/include \
		"$subpkgdir"/usr/lib \

	mv "$pkgdir/$libexec/cc1plus" "$subpkgdir/$libexec/"
	mv "$pkgdir"/usr/lib/*++* "$subpkgdir"/usr/lib/
	mv "$pkgdir"/usr/include/c++ "$subpkgdir"/usr/include/
	mv "$pkgdir"/usr/bin/*++ "$subpkgdir"/usr/bin/
}

libobjc() {
	pkgdesc="GNU ObjectiveC library"
	replaces="objc"
	mkdir -p "$subpkgdir"/usr/lib

	mv "$pkgdir"/usr/lib/*objc* "$subpkgdir"/usr/lib/
}

libgcc() {
	pkgdesc="GNU C compiler runtime libraries"
	depends=
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgcc_s.so.* "$subpkgdir"/usr/lib/
}

libgomp() {
	pkgdesc="GCC shared-memory parallel programming API library"
	depends=
	replaces="gcc"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libgomp.so.* "$subpkgdir"/usr/lib/
}

md5sums="dc8959e31b01a65ce10d269614815054  gcc-core-4.5.1.tar.bz2
b294953ff0bb2f20c7acb2bf005d832a  gcc-g++-4.5.1.tar.bz2
3c11b7037896e967eddf8178af2ddd98  gcc-objc-4.5.1.tar.bz2
1f86fe5dc7d506b7fc04fcd8b7d2693c  gcc-4.5.1-piepatches-v0.4.5.tar.bz2
441c76504e1d97170117c294e65c7a72  gcc-4.4.3-specs-0.2.0.tar.bz2
ab090760506eb70aa4436a349c6bd788  09_all_gcc-4.5-Wtrampolines.patch
1c00bd9d12891a3e2311b32b98deb6fa  15_all_gcc-libgomp-no-werror.patch
45951dd3bbc979c9e043c7203745cf31  51_all_gcc-3.4-libiberty-pic.patch
c4045bfa85d8be780affd465be9d8ca8  gcc-spec-env.patch
2db1e3482c5dd59dab70f701afa2ca80  pt_gnu_eh_frame.patch
6cc2385c5bbd6d0da6eaedd53c8bf547  uclibc-getipinfo.patch
7f35da0f88f4d9c3d3839498bbda0eb3  gcc-4.5-dynamic-linker.patch
6c866c7fb8d56deb8f6d652bee64e228  PR32219.patch"