16
16
ifeq ($(DISTRO),Debian)
17
17
MIN_VER_EGLIBC := 2.13-5~
18
18
MIN_VER_LINUX := 3.2
19
MIN_VER_GCC46 := 4.6.2-16
20
MIN_VER_GCC47 := 4.7.0-3
19
MIN_VER_GCC := 4.7.2-5
21
20
VER_LINUX := $(shell apt-cache policy linux-source|grep '\*\*\*'|sed -e 's/ ... \([0-9\.]*\)+.*/\1/g')
22
21
DEB_VER_LINUX := $(shell apt-cache policy linux-source-3.2|grep '\*\*\*'|sed -e 's/ ... \([0-9\.\-]*\).*/\1/g')
23
22
# default version of gcc which will be used
24
23
VER_GCC_BASE := 4.7
26
MIN_VER_EGLIBC := 2.13-20~
27
MIN_VER_LINUX := 3.5.0-0~
28
MIN_VER_GCC46 := 4.6.2-16
29
MIN_VER_GCC47 := 4.7.2-5
25
MIN_VER_EGLIBC := 2.16-0~
26
MIN_VER_LINUX := 3.7.0-0~
27
MIN_VER_GCC := 4.7.2-5
31
29
# default version of gcc which will be used
32
30
VER_GCC_BASE := 4.7
35
EXTRA_DEPS := gcc-4.6-source (>= $(MIN_VER_GCC46)),
37
35
ifeq ($(PPA),false)
39
VER_GCC46 := $(shell dpkg-parsechangelog -l/usr/src/gcc-4.6/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
40
VER_GCC47 := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
41
DEB_VER_GCC46 := $(shell dpkg-parsechangelog -l/usr/src/gcc-4.6/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
42
DEB_VER_GCC47 := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
37
VER_GCC := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
38
DEB_VER_GCC := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
43
39
VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-'|cut -d '.' -f1-3)
44
40
PKG_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
45
41
DEB_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
49
45
BINUTILS_DIR := /usr/src/binutils
50
46
EGLIBC_DIR := /usr/src/glibc
51
GCC_DIR46 := /usr/src/gcc-4.6
52
GCC_DIR47 := /usr/src/gcc-${VER_GCC_BASE}
47
GCC_DIR := /usr/src/gcc-${VER_GCC_BASE}
54
49
ifeq ($(DISTRO),Debian)
68
63
else # Linaro toolchain backport PPA
73
67
VER_BINUTILS := 2.22.52
74
EXTRA_DEPS := gcc-4.6-${VER_GCC46}-source,
76
70
DEB_VER_LINUX := $(shell dpkg-parsechangelog -l/usr/src/linux-source-$(VER_LINUX)/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
77
DEB_VER_GCC46 := $(shell dpkg-parsechangelog -l/usr/src/gcc-4.6-${VER_GCC46}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
78
DEB_VER_GCC47 := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}-${VER_GCC47}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
71
DEB_VER_GCC := $(shell dpkg-parsechangelog -l/usr/src/gcc-${VER_GCC_BASE}-${VER_GCC}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
79
72
DEB_VER_EGLIBC := $(shell dpkg-parsechangelog -l/usr/src/glibc-${VER_EGLIBC}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
80
73
PKG_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils-${VER_BINUTILS}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
81
74
DEB_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils-${VER_BINUTILS}/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
83
76
BINUTILS_DIR := /usr/src/binutils-${VER_BINUTILS}
84
77
EGLIBC_DIR := /usr/src/glibc-${VER_EGLIBC}
85
GCC_DIR46 := /usr/src/gcc-4.6-${VER_GCC46}
86
GCC_DIR47 := /usr/src/gcc-${VER_GCC_BASE}-${VER_GCC47}
78
GCC_DIR := /usr/src/gcc-${VER_GCC_BASE}-${VER_GCC}
88
80
EGLIBC_PATCHES := $(CURDIR)/debian/patches/eglibc/ubuntu
89
81
LINUX_SERIES := $(CURDIR)/debian/patches/linux/series-ubuntu
108
100
@echo "Binutils version: ${VER_BINUTILS} ${DEB_VER_BINUTILS} ${PKG_VER_BINUTILS}"
109
@echo "GCC 4.6 version: ${VER_GCC46} ${DEB_VER_GCC46}"
110
@echo "GCC 4.7 version: ${VER_GCC47} ${DEB_VER_GCC47} ${VER_GCC_BASE}"
101
@echo "GCC 4.7 version: ${VER_GCC} ${DEB_VER_GCC} ${VER_GCC_BASE}"
111
102
@echo "Eglibc version: ${VER_EGLIBC} ${DEB_VER_EGLIBC}"
112
103
@echo "Linux version: ${VER_LINUX} ${DEB_VER_LINUX}"
130
121
$(call unpack_tarball, /usr/src/linux-source-${VER_LINUX}/linux-source-${VER_LINUX}.tar.bz2)
131
122
cp -a /usr/src/linux-source-${VER_LINUX}/debian linux-source-${VER_LINUX}/debian
132
123
cp -a /usr/src/linux-source-${VER_LINUX}/debian.master linux-source-${VER_LINUX}/debian.master
133
mkdir linux-source-${VER_LINUX}/debian/stamps/
124
mkdir -p linux-source-${VER_LINUX}/debian/stamps/
125
ifeq (${CROSS_ARCH},armel)
126
# armel is no longer supported in raring but we need to get linux-libc-dev_armel.deb for cross compiler
127
cd linux-source-${VER_LINUX}/debian.master ;\
128
sed -i -e 's/armhf/armhf armel/g' control.stub control control.stub.in etc/kernelconfig ;\
129
cd rules.d && ln -s armhf.mk armel.mk
202
199
$(stamp)init-gcc:
205
ln -sf ${GCC_DIR46}/gcc-${VER_GCC46}.tar.xz gcc-${VER_GCC46}.tar.xz ;\
206
cp -a ${GCC_DIR46}/debian/ . ; \
207
QUILT_PATCHES=${CURDIR}/debian/patches/gcc-4.6 quilt push -a ; \
202
ln -sf ${GCC_DIR}/gcc-${VER_GCC}.tar.xz gcc-${VER_GCC}.tar.xz ;\
203
cp -a ${GCC_DIR}/debian/ . ; \
204
QUILT_PATCHES=${CURDIR}/debian/patches/gcc-${VER_GCC_BASE} quilt push -a ; \
208
205
echo ${CROSS_ARCH} >debian/target
217
214
$(stamp)install-gcc1: $(stamp)build-gcc1
218
215
$(call install_gcc)
216
cp -r gcc/build/gcc/include debian/tmp/$(PF)/lib/gcc/${CROSS_GNU_TYPE}/${VER_GCC_BASE}/
217
cp -r gcc/build/gcc/include-fixed debian/tmp/$(PF)/lib/gcc/${CROSS_GNU_TYPE}/${VER_GCC_BASE}/
221
220
define install_gcc
222
dpkg-deb -x gcc-4.6-${CROSS_GNU_TYPE}_${DEB_VER_GCC46}_${HOST_ARCH}.deb debian/tmp
223
dpkg-deb -x cpp-4.6-${CROSS_GNU_TYPE}_${DEB_VER_GCC46}_${HOST_ARCH}.deb debian/tmp
221
dpkg-deb -x gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}_${DEB_VER_GCC}_${HOST_ARCH}.deb debian/tmp
222
dpkg-deb -x cpp-${VER_GCC_BASE}-${CROSS_GNU_TYPE}_${DEB_VER_GCC}_${HOST_ARCH}.deb debian/tmp
224
223
cd debian/tmp/$(PF)/bin/ && \
225
ln -sf ${CROSS_GNU_TYPE}-gcc-4.6 ${CROSS_GNU_TYPE}-gcc && \
226
ln -sf ${CROSS_GNU_TYPE}-cpp-4.6 ${CROSS_GNU_TYPE}-cpp && \
227
ln -sf ${CROSS_GNU_TYPE}-gcov-4.6 ${CROSS_GNU_TYPE}-gcov
224
ln -sf ${CROSS_GNU_TYPE}-gcc-${VER_GCC} ${CROSS_GNU_TYPE}-gcc && \
225
ln -sf ${CROSS_GNU_TYPE}-cpp-${VER_GCC} ${CROSS_GNU_TYPE}-cpp && \
226
ln -sf ${CROSS_GNU_TYPE}-gcov-${VER_GCC} ${CROSS_GNU_TYPE}-gcov
230
229
$(stamp)build-gcc2: $(stamp)init-gcc $(stamp)install-eglibc1
231
export PATH=${CURDIR}/debian/tmp/$(PF)/bin/:${PATH} ;\
230
export PATH=${CURDIR}/debian/tmp/$(PF)/bin:${PATH} ;\
232
231
export LD_LIBRARY_PATH=${CURDIR}/debian/tmp/$(PF)/$(HOST_GNU_TYPE)/${CROSS_GNU_TYPE}/lib/:${CURDIR}/debian/tmp/usr/lib:${CURDIR}/debian/tmp/lib ;\
233
232
cd gcc && DEB_CROSS_NO_BIARCH=yes WITH_BUILD_SYSROOT=${CURDIR}/debian/tmp DEB_STAGE=stage2 PKG_IGNORE_CURRENTLY_BUILDING=1 BACKPORT=false dpkg-buildpackage -b -uc -us -d
236
235
$(stamp)install-gcc2: $(stamp)build-gcc2
237
236
$(call install_gcc)
238
dpkg-deb -x libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC46}_all.deb debian/tmp
244
ln -sf ${GCC_DIR47}/gcc-${VER_GCC47}.tar.xz gcc-${VER_GCC47}.tar.xz ;\
245
cp -a ${GCC_DIR47}/debian/ . ; \
246
QUILT_PATCHES=${CURDIR}/debian/patches/gcc-4.7 quilt push -a ; \
247
echo ${CROSS_ARCH} >debian/target
250
$(stamp)build-gcc3: $(stamp)init-gcc47 $(stamp)install-eglibc2
237
dpkg-deb -x libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb debian/tmp
238
dpkg-deb -x libgcc-${VER_GCC_BASE}-dev-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb debian/tmp
241
$(stamp)build-gcc3: $(stamp)init-gcc $(stamp)install-eglibc2
251
242
export PATH=${CURDIR}/debian/tmp/$(PF)/bin/:${PATH} ;\
252
243
export LD_LIBRARY_PATH=${CURDIR}/debian/tmp/$(PF)/$(HOST_GNU_TYPE)/${CROSS_GNU_TYPE}/lib/:${CURDIR}/debian/tmp/usr/lib:${CURDIR}/debian/tmp/lib ;\
253
cd gcc47 && DEB_CROSS_NO_BIARCH=yes WITH_BUILD_SYSROOT=${CURDIR}/debian/tmp DEB_STAGE=stage2 PKG_IGNORE_CURRENTLY_BUILDING=1 BACKPORT=false dpkg-buildpackage -b -uc -us -d
244
cd gcc && DEB_CROSS_NO_BIARCH=yes WITH_BUILD_SYSROOT=${CURDIR}/debian/tmp DEB_STAGE=stage2 PKG_IGNORE_CURRENTLY_BUILDING=1 BACKPORT=false dpkg-buildpackage -b -uc -us -d
256
247
$(stamp)init-eglibc:
276
267
$(stamp)install-eglibc1: $(stamp)build-eglibc1
277
268
dpkg-deb -x libc6-dev_${DEB_VER_EGLIBC}_${CROSS_ARCH}.deb debian/tmp
269
cd debian/tmp/usr/lib ;\
270
for crt in ${CROSS_GNU_TYPE}/crt*; \
272
ln -sf $$crt `basename $$crt`; \
280
276
$(stamp)build-eglibc2: $(stamp)init-eglibc $(stamp)install-gcc2
310
306
libc6-dbg-${CROSS_ARCH}-cross_${VER_EGLIBC}-*_all.deb \
311
307
libc6-dev-${CROSS_ARCH}-cross_${VER_EGLIBC}-*_all.deb \
312
308
linux-libc-dev-${CROSS_ARCH}-cross_${DEB_VER_LINUX}*_all.deb \
313
libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC47}_all.deb \
314
libgcc1-dbg-${CROSS_ARCH}-cross_${DEB_VER_GCC47}_all.deb \
309
libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
310
libgcc1-dbg-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
317
313
# Repack resulting packages to make some changes;
333
329
sed -i -e "s/${DEB_VER_LINUX}/${DEB_VER_LINUX}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
334
330
sed -i -e "s/Version: ${VER_LINUX}-\(.*\)$$/Version: ${VER_LINUX}-\1cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
335
331
sed -i -e "s/${DEB_VER_EGLIBC}/${DEB_VER_EGLIBC}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
336
sed -i -e "s/${DEB_VER_GCC47}/${DEB_VER_GCC47}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
332
sed -i -e "s/${DEB_VER_GCC}/${DEB_VER_GCC}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
337
333
sed -i -e "s/cross${DEB_VER_ACT}cross${DEB_VER_ACT}/cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
338
334
if [ -e debian/overrides/$$pkgname ]; then \
339
335
mkdir -p tmp/usr/share/lintian/overrides; \
340
336
cp debian/overrides/$$pkgname tmp/usr/share/lintian/overrides/; \
342
338
if [ 'libgcc1-dbg-${CROSS_ARCH}-cross' = $$pkgname ]; then \
343
sed -i -e 's/^Depends.*/Depends: libgcc1-${CROSS_ARCH}-cross (= 1:${DEB_VER_GCC47}cross${DEB_VER_ACT})/g' tmp/DEBIAN/control; \
339
sed -i -e 's/^Depends.*/Depends: libgcc1-${CROSS_ARCH}-cross (= 1:${DEB_VER_GCC}cross${DEB_VER_ACT})/g' tmp/DEBIAN/control; \
344
340
ln -sf libgcc1-${CROSS_ARCH}-cross tmp/usr/share/doc/libgcc1-dbg-${CROSS_ARCH}-cross; \
346
342
if [ 'libgcc1-${CROSS_ARCH}-cross' = $$pkgname ]; then \
450
446
dpkg-cross: build
451
447
for deb in libc6_*_${CROSS_ARCH}.deb libc6-d*_${CROSS_ARCH}.deb linux-libc-dev_*_${CROSS_ARCH}.deb; \
453
PKG_IGNORE_CURRENTLY_BUILDING=1 dpkg-cross -M -a ${CROSS_ARCH} -X dpkg -X findutils -X tzdata -X libc-bin -X libc-dev-bin -b $$deb; \
449
PKG_IGNORE_CURRENTLY_BUILDING=1 dpkg-cross -M -a ${CROSS_ARCH} \
450
-X dpkg -X findutils -X tzdata -X libc-bin -X libc-dev-bin \
451
-X debconf -X debconf-2.0 \
459
458
-e "s/MIN_VER_EGLIBC/${MIN_VER_EGLIBC}/g" \
460
459
-e "s/MIN_VER_LINUX/${MIN_VER_LINUX}/g" \
461
460
-e "s/VER_LINUX/${VER_LINUX}/g" \
462
-e "s/MIN_VER_GCC/${MIN_VER_GCC47}/g" \
461
-e "s/MIN_VER_GCC/${MIN_VER_GCC}/g" \
463
462
-e "s/VER_GCC_BASE/${VER_GCC_BASE}/g" \
464
463
-e "s/EXTRA_DEPS/${EXTRA_DEPS}/g" \
465
464
$(CURDIR)/debian/control.in >$(CURDIR)/debian/control
469
468
-e "s/eglibc-source/eglibc-${VER_EGLIBC}-source/g" \
470
469
-e "s/linux-source/linux-source-${VER_LINUX}/g" \
471
470
-e "s/1.16.0~ubuntu6/1.15.5/g" \
472
-e "s/gcc-${VER_GCC_BASE}-source/gcc-${VER_GCC_BASE}-${VER_GCC47}-source/g" \
471
-e "s/gcc-${VER_GCC_BASE}-source/gcc-${VER_GCC_BASE}-${VER_GCC}-source/g" \
473
472
-i $(CURDIR)/debian/control