Magellan Linux

Annotation of /branches/R11-stable/core/gcc/gcc-4.7.3-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17735 - (hide annotations) (download)
Wed Jun 26 12:10:24 2013 UTC (10 years, 11 months ago) by niro
File size: 30223 byte(s)
-release branches/R11-stable
1 niro 17069 # $Id$
2    
3     PNAME="gcc"
4     PVER="4.7.3"
5     PBUILD="r1"
6    
7     PCAT="sys-dev"
8     HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
9    
10     # packages which needs rebuild: libtool java-gcj-compat llvm
11    
12     # languages to build into gcc
13     # options are: c,c++,java,ada,fortran,go,objc,obj-c++,lto
14     # obj-c++ requires objc
15     #
16     # while toolchain boostrap, only build c,c++ and after that rebuild the whole toolchain:
17     # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
18     MyLanguages=c,c++,ada,java,fortran,go,objc,obj-c++,lto
19    
20     # 1=bootstrap the whole gcc suite, using bootstrap-lean method
21     # 0=no bootstrap, use this only for quick builds to test something but never for release
22     GCC_BOOTSTRAP="1"
23    
24     # 1=bootsrap ada, using precompiled gnat binaries
25     # 0=no bootstrap, build ada with system gnat - requires sys-dev/gcc-gnat
26     ADA_BOOTSTRAP="0"
27    
28     SPLIT_PACKAGES="libgcc libssp libgomp libmudflap libquadmath libitm libstdc++"
29    
30     # always enable gcc
31     SPLIT_PACKAGES+=" gcc"
32    
33     # helper functions
34     lang_enabled()
35     {
36     local lang="$1"
37    
38     if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
39     then
40     return 0
41     else
42     return 1
43     fi
44     }
45    
46     versionize_all_bins()
47     {
48     local bin
49    
50     for bin in $(find ${BINDIR}/usr/bin -type f)
51     do
52     echo ${bin}
53     mv ${bin} ${bin}-${PVER} || die
54     ln -snf $(basename ${bin}-${PVER}) ${bin} || die
55     done
56     }
57    
58     GLIBC_DEPEND=">= virtual/glibc"
59     ZLIB_DEPEND=">= sys-libs/zlib-1.2.7"
60     COMMON_DEPEND="${GLIBC_DEPEND}
61     ${ZLIB_DEPEND}
62     >= dev-libs/gmp-5.1
63     >= dev-libs/mpfr-3.1
64     >= dev-libs/mpc-1.0.1"
65     LIBGCC_DEPEND="${GLIBC_DEPEND}"
66     LIBSSP_DEPEND="${GLIBC_DEPEND}"
67     LIBGOMP_DEPEND="${GLIBC_DEPEND}"
68     LIBMUDFLAP_DEPEND="${GLIBC_DEPEND}"
69     LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
70     LIBITM_DEPEND="${GLIBC_DEPEND}"
71     LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
72    
73     GCC_DEPEND="${COMMON_DEPEND}
74     >= sys-dev/binutils-2.23
75     >= dev-libs/ppl-1.0
76     >= dev-libs/cloog-0.18
77     >= dev-libs/elfutils-0.155"
78    
79     if lang_enabled java
80     then
81     SPLIT_PACKAGES+=" libgcj gcc-gcj"
82     LIBGCJ_DEPEND="${GLIBC_DEPEND}
83     ${ZLIB_DEPEND}"
84     JAVA_DEPEND="${COMMON_DEPEND}
85     >= dev-java/eclipse-ecj-3.6
86     >= dev-java/fastjar-0.98
87     >= sys-apps/file-5
88     >= app-arch/unzip-6
89     >= app-arch/zip-3
90     >= media-libs/alsa-lib-1.0.26
91     >= x11-libs/libSM-1.2
92     >= x11-libs/libXtst-1.2
93     >= dev-libs/glib2-2.34
94     >= x11-libs/gtk2+-2.24
95     >= media-libs/libart_lgpl-2.3.21"
96    
97     # provided java version
98     JAVA_PVER="1.5.0-gcj-1.5.0.0"
99     fi
100    
101     if lang_enabled ada
102     then
103     SPLIT_PACKAGES+=" libgnat gcc-gnat"
104     LIBGNAT_DEPEND="${GLIBC_DEPEND}"
105     ADA_DEPEND="${COMMON_DEPEND}"
106     if [[ ${ADA_BOOTSTRAP} = 1 ]]
107     then
108     GNAT_BIN_x86="gnatboot-4.3-i686.tar.bz2"
109     GNAT_BIN_x86_64="gnatboot-4.3-amd64.tar.bz2"
110     GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
111     GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
112     SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86} )
113     SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86_64} )
114     fi
115     fi
116    
117     if lang_enabled fortran
118     then
119     SPLIT_PACKAGES+=" libgfortran gcc-gfortran"
120     LIBGFORTRAN_DEPEND="${GLIBC_DEPEND}"
121     FORTRAN_DEPEND="${COMMON_DEPEND}"
122     fi
123    
124     if lang_enabled go
125     then
126     SPLIT_PACKAGES+=" libgo gcc-go"
127     LIBGO_DEPEND="${GLIBC_DEPEND}"
128     GO_DEPEND="${COMMON_DEPEND}"
129     fi
130    
131     if lang_enabled objc
132     then
133     SPLIT_PACKAGES+=" libobjc gcc-objc"
134     LIBOBJC_DEPEND="${GLIBC_DEPEND}"
135     OBJC_DEPEND="${COMMON_DEPEND}"
136    
137     if lang_enabled obj-c++
138     then
139     SPLIT_PACKAGES+=" gcc-objc++"
140     OBJCPP_DEPEND="${COMMON_DEPEND}"
141     fi
142     fi
143    
144     SDEPEND="${LIBGCC_DEPEND}
145     ${LIBSSP_DEPEND}
146     ${LIBGOMP_DEPEND}
147     ${LIBMUDFLAP_DEPEND}
148     ${LIBQUADMATH_DEPEND}
149     ${LIBITM_DEPEND}
150     ${LIBSTDCPP_DEPEND}
151     ${GCC_DEPEND}
152     ${LIBGCJ_DEPEND}
153     ${JAVA_DEPEND}
154     ${LIBGNAT_DEPEND}
155     ${ADA_DEPEND}
156     ${LIBGFORTRAN_DEPEND}
157     ${FORTRAN_DEPEND}
158     ${LIBGO_DEPEND}
159     ${GO_DEPEND}
160     ${LIBOBJC_DEPEND}
161     ${OBJC_DEPEND}
162     ${OBJCPP_DEPEND}
163     >= virtual/kernel-headers"
164    
165     if [[ ${ADA_BOOTSTRAP} != 1 ]]
166     then
167     # add gnat to SDEPEND
168     SDEPEND="${SDEPEND}
169     >= sys-dev/gcc-gnat-4.7"
170     fi
171    
172     SRCFILE="${PNAME}-${PVER}.tar.bz2"
173     SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
174    
175     # you better off when not using distcc to compile
176     # your new compiler :) maybe not all are the same
177     msetfeature "!distcc"
178    
179     sminclude mtools cleanutils libtool
180    
181     SRC_URI=(
182     ${SRC_URI[*]}
183     gnu://${PNAME}/${PNAME}-${PVER}/${SRCFILE}
184     mirror://${PNAME}/${SRCFILE}
185     mirror://${PNAME}/${PNAME}-4.5.1-no-fixincludes.patch
186     mirror://${PNAME}/${PNAME}-4.7.0-cloog017.patch
187     mirror://${PNAME}/${PNAME}-4.7.1-libada-pic.patch
188     )
189    
190     UP2DATE="updatecmd 'http://ftp.gnu.org/gnu/${PNAME}/?C=M;O=A' | grep '\[DIR\]' | sed -n 's:.*${PNAME}-\(.*\)/.*:\1:;$ p'"
191    
192     # gcc don't like strong CFLAGS
193     export CFLAGS="${CFLAGS//-O?} -O2"
194     export CXXFLAGS="${CFLAGS}"
195    
196     # check for crosscompile or export default CHOST
197     if [[ -z ${CTARGET} ]]
198     then
199     # no crosscompile defined
200     export CTARGET=${CHOST}
201     else
202     # use crosscompile host
203     export CTARGET=${CTARGET}
204     fi
205    
206     split_info_gcc()
207     {
208     DESCRIPTION="Modern C/C++ compiler written by the GNU people."
209    
210     local mydeps
211     if [[ ${ARCH} = x86_64 ]]
212     then
213     mydeps="== sys-libs/libtsan-${PVER}"
214     fi
215    
216     DEPEND="== sys-libs/libgcc-${PVER}
217     == sys-libs/libssp-${PVER}
218     == sys-libs/libgomp-${PVER}
219     == sys-libs/libmudflap-${PVER}
220     == sys-libs/libquadmath-${PVER}
221     == sys-libs/libitm-${PVER}
222     == sys-libs/libstdc++-${PVER}
223     ${mydeps}
224     ${GCC_DEPEND}"
225     }
226    
227     split_info_libgcc()
228     {
229     DESCRIPTION="GCC shared support library."
230     DEPEND="${LIBGCC_DEPEND}"
231     PCAT="sys-libs"
232     }
233    
234     split_info_libssp()
235     {
236     DESCRIPTION="Stack Smashing Protection library from GCC."
237     DEPEND="${LIBSSP_DEPEND}"
238     PCAT="sys-libs"
239     }
240    
241     split_info_libgomp()
242     {
243     DESCRIPTION="GNU OpenMP runtime library."
244     DEPEND="${LIBGOMP_DEPEND}"
245     PCAT="sys-libs"
246     }
247    
248     split_info_libmudflap()
249     {
250     DESCRIPTION="GCC mudflap shared support library."
251     DEPEND="${LIBMUDFLAP_DEPEND}"
252     PCAT="sys-libs"
253     }
254    
255     split_info_libquadmath()
256     {
257     DESCRIPTION="GCC __float128 shared support library."
258     DEPEND="${LIBQUADMATH_DEPEND}"
259     PCAT="sys-libs"
260     }
261    
262     split_info_libitm()
263     {
264     DESCRIPTION="The GNU Transactional Memory library."
265     DEPEND="${LIBITM_DEPEND}"
266     PCAT="sys-libs"
267     }
268    
269     split_info_libstdc++()
270     {
271     DESCRIPTION="Standard GNU C and C++ libraries."
272     DEPEND="== sys-libs/libgcc-${PVER}
273     ${LIBSTDCPP_DEPEND}"
274     PCAT="sys-libs"
275     }
276    
277     if lang_enabled java
278     then
279     split_info_libgcj()
280     {
281     DESCRIPTION="Java runtime library for GCC."
282     DEPEND="== sys-libs/libgcc-${PVER}
283     ${LIBGCJ_DEPEND}"
284     PCAT="sys-libs"
285     }
286    
287     split_info_gcc-gcj()
288     {
289     DESCRIPTION="Java support for GCC."
290     DEPEND="== sys-libs/libgcc-${PVER}
291     == sys-libs/libstdc++-${PVER}
292     == sys-libs/libgcj-${PVER}
293     == sys-dev/gcc-${PVER}
294     ${JAVA_DEPEND}"
295     }
296     fi
297    
298     if lang_enabled ada
299     then
300     split_info_libgnat()
301     {
302     DESCRIPTION="Gnu Ada 95 library which is needed to run Ada programs."
303     DEPEND="== sys-libs/libgcc-${PVER}
304     ${LIBGNAT_DEPEND}"
305     PCAT="sys-libs"
306     }
307    
308     split_info_gcc-gnat()
309     {
310     DESCRIPTION="Ada 95 support for GCC."
311     DEPEND="== sys-libs/libgcc-${PVER}
312     == sys-libs/libstdc++-${PVER}
313     == sys-libs/libgnat-${PVER}
314     == sys-dev/gcc-${PVER}
315     ${ADA_DEPEND}"
316     }
317     fi
318    
319     if lang_enabled fortran
320     then
321     split_info_libgfortran()
322     {
323     DESCRIPTION="Gnu Fortran library which is needed to run Fortran programs."
324     DEPEND="== sys-libs/libquadmath-${PVER}
325     ${LIBGFORTRAN_DEPEND}"
326     PCAT="sys-libs"
327     }
328    
329     split_info_gcc-gfortran()
330     {
331     DESCRIPTION="Fortran support for GCC."
332     DEPEND="== sys-libs/libgcc-${PVER}
333     == sys-libs/libstdc++-${PVER}
334     == sys-libs/libgfortran-${PVER}
335     == sys-dev/gcc-${PVER}
336     ${FORTRAN_DEPEND}"
337     }
338     fi
339    
340     if lang_enabled go
341     then
342     split_info_libgo()
343     {
344     DESCRIPTION="Go library which is needed to run Go programs."
345     DEPEND="== sys-libs/libgcc-${PVER}
346     ${LIBGO_DEPEND}"
347     PCAT="sys-libs"
348     }
349    
350     split_info_gcc-go()
351     {
352     DESCRIPTION="Go support for GCC."
353     DEPEND="== sys-libs/libgcc-${PVER}
354     == sys-libs/libstdc++-${PVER}
355     == sys-libs/libgo-${PVER}
356     == sys-dev/gcc-${PVER}
357     ${GO_DEPEND}"
358     }
359     fi
360    
361     if lang_enabled objc
362     then
363     split_info_libobjc()
364     {
365     DESCRIPTION="Objective-C library which is needed to run Objective-C programs."
366     DEPEND="== sys-libs/libgcc-${PVER}
367     ${LIBOBJC_DEPEND}"
368     PCAT="sys-libs"
369     }
370    
371     split_info_gcc-objc()
372     {
373     DESCRIPTION="Objective-C support for GCC."
374     DEPEND="== sys-libs/libgcc-${PVER}
375     == sys-libs/libstdc++-${PVER}
376     == sys-libs/libobjc-${PVER}
377     == sys-dev/gcc-${PVER}
378     ${OBJC_DEPEND}"
379     }
380    
381     if lang_enabled obj-c++
382     then
383     split_info_gcc-objc++()
384     {
385     DESCRIPTION="Objective-C++ support for GCC."
386     DEPEND="== sys-libs/libgcc-${PVER}
387     == sys-libs/libstdc++-${PVER}
388     == sys-libs/libobjc-${PVER}
389     == sys-dev/gcc-${PVER}
390     == sys-dev/gcc-objc-${PVER}
391     ${OBJCPP_DEPEND}"
392     }
393     fi
394     fi
395    
396     src_prepare()
397     {
398     munpack ${SRCFILE} || die
399    
400     if lang_enabled ada
401     then
402     if [[ ${ADA_BOOTSTRAP} = 1 ]]
403     then
404     # setup binary ada if boostrap is enabled
405     install -d ${GNAT_BIN_SRCDIR} || die
406     munpack ${GNAT_BIN} ${GNAT_BIN_SRCDIR} || die
407     # gnat wrapper has problems with quotation
408     sed -i \
409     -e "/-DREVISION/d" \
410     -e "/-DDEVPHASE/d" \
411     -e "s: -DDATESTAMP=\$(DATESTAMP_s)::" \
412     ${SRCDIR}/gcc/Makefile.in || die
413     sed -i \
414     -e "s: DATESTAMP DEVPHASE REVISION::" \
415     -e "s:PKGVERSION:\"\":" \
416     ${SRCDIR}/gcc/version.c || die
417     fi
418     cd ${SRCDIR}
419     fi
420    
421     cd ${SRCDIR}
422    
423     # generic fixes
424     mpatch ${PNAME}-4.5.1-no-fixincludes.patch || die
425    
426     # support cloog-0.17
427     mpatch ${PNAME}-4.7.0-cloog017.patch || die
428    
429     # fix pic issues
430     mpatch ${PNAME}-4.7.1-libada-pic.patch || die
431    
432     # suppress installation of libiberty, as we will be
433     # using the one from binutils
434     sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die
435    
436     # suppress installation of libffi, we're using libffi3 instead
437     sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
438     sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
439    
440     install -d ${SRCDIR}/build || die
441     }
442    
443     src_compile()
444     {
445     if lang_enabled ada
446     then
447     if [[ ${ADA_BOOTSTRAP} = 1 ]]
448     then
449     # export binary gnat pathes
450     export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
451     export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
452     # CPATH is supposed to be applied for any language, thus
453     # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
454     export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
455     export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
456     export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
457     export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
458     export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
459     export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
460    
461     # prepare some tools
462     cd ${GNAT_BIN_SRCDIR}
463     cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
464     cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
465     cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
466     cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
467     cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
468     cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
469     cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
470     gnatmake xtreeprs || die
471     gnatmake xsinfo || die
472     gnatmake xeinfo || die
473     gnatmake xnmake || die
474     fi
475     fi
476    
477     cd ${SRCDIR}/build
478     local myconf
479    
480     # Straight from the GCC install doc:
481     # "GCC has code to correctly determine the correct value for target
482     # for nearly all native systems. Therefore, we highly recommend you
483     # not provide a configure target when configuring a native compiler."
484     if [[ ${CHOST} != ${CTARGET} ]]
485     then
486     myconf+=" --target=${CTARGET}"
487     fi
488    
489     if lang_enabled java
490     then
491     myconf+=" --enable-java-awt=gtk
492     --enable-gtk-cairo
493     --enable-libgcj-multifile
494     --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
495     --with-fastjar=/usr/bin/fastjar
496     --enable-hash-synchronization"
497     # disable mutilib for java
498     myconf+=" --disable-libjava-multilib"
499     # java home, must be the same of java-gcj-compat
500     myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
501     fi
502    
503     # # support ppl >= 1.0
504     # myconf+=" --disable-ppl-version-check"
505     # # and ignore version check for cloog too
506     # myconf+=" --disable-cloog-version-check"
507     # # use isl backend
508     # myconf+=" --enable-cloog-backend=isl"
509    
510     # suppress installation of libiberty, as we will be
511     # using the one from binutils
512     myconf+=" --disable-install-libiberty"
513    
514     # gcc >= 4.3 has now configure flags for uri and version - yeah!
515     AR=ar \
516     ../configure \
517     --with-bugurl="http://bugs.magellan-linux.de/" \
518     --with-pkgversion="Magellan-Linux" \
519     --build=${CHOST} \
520     --host=${CHOST} \
521     --prefix=/usr \
522     --sbindir=/usr/bin \
523     --mandir=/usr/share/man \
524     --infodir=/usr/share/info \
525     --libdir=/usr/$(mlibdir) \
526     --libexecdir=/usr/$(mlibdir) \
527     --enable-shared \
528     --enable-threads=posix \
529     --enable-__cxa_atexit \
530     --enable-clocale=gnu \
531     --disable-checking \
532     --with-system-zlib \
533     --enable-long-long \
534     --enable-cstdio=stdio \
535     --enable-languages=${MyLanguages} \
536     --disable-libstdcxx-pch \
537     --enable-gnu-unique-object \
538     --enable-lto \
539     --enable-plugin \
540     --enable-gold \
541     --enable-linker-build-id \
542     ${myconf} \
543     || die
544    
545     # parallel builds seems to break sometimes on x86_64
546     local myopts
547     [[ ${ARCH} = x86_64 ]] && myopts=-j1
548    
549     # enable bootstrap if requested
550     local target
551     [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
552    
553     mmake ${myopts} ${target} || die
554     }
555    
556     src_install_gcc()
557     {
558     local i
559     local bin
560    
561     cd ${SRCDIR}/build
562     minstalldir /$(mlibdir) || die
563    
564     # install all targets
565     make DESTDIR=${BINDIR} install || die
566    
567     # move gdb scripts to a proper location and to pretty-print ldconfig
568     minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
569     mv -v ${BINDIR}/usr/$(mlibdir)/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
570     # multilib as well
571     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
572     then
573     minstalldir /usr/share/gdb/auto-load/usr/lib || die
574     mv -v ${BINDIR}/usr/lib/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/lib/ || die
575     fi
576    
577     # deletes libstdc++ && libgcc_s && libssp && libgomp libmudflap && libquadmath && libitm && libatomic && libasan
578     rm -v ${BINDIR}/usr/$(mlibdir)/libgcc_s.so* || die
579     mmake -j1 -C ${CHOST}/libssp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
580     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
581     mmake -j1 -C ${CHOST}/libmudflap DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
582     mmake -j1 -C ${CHOST}/libquadmath DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
583     mmake -j1 -C ${CHOST}/libitm DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
584     mmake -j1 -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
585     if [[ $(mlibdir) != lib ]]
586     then
587     rm -v ${BINDIR}/usr/lib/libgcc_s.so* || die
588     mmake -j1 -C ${CHOST}/32/libssp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
589     mmake -j1 -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
590     mmake -j1 -C ${CHOST}/32/libmudflap DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
591     mmake -j1 -C ${CHOST}/32/libquadmath DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
592     mmake -j1 -C ${CHOST}/32/libitm DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
593     mmake -j1 -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
594     fi
595     mdelete /usr/share/info/libgomp.info || die
596     mdelete /usr/share/info/libitm.info || die
597     mdelete /usr/share/info/libquadmath.info || die
598     find ${BINDIR}/usr/share/locale -name libstdc++.mo | xargs --no-run-if-empty --verbose rm -v || die
599    
600     # deletes all java specific
601     if lang_enabled java
602     then
603     mmake -j1 -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
604     if [[ $(mlibdir) != lib ]]
605     then
606     mmake -j1 -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
607     fi
608     rm -v ${BINDIR}/usr/$(mlibdir)/libgcj_bc.so* || die
609     rm -rv ${BINDIR}/usr/include/c++/${PVER}/{gcj,gnu,java{,x},org,sun} || die
610     rm -rv ${BINDIR}/usr/$(mlibdir)/gcj* || die
611     mdelete /usr/$(mlibdir)/logging.properties || die
612 niro 17071 mdelete /usr/$(mlibdir)/libgcj.spec || die
613 niro 17069 rm -v ${BINDIR}/usr/$(mlibdir)/pkgconfig/libgcj*.pc || die
614     mdelete -r /usr/$(mlibdir)/security || die
615     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ecj1 || die
616     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jc1 || die
617     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jvgenmain || die
618     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/gcj || die
619     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/{{jawt,jni}{,_md},jvmpi}.h || die
620     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
621     then
622     rm -v ${BINDIR}/usr/lib/libgcj_bc.so* || die
623     rm -rv ${BINDIR}/usr/lib/gcj* || die
624     mdelete /usr/lib/logging.properties || die
625     mdelete -r /usr/lib/security || die
626     fi
627     mdelete /usr/share/info/cp-tools.info || die
628     mdelete /usr/share/info/gcj.info || die
629     mdelete -r /usr/share/java || die
630     mdelete -r /usr/share/gcc-${PVER}/python/libjava || die
631     for i in aot-compile gappletviewer gc-analyze gcj gcj-dbtool gcjh gij gjar \
632     gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry \
633     gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db ${CHOST}-gcj
634     do
635     if [ -f ${BINDIR}/usr/bin/${i} ]
636     then
637     mdelete /usr/bin/${i} || die
638     fi
639     if [ -f ${BINDIR}/usr/share/man/man1/${i}.1 ]
640     then
641     mdelete /usr/share/man/man1/${i}.1 || die
642     fi
643     done
644     fi
645    
646     # deletes all ada specific
647     if lang_enabled ada
648     then
649     rm -v ${BINDIR}/usr/bin/gnat* || die
650     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/gnat1 || die
651     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib || die
652     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
653     if [[ $(mlibdir) != lib ]]
654     then
655     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib || die
656     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
657     fi
658     rm -v ${BINDIR}/usr/share/info/gnat*.info || die
659     fi
660    
661     # deletes all fortran specific
662     if lang_enabled fortran
663     then
664     mmake -j1 -C ${CHOST}/libgfortran DESTDIR=${BINDIR} uninstall || die
665     if [[ $(mlibdir) != lib ]]
666     then
667     mmake -j1 -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} uninstall || die
668     fi
669     mdelete /usr/bin/gfortran || die
670     mdelete /usr/bin/${CHOST}-gfortran || die
671     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
672     mdelete /usr/share/info/gfortran.info || die
673     mdelete /usr/share/man/man1/gfortran.1 || die
674     fi
675    
676     # deletes all go specific
677     if lang_enabled go
678     then
679     mmake -j1 -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
680     if [[ $(mlibdir) != lib ]]
681     then
682     mmake -j1 -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
683     fi
684     mdelete /usr/bin/gccgo || die
685     mdelete /usr/bin/${CHOST}-gccgo || die
686     mdelete -r /usr/$(mlibdir)/go || die
687     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/go1 || die
688     mdelete /usr/$(mlibdir)/libgobegin.a || die
689     if [[ $(mlibdir) != lib ]]
690     then
691     mdelete -r /usr/lib/go || die
692     mdelete /usr/lib/libgobegin.a || die
693     fi
694     mdelete /usr/share/info/gccgo.info || die
695     mdelete /usr/share/man/man1/gccgo.1 || die
696     fi
697    
698     # deletes all objc + obj-c++
699     if lang_enabled objc
700     then
701     rm -v ${BINDIR}/usr/$(mlibdir)/libobjc.so* || die
702     rm -v ${BINDIR}/usr/$(mlibdir)/libobjc.{a,la} || die
703     if [[ $(mlibdir) != lib ]]
704     then
705     rm -v ${BINDIR}/usr/lib/libobjc.so* || die
706     rm -v ${BINDIR}/usr/lib/libobjc.{a,la} || die
707     fi
708     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1obj || die
709     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/objc || die
710    
711     if lang_enabled obj-c++
712     then
713     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1objplus || die
714     fi
715     fi
716    
717     # versionize all bins and symlink them
718     versionize_all_bins || die
719    
720     mlink ../usr/bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
721     # this one is needed on multilib systems.
722     # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
723     if [[ $(mlibdir) != lib ]]
724     then
725     minstalldir /usr/lib || die
726     mlink ../usr/bin/cpp-${PVER} /usr/lib/cpp || die
727     fi
728     mlink gcc-${PVER} /usr/bin/cc || die
729    
730     # fix all .la files
731     # they may contain invalid libpathes which are not needed
732     local la
733     for la in $(find ${BINDIR} -name \*.la)
734     do
735     fix_la_file ${la} || die ${la}
736     done
737    
738     # remove /lib dirs to be usr-move compat
739     if [[ -d ${BINDIR}/$(mlibdir) ]]
740     then
741     rm -rv ${BINDIR}/$(mlibdir) || die
742     fi
743     if [[ $(mlibdir) != lib ]]
744     then
745     if [[ -d ${BINDIR}/lib ]]
746     then
747     rm -rv ${BINDIR}/lib || die
748     fi
749     fi
750     }
751    
752     src_install_libgcc()
753     {
754     cd ${SRCDIR}/build
755     mmake -j1 -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
756     if [[ $(mlibdir) != lib ]]
757     then
758     mmake -j1 -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
759     fi
760     mdelete -r /usr/$(mlibdir)/gcc || die
761     }
762    
763     src_install_libssp()
764     {
765     cd ${SRCDIR}/build
766     mmake -j1 -C ${CHOST}/libssp DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
767     if [[ $(mlibdir) != lib ]]
768     then
769     mmake -j1 -C ${CHOST}/32/libssp DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
770     fi
771     }
772    
773     src_install_libgomp()
774     {
775     cd ${SRCDIR}/build
776     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
777     if [[ $(mlibdir) != lib ]]
778     then
779     mmake -j1 -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
780     fi
781     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
782     }
783    
784     src_install_libmudflap()
785     {
786     cd ${SRCDIR}/build
787     mmake -j1 -C ${CHOST}/libmudflap DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
788     if [[ $(mlibdir) != lib ]]
789     then
790     mmake -j1 -C ${CHOST}/32/libmudflap DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
791     fi
792     }
793    
794     src_install_libquadmath()
795     {
796     cd ${SRCDIR}/build
797     mmake -j1 -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
798     if [[ $(mlibdir) != lib ]]
799     then
800     mmake -j1 -C ${CHOST}/32/libquadmath DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
801     fi
802     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
803     }
804    
805     src_install_libitm()
806     {
807     cd ${SRCDIR}/build
808     mmake -j1 -C ${CHOST}/libitm DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
809     if [[ $(mlibdir) != lib ]]
810     then
811     mmake -j1 -C ${CHOST}/32/libitm DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
812     fi
813     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
814     }
815    
816     src_install_libstdc++()
817     {
818     cd ${SRCDIR}/build
819     mmake -j1 -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
820     if [[ $(mlibdir) != lib ]]
821     then
822     mmake -j1 -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
823     fi
824     mmake -j1 -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
825     }
826    
827     if lang_enabled java
828     then
829     src_install_libgcj()
830     {
831     cd ${SRCDIR}/build
832     mmake -j1 -C ${CHOST}/libjava DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
833     if [[ $(mlibdir) != lib ]]
834     then
835     mmake -j1 -C ${CHOST}/32/libjava DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
836     fi
837     }
838    
839     src_install_gcc-gcj()
840     {
841     cd ${SRCDIR}/build
842    
843     # install only java targets
844     make DESTDIR=${BINDIR} install-target-libjava || die
845     make -C gcc DESTDIR=${BINDIR} java.install-common || die
846     make -C gcc DESTDIR=${BINDIR} java.install-man || die
847    
848     # missing bins
849     minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
850     minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
851    
852     # remove libraries already included elsewhere
853     mmake -j1 -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
854 niro 17071 #rm -v ${BINDIR}/usr/$(mlibdir)/libgcc_s.so* || die
855 niro 17069 rm -v ${BINDIR}/usr/$(mlibdir)/libgcj_bc.so* || die
856     if [[ $(mlibdir) != lib ]]
857     then
858     mmake -j1 -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
859 niro 17071 #rm -v ${BINDIR}/usr/lib/libgcc_s.so.* || die
860 niro 17069 rm -v ${BINDIR}/usr/lib/libgcj_bc.so.* || die
861     fi
862    
863     # versionize all bins and symlink them
864     versionize_all_bins || die
865     }
866     fi
867    
868     if lang_enabled ada
869     then
870     src_install_libgnat()
871     {
872     cd ${SRCDIR}/build
873     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
874     if [[ $(mlibdir) != lib ]]
875     then
876     # install 32bit libgnat
877     # make tries to execute the libs, which fails
878     # we override the INSTALL commands to *not* do that
879     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
880     fi
881     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
882    
883     # move so-libs to the right location
884     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so /usr/$(mlibdir) || die
885     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so /usr/$(mlibdir) || die
886     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/lib{gnarl,gnat}.so || die
887     mlink libgnarl-${PVER%.*}.so /usr/$(mlibdir)/libgnarl.so || die
888     mlink libgnat-${PVER%.*}.so /usr/$(mlibdir)/libgnat.so || die
889     mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so || die
890     mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so || die
891     mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
892     mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
893    
894     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
895    
896     if [[ $(mlibdir) != lib ]]
897     then
898     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
899    
900     # move so-libs to the right location
901     minstalldir /usr/lib || die
902     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so /usr/lib || die
903     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so /usr/lib || die
904     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/lib{gnarl,gnat}.so || die
905     mlink libgnarl-${PVER%.*}.so /usr/lib/libgnarl.so || die
906     mlink libgnat-${PVER%.*}.so /usr/lib/libgnat.so || die
907     mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so || die
908     mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so || die
909     mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
910     mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
911    
912     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
913     fi
914    
915     # remove other
916     mdelete -r /usr/bin || die
917     }
918    
919     src_install_gcc-gnat()
920     {
921     cd ${SRCDIR}/build
922     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
923     if [[ $(mlibdir) != lib ]]
924     then
925     # install 32bit libgnat
926     # make tries to execute the libs, which fails
927     # we override the INSTALL commands to *not* do that
928     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
929     fi
930     mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
931     minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
932    
933     # remove libraries already included elsewhere
934     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl*.* || die
935     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat*.* || die
936     if [[ $(mlibdir) != lib ]]
937     then
938     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl*.* || die
939     rm -v ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat*.* || die
940     fi
941    
942     # versionize all bins and symlink them
943     versionize_all_bins || die
944     }
945     fi
946    
947     if lang_enabled fortran
948     then
949     src_install_libgfortran()
950     {
951     cd ${SRCDIR}/build
952     mmake -j1 -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install || die
953     if [[ $(mlibdir) != lib ]]
954     then
955     mmake -j1 -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install || die
956     fi
957     }
958    
959     src_install_gcc-gfortran()
960     {
961     cd ${SRCDIR}/build
962    
963     # omp headers needed by fortran
964     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
965     mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
966     mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
967     mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
968     # missing binaries
969     minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
970     mlink gfortran /usr/bin/f95 || die
971    
972     # remove libraries already included elsewhere
973     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} uninstall-nodist_fincludeHEADERS || die
974    
975     # versionize all bins and symlink them
976     versionize_all_bins || die
977     }
978     fi
979    
980     if lang_enabled go
981     then
982     src_install_libgo()
983     {
984     cd ${SRCDIR}/build
985     mmake -j1 -C ${CHOST}/libgo DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
986     if [[ $(mlibdir) != lib ]]
987     then
988     mmake -j1 -C ${CHOST}/32/libgo DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
989     fi
990     }
991    
992     src_install_gcc-go()
993     {
994     cd ${SRCDIR}/build
995     mmake DESTDIR=${BINDIR} install-target-libgo || die
996     mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
997     mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
998     mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
999     minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1000    
1001     # remove libraries already included elsewhere
1002     mmake -j1 -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1003     if [[ $(mlibdir) != lib ]]
1004     then
1005     mmake -j1 -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1006     fi
1007    
1008     # versionize all bins and symlink them
1009     versionize_all_bins || die
1010     }
1011     fi
1012    
1013     if lang_enabled objc
1014     then
1015     src_install_libobjc()
1016     {
1017     cd ${SRCDIR}/build
1018     mmake -j1 -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1019     if [[ $(mlibdir) != lib ]]
1020     then
1021     mmake -j1 -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1022     fi
1023     }
1024    
1025     src_install_gcc-objc()
1026     {
1027     cd ${SRCDIR}/build
1028     mmake -j1 -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
1029     if [[ $(mlibdir) != lib ]]
1030     then
1031     mmake -j1 -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
1032     fi
1033     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1034     minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1035     }
1036    
1037     if lang_enabled obj-c++
1038     then
1039     src_install_gcc-objc++()
1040     {
1041     cd ${SRCDIR}/build
1042     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1043     minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1044     }
1045     fi
1046     fi