16
16
ifeq ($(DISTRO),Debian)
17
17
MIN_VER_EGLIBC := 2.13-5~
18
18
MIN_VER_LINUX := 3.2
19
MIN_VER_GCC := 4.6.2-16
19
MIN_VER_GCC46 := 4.6.2-16
20
MIN_VER_GCC47 := 4.7.0-3
20
21
VER_LINUX := $(shell apt-cache policy linux-source|grep '\*\*\*'|sed -e 's/ ... \([0-9\.]*\)+.*/\1/g')
21
22
DEB_VER_LINUX := $(shell apt-cache policy linux-source-3.2|grep '\*\*\*'|sed -e 's/ ... \([0-9\.\-]*\).*/\1/g')
22
23
# default version of gcc which will be used
25
26
MIN_VER_EGLIBC := 2.13-20~
26
MIN_VER_LINUX := 3.2.0-0~
27
MIN_VER_GCC := 4.6.2-16
27
MIN_VER_LINUX := 3.4.0-0~
28
MIN_VER_GCC46 := 4.6.2-16
29
MIN_VER_GCC47 := 4.7.0-3
29
31
# default version of gcc which will be used
35
EXTRA_DEPS := gcc-4.6-source (>= $(MIN_VER_GCC46)),
35
37
ifeq ($(PPA),false)
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 ' ')
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 ' ')
39
43
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)
40
44
PKG_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils/debian/changelog | egrep '^Version:' | cut -f 2 -d ' '|cut -f 1 -d '-')
41
45
DEB_VER_BINUTILS := $(shell dpkg-parsechangelog -l/usr/src/binutils/debian/changelog | egrep '^Version:' | cut -f 2 -d ' ')
45
49
BINUTILS_DIR := /usr/src/binutils
46
50
EGLIBC_DIR := /usr/src/glibc
47
GCC_DIR := /usr/src/gcc-${VER_GCC_BASE}
51
GCC_DIR46 := /usr/src/gcc-4.6
52
GCC_DIR47 := /usr/src/gcc-${VER_GCC_BASE}
49
54
ifeq ($(DISTRO),Debian)
100
105
@echo "Binutils version: ${VER_BINUTILS} ${DEB_VER_BINUTILS} ${PKG_VER_BINUTILS}"
101
@echo "GCC version: ${VER_GCC} ${DEB_VER_GCC} ${VER_GCC_BASE}"
106
@echo "GCC 4.6 version: ${VER_GCC46} ${DEB_VER_GCC46}"
107
@echo "GCC 4.7 version: ${VER_GCC47} ${DEB_VER_GCC47} ${VER_GCC_BASE}"
102
108
@echo "Eglibc version: ${VER_EGLIBC} ${DEB_VER_EGLIBC}"
103
109
@echo "Linux version: ${VER_LINUX} ${DEB_VER_LINUX}"
143
149
sed -i -e 's/armel/${CROSS_ARCH}/g' tmp/DEBIAN/control
144
150
cd tmp/usr/include ;\
145
151
rm -rf drm scsi ;\
146
mkdir ${CROSS_GNU_TYPE} ;\
147
mv asm ${CROSS_GNU_TYPE}/ ;\
148
152
rm -f `find . -name .install` ;\
149
153
rm -f `find . -name ..install.cmd`
150
154
PKG_IGNORE_CURRENTLY_BUILDING=1 dpkg-deb -b tmp linux-libc-dev_${DEB_VER_LINUX}_${CROSS_ARCH}.deb
187
191
# binutils wants dejagnu to generate docs which are not generate during cross build
190
$(stamp)build-final-binutils: $(stamp)build-gcc3
191
rm -rf binutils-${PKG_VER_BINUTILS}
192
$(call init_binutils)
193
cd binutils-${PKG_VER_BINUTILS} ;\
194
PATCHED_SOURCES=yes PKG_IGNORE_CURRENTLY_BUILDING=1 BACKPORT=false dpkg-buildpackage -b -uc -us -nc -d
195
# binutils wants dejagnu to generate docs which are not generate during cross build
198
194
$(stamp)install-binutils: $(stamp)build-binutils $(stamp)init-dirs
199
195
dpkg-deb -x binutils-${CROSS_GNU_TYPE}_${DEB_VER_BINUTILS}_${HOST_ARCH}.deb debian/tmp
202
198
$(stamp)init-gcc:
205
ln -sf ${GCC_DIR}/gcc-${VER_GCC}.tar.xz gcc-${VER_GCC}.tar.xz ;\
206
cp -a ${GCC_DIR}/debian/ . ; \
207
QUILT_PATCHES=${CURDIR}/debian/patches/gcc quilt push -a ; \
201
ln -sf ${GCC_DIR46}/gcc-${VER_GCC46}.tar.xz gcc-${VER_GCC46}.tar.xz ;\
202
cp -a ${GCC_DIR46}/debian/ . ; \
203
QUILT_PATCHES=${CURDIR}/debian/patches/gcc-4.6 quilt push -a ; \
208
204
echo ${CROSS_ARCH} >debian/target
221
217
define install_gcc
222
dpkg-deb -x gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}_${DEB_VER_GCC}_${HOST_ARCH}.deb debian/tmp
223
dpkg-deb -x cpp-${VER_GCC_BASE}-${CROSS_GNU_TYPE}_${DEB_VER_GCC}_${HOST_ARCH}.deb debian/tmp
218
dpkg-deb -x gcc-4.6-${CROSS_GNU_TYPE}_${DEB_VER_GCC46}_${HOST_ARCH}.deb debian/tmp
219
dpkg-deb -x cpp-4.6-${CROSS_GNU_TYPE}_${DEB_VER_GCC46}_${HOST_ARCH}.deb debian/tmp
224
220
cd debian/tmp/$(PF)/bin/ && \
225
ln -sf ${CROSS_GNU_TYPE}-gcc-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-gcc && \
226
ln -sf ${CROSS_GNU_TYPE}-cpp-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-cpp && \
227
ln -sf ${CROSS_GNU_TYPE}-gcov-${VER_GCC_BASE} ${CROSS_GNU_TYPE}-gcov
221
ln -sf ${CROSS_GNU_TYPE}-gcc-4.6 ${CROSS_GNU_TYPE}-gcc && \
222
ln -sf ${CROSS_GNU_TYPE}-cpp-4.6 ${CROSS_GNU_TYPE}-cpp && \
223
ln -sf ${CROSS_GNU_TYPE}-gcov-4.6 ${CROSS_GNU_TYPE}-gcov
230
226
$(stamp)build-gcc2: $(stamp)init-gcc $(stamp)install-eglibc1
236
232
$(stamp)install-gcc2: $(stamp)build-gcc2
237
233
$(call install_gcc)
238
dpkg-deb -x libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb debian/tmp
241
$(stamp)build-gcc3: $(stamp)init-gcc $(stamp)install-eglibc2
234
dpkg-deb -x libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC46}_all.deb debian/tmp
240
ln -sf ${GCC_DIR47}/gcc-${VER_GCC47}.tar.xz gcc-${VER_GCC47}.tar.xz ;\
241
cp -a ${GCC_DIR47}/debian/ . ; \
242
QUILT_PATCHES=${CURDIR}/debian/patches/gcc-4.7 quilt push -a ; \
243
echo ${CROSS_ARCH} >debian/target
246
$(stamp)build-gcc3: $(stamp)init-gcc47 $(stamp)install-eglibc2
242
247
export PATH=${CURDIR}/debian/tmp/$(PF)/bin/:${PATH} ;\
243
248
export LD_LIBRARY_PATH=${CURDIR}/debian/tmp/$(PF)/$(HOST_GNU_TYPE)/${CROSS_GNU_TYPE}/lib/:${CURDIR}/debian/tmp/usr/lib:${CURDIR}/debian/tmp/lib ;\
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
249
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
247
252
$(stamp)init-eglibc:
297
DEB_LIST_ARCH = $(wildcard *_${HOST_ARCH}.deb)
299
302
# using wildcard for DEB_LIST_ALL gave only problems
301
304
libc6-${CROSS_ARCH}-cross_${VER_EGLIBC}-*_all.deb \
302
305
libc6-dbg-${CROSS_ARCH}-cross_${VER_EGLIBC}-*_all.deb \
303
306
libc6-dev-${CROSS_ARCH}-cross_${VER_EGLIBC}-*_all.deb \
304
307
linux-libc-dev-${CROSS_ARCH}-cross_${DEB_VER_LINUX}*_all.deb \
305
libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
306
libgcc1-dbg-${CROSS_ARCH}-cross_${DEB_VER_GCC}_all.deb \
308
libgcc1-${CROSS_ARCH}-cross_${DEB_VER_GCC47}_all.deb \
309
libgcc1-dbg-${CROSS_ARCH}-cross_${DEB_VER_GCC47}_all.deb \
309
312
# Repack resulting packages to make some changes;
325
328
sed -i -e "s/${DEB_VER_LINUX}/${DEB_VER_LINUX}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
326
329
sed -i -e "s/Version: ${VER_LINUX}-\(.*\)$$/Version: ${VER_LINUX}-\1cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
327
330
sed -i -e "s/${DEB_VER_EGLIBC}/${DEB_VER_EGLIBC}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
328
sed -i -e "s/${DEB_VER_BINUTILS}/${DEB_VER_BINUTILS}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
329
sed -i -e "s/${DEB_VER_GCC}/${DEB_VER_GCC}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
331
sed -i -e "s/${DEB_VER_GCC47}/${DEB_VER_GCC47}cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
330
332
sed -i -e "s/cross${DEB_VER_ACT}cross${DEB_VER_ACT}/cross${DEB_VER_ACT}/g" tmp/DEBIAN/control ; \
331
333
if [ -e debian/overrides/$$pkgname ]; then \
332
334
mkdir -p tmp/usr/share/lintian/overrides; \
333
335
cp debian/overrides/$$pkgname tmp/usr/share/lintian/overrides/; \
335
337
if [ 'libgcc1-dbg-${CROSS_ARCH}-cross' = $$pkgname ]; then \
336
sed -i -e 's/^Depends.*/Depends: libgcc1-${CROSS_ARCH}-cross (= 1:${DEB_VER_GCC}cross${DEB_VER_ACT})/g' tmp/DEBIAN/control; \
338
sed -i -e 's/^Depends.*/Depends: libgcc1-${CROSS_ARCH}-cross (= 1:${DEB_VER_GCC47}cross${DEB_VER_ACT})/g' tmp/DEBIAN/control; \
337
339
ln -sf libgcc1-${CROSS_ARCH}-cross tmp/usr/share/doc/libgcc1-dbg-${CROSS_ARCH}-cross; \
339
341
if [ 'libgcc1-${CROSS_ARCH}-cross' = $$pkgname ]; then \
340
342
sed -i -e'/^Depends/d' tmp/DEBIAN/control; \
341
343
rm tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross; \
342
344
mkdir -p tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross; \
343
cp gcc/debian/gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}-base/usr/share/doc/gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}-base/* tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross; \
345
cp gcc47/debian/gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}-base/usr/share/doc/gcc-${VER_GCC_BASE}-${CROSS_GNU_TYPE}-base/* tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross; \
344
346
mv tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross/changelog.Debian.gz \
345
347
tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross/changelog.Debian.gcc-${VER_GCC_BASE}.gz; \
346
348
gzip -c9 debian/changelog > tmp/usr/share/doc/libgcc1-${CROSS_ARCH}-cross/changelog.Debian.gz;\
377
repack-debs-arch: build
378
$(call repack_debs, ${DEB_LIST_ARCH})
380
379
repack-debs-indep: dpkg-cross
381
380
install -d repackfiles/eglibc repackfiles/linux
382
381
dpkg-deb -x libc6_${DEB_VER_EGLIBC}_${CROSS_ARCH}.deb repackfiles/eglibc
383
382
dpkg-deb -x linux-libc-dev_${DEB_VER_LINUX}_${CROSS_ARCH}.deb repackfiles/linux
384
383
$(call repack_debs, ${DEB_LIST_ALL})
387
386
build-indep: build
388
build: $(stamp)build-gcc3 $(stamp)build-final-binutils
387
build: $(stamp)build-gcc3
389
388
# we do not need those packages
390
389
rm -f cpp-*_${HOST_ARCH}.*deb
391
390
rm -f gcc-*_${HOST_ARCH}.*deb
440
mangle-debian-files-arch: $(stamp)debian-files-base repack-debs-arch
441
$(call generate_debian_files, ${DEB_LIST_ARCH})
442
sed -i -e "s/_all.deb/cross${DEB_VER_ACT}_all.deb/g" debian/files
443
sed -i -e "s/_${HOST_ARCH}.deb/cross${DEB_VER_ACT}_${HOST_ARCH}.deb/g" debian/files
444
sed -i -e "s/cross${DEB_VER_ACT}cross${DEB_VER_ACT}/cross${DEB_VER_ACT}/g" debian/files
446
439
mangle-debian-files-indep: $(stamp)debian-files-base repack-debs-indep $(stamp)make-dummies
447
440
$(call generate_debian_files, ${DEB_LIST_ALL})
448
441
sed -i -e "s/_all.deb/cross${DEB_VER_ACT}_all.deb/g" debian/files
461
454
-e "s/MIN_VER_EGLIBC/${MIN_VER_EGLIBC}/g" \
462
455
-e "s/MIN_VER_LINUX/${MIN_VER_LINUX}/g" \
463
456
-e "s/VER_LINUX/${VER_LINUX}/g" \
464
-e "s/MIN_VER_GCC/${MIN_VER_GCC}/g" \
457
-e "s/MIN_VER_GCC/${MIN_VER_GCC47}/g" \
465
458
-e "s/VER_GCC_BASE/${VER_GCC_BASE}/g" \
466
459
-e "s/EXTRA_DEPS/${EXTRA_DEPS}/g" \
467
460
$(CURDIR)/debian/control.in >$(CURDIR)/debian/control