~ubuntu-branches/ubuntu/utopic/armel-cross-toolchain-base/utopic

« back to all changes in this revision

Viewing changes to debian/rules

  • Committer: Package Import Robot
  • Author(s): Marcin Juszkiewicz, Wookey, Marcin Juszkiewicz
  • Date: 2012-05-15 15:39:42 UTC
  • Revision ID: package-import@ubuntu.com-20120515153942-snhd05521kh55sh8
Tags: 1.83
[ Wookey ]
* Debian switched to gcc-4.7 so we have to too.

[ Marcin Juszkiewicz ]
* GCC-4.7 related changes:
  - added patch to drop --disable-multiarch for stage1
  - refreshed enable-multiarch-directories.patch
* Dropped creation of /usr/TRIPLET/include/TRIPLET/asm directory under
        Debian.
* Moved cross binutils to separate source package as this will make
  armel-cross-toolchain-base (a-c-t-b) arch:all so less building. Also
  allows to kill a-c-t-b when we will get cross-arch build dependencies.
* Build gcc-4.6/cross for building eglibc/cross and then gcc-4.7/cross to
        have libgcc1/cross. This part will be reverted when eglibc will be
        compiled with gcc-4.7 version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
23
 
  VER_GCC_BASE   := 4.6
 
24
  VER_GCC_BASE   := 4.7
24
25
else
25
26
  MIN_VER_EGLIBC := 2.13-20~
26
 
  MIN_VER_LINUX  := 3.2.0-0~
27
 
  MIN_VER_GCC    := 4.6.2-16
28
 
  VER_LINUX      := 3.2.0
 
27
  MIN_VER_LINUX  := 3.4.0-0~
 
28
  MIN_VER_GCC46  := 4.6.2-16
 
29
  MIN_VER_GCC47  := 4.7.0-3
 
30
  VER_LINUX      := 3.4.0
29
31
# default version of gcc which will be used
30
 
  VER_GCC_BASE := 4.6
 
32
  VER_GCC_BASE := 4.7
31
33
endif
32
34
 
33
 
EXTRA_DEPS :=
 
35
EXTRA_DEPS := gcc-4.6-source (>= $(MIN_VER_GCC46)),
34
36
 
35
37
ifeq ($(PPA),false)
36
38
 
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 ' ')
44
48
 
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}
48
53
 
49
54
  ifeq ($(DISTRO),Debian)
50
55
 
98
103
 
99
104
info:
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}"
104
110
        @echo
111
117
        mkdir debian/tmp -p
112
118
        touch $@
113
119
 
114
 
init: $(stamp)init-binutils $(stamp)init-gcc $(stamp)init-eglibc
 
120
init: $(stamp)init-binutils $(stamp)init-gcc47 $(stamp)init-gcc $(stamp)init-eglibc
115
121
 
116
122
$(stamp)init-linux:
117
123
ifeq ($(DISTRO),Debian)
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
188
192
        touch $@
189
193
 
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
196
 
        touch $@
197
 
 
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
200
196
        touch $@
202
198
$(stamp)init-gcc:
203
199
        mkdir gcc -p ; \
204
200
        cd 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
209
205
        touch $@
210
206
 
219
215
        touch $@
220
216
 
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
228
224
endef
229
225
 
230
226
$(stamp)build-gcc2: $(stamp)init-gcc $(stamp)install-eglibc1
235
231
 
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
239
 
        touch $@
240
 
 
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
 
235
        touch $@
 
236
 
 
237
$(stamp)init-gcc47:
 
238
        mkdir gcc47 -p ; \
 
239
        cd gcc47 ; \
 
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
 
244
        touch $@
 
245
 
 
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
245
250
        touch $@
246
251
 
247
252
$(stamp)init-eglibc:
294
299
        rm -rf $(stamp)
295
300
        mkdir $(stamp)
296
301
 
297
 
DEB_LIST_ARCH = $(wildcard *_${HOST_ARCH}.deb)
298
 
 
299
302
# using wildcard for DEB_LIST_ALL gave only problems
300
303
DEB_LIST_ALL = \
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  \
307
310
 
308
311
#
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/; \
334
336
            fi; \
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; \
338
340
            fi; \
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;\
374
376
        done
375
377
endef
376
378
 
377
 
repack-debs-arch: build
378
 
        $(call repack_debs, ${DEB_LIST_ARCH})
379
 
 
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})
385
384
 
386
 
build-arch: build
 
385
build-arch:
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
396
395
        rm -f nscd*deb
397
396
 
398
397
binary: binary-arch binary-indep
399
 
binary-arch:  build mangle-debian-files-arch
 
398
binary-arch:  build-arch
400
399
binary-indep: build dpkg-cross mangle-debian-files-indep $(stamp)make-dummies
401
400
 
402
401
DUMMYNAME = 
437
436
        done
438
437
endef
439
438
 
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
445
 
 
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