Magellan Linux

Annotation of /trunk/core/gcc/gcc-4.9.2-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24676 - (hide annotations) (download)
Mon Mar 2 10:00:37 2015 UTC (9 years, 3 months ago) by niro
File size: 44003 byte(s)
-marked disabled
1 niro 24674 # $Id$
2    
3     PNAME="gcc"
4     PVER="4.9.2"
5     PBUILD="r2"
6    
7 niro 24676 STATE="disabled"
8    
9 niro 24674 PCAT="sys-dev"
10     HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
11    
12     # packages which needs rebuild: libtool, java-gcj-compat, llvm
13    
14     # languages to build into gcc
15     # options are: c,c++,java,ada,fortran,go,objc,obj-c++,lto
16     # obj-c++ requires objc
17     #
18     # while toolchain bootstrap, only build c,c++ and after that rebuild the whole toolchain:
19     # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
20     MyLanguages=c,c++,ada,java,fortran,go,objc,obj-c++,lto
21    
22     # 1=bootstrap the whole gcc suite, using bootstrap-lean method
23     # 0=no bootstrap, use this only for quick builds to test something but never for release
24     GCC_BOOTSTRAP="1"
25    
26     # 1=bootstrap ada, using precompiled gnat binaries
27     # 0=no bootstrap, build ada with system gnat - requires sys-dev/gcc-gnat
28     ADA_BOOTSTRAP="0"
29    
30     # 1=enable dev split packages
31     # 0=disable dev split packages
32     ENABLE_DEV_PACKAGES="0"
33    
34     SPLIT_PACKAGES="libgcc libssp libgomp libquadmath libitm libatomic libstdc++ libasan libubsan libcilkrts libvtv"
35    
36     # dev packages
37     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
38     then
39     SPLIT_PACKAGES+=" libgcc-dev libssp-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libstdc++-dev libasan-dev libubsan-dev libcilkrts-dev libvtv-dev"
40     fi
41    
42     # thread/leak sanitizer is only available on x86_64
43     if [[ ${ARCH} = x86_64 ]]
44     then
45     SPLIT_PACKAGES+=" libtsan liblsan"
46     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
47     then
48     SPLIT_PACKAGES+=" libtsan-dev liblsan-dev"
49     fi
50     fi
51    
52     # always enable gcc
53     SPLIT_PACKAGES+=" gcc"
54    
55     # helper functions
56     lang_enabled()
57     {
58     local lang="$1"
59    
60     if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
61     then
62     return 0
63     else
64     return 1
65     fi
66     }
67    
68     install_gcc_library()
69     {
70     local library="$1"
71    
72     cd ${SRCDIR}/build
73     mmake -j1 -C ${CHOST}/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
74     if [[ $(mlibdir) != lib ]]
75     then
76     if [ -d ${CHOST}/32/${library} ]
77     then
78     mmake -j1 -C ${CHOST}/32/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
79     fi
80     fi
81     }
82    
83     versionize_all_bins()
84     {
85     local bin
86    
87     for bin in $(find ${BINDIR}/usr/bin -type f)
88     do
89     echo ${bin}
90     mv ${bin} ${bin}-${PVER} || die
91     ln -snf $(basename ${bin}-${PVER}) ${bin} || die
92     done
93     }
94    
95     keep_dev_package_libs()
96     {
97     local libs="$@"
98    
99     # cleanup, only keep the libs, everything else get provided by the dev-package
100     zapmost ${BINDIR}/usr/$(mlibdir) "${libs}" || die
101     # multilib as well
102     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
103     then
104     zapmost ${BINDIR}/usr/lib "${libs}" || die
105     fi
106    
107     # cleanup the rest, keep only libs
108     zapmost ${BINDIR} /usr/$(mlibdir) $([[ $(mlibdir) != lib ]] && echo "/usr/lib") || die
109     }
110    
111     delete_dev_package_libs()
112     {
113     local libs="$@"
114     local i
115    
116     # cleanup, the solibs are provided by the non-dev package
117     for i in ${libs}
118     do
119     rm ${BINDIR}/usr/$(mlibdir)/${i} || die
120     # multilib as well
121     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
122     then
123     rm ${BINDIR}/usr/lib/${i} || die
124     fi
125     done
126     }
127    
128     GLIBC_DEPEND=">= virtual/glibc"
129     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
130     then
131     GLIBCDEV_DEPEND=">= virtual/glibc-dev"
132     fi
133     ZLIB_DEPEND=">= sys-libs/zlib-1.2.7"
134     COMMON_DEPEND="${GLIBC_DEPEND}
135     ${ZLIB_DEPEND}
136     >= dev-libs/gmp-5.1
137     >= dev-libs/mpfr-3.1
138     >= dev-libs/mpc-1.0.2"
139     LIBGCC_DEPEND="${GLIBC_DEPEND}"
140     LIBSSP_DEPEND="${GLIBC_DEPEND}"
141     LIBGOMP_DEPEND="${GLIBC_DEPEND}"
142     LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
143     LIBITM_DEPEND="${GLIBC_DEPEND}"
144     LIBATOMIC_DEPEND="${GLIBC_DEPEND}"
145     LIBASAN_DEPEND="${GLIBC_DEPEND}"
146     LIBLSAN_DEPEND="${GLIBC_DEPEND}"
147     LIBUBSAN_DEPEND="${GLIBC_DEPEND}"
148     LIBTSAN_DEPEND="${GLIBC_DEPEND}"
149     LIBCILKRTS_DEPEND="${GLIBC_DEPEND}"
150     LIBVTV_DEPEND="${GLIBC_DEPEND}"
151     LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
152    
153     GCC_DEPEND="${COMMON_DEPEND}
154     >= sys-dev/binutils-2.25
155     >= dev-libs/isl-0.12
156     >= dev-libs/cloog-0.18
157     >= dev-libs/elfutils-0.160"
158    
159     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
160     then
161     GCC_DEPEND="${GCC_DEPEND}
162     ${GLIBCDEV_DEPEND}"
163     fi
164    
165     # special handling for libtsan, only x86-64
166     DEPEND_x86_64=">= sys-libs/libtsan-${PVER}
167     >= sys-libs/liblsan-${PVER}"
168     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
169     then
170     DEPEND_x86_64="${DEPEND_x86_64}
171     >= sys-libs/libtsan-dev-${PVER}
172     >= sys-libs/liblsan-dev-${PVER}"
173     fi
174     SPECIAL_VARS="DEPEND_x86_64"
175    
176     if lang_enabled java
177     then
178     SPLIT_PACKAGES+=" libgcj"
179     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
180     then
181     SPLIT_PACKAGES+=" libgcj-dev"
182     fi
183     SPLIT_PACKAGES+=" gcc-gcj"
184     LIBGCJ_DEPEND="${GLIBC_DEPEND}
185     ${ZLIB_DEPEND}"
186     JAVA_DEPEND="${COMMON_DEPEND}
187     >= dev-java/eclipse-ecj-3.6
188     >= dev-java/fastjar-0.98
189     >= sys-apps/file-5
190     >= app-arch/unzip-6
191     >= app-arch/zip-3
192     >= media-libs/alsa-lib-1.0.28
193     >= x11-libs/libSM-1.2
194     >= x11-libs/libXtst-1.2
195     >= dev-libs/glib2-2.40
196     >= x11-libs/gtk2+-2.24
197     >= media-libs/libart_lgpl-2.3.21"
198    
199     # provided java version
200     JAVA_PVER="1.5.0-gcj-1.5.0.0"
201     fi
202    
203     if lang_enabled ada
204     then
205     SPLIT_PACKAGES+=" libgnat"
206     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
207     then
208     SPLIT_PACKAGES+=" libgnat-dev"
209     fi
210     SPLIT_PACKAGES+=" gcc-gnat"
211     LIBGNAT_DEPEND="${GLIBC_DEPEND}"
212     ADA_DEPEND="${COMMON_DEPEND}"
213     if [[ ${ADA_BOOTSTRAP} = 1 ]]
214     then
215     GNAT_BIN_x86="gnatboot-4.3-i686.tar.bz2"
216     GNAT_BIN_x86_64="gnatboot-4.3-amd64.tar.bz2"
217     GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
218     GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
219     SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86} )
220     SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86_64} )
221     fi
222     fi
223    
224     if lang_enabled fortran
225     then
226     SPLIT_PACKAGES+=" libgfortran"
227     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
228     then
229     SPLIT_PACKAGES+=" libgfortran-dev"
230     fi
231     SPLIT_PACKAGES+=" gcc-gfortran"
232     LIBGFORTRAN_DEPEND="${GLIBC_DEPEND}"
233     FORTRAN_DEPEND="${COMMON_DEPEND}"
234     fi
235    
236     if lang_enabled go
237     then
238     SPLIT_PACKAGES+=" libgo"
239     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
240     then
241     SPLIT_PACKAGES+=" libgo-dev"
242     fi
243     SPLIT_PACKAGES+=" gcc-go"
244     LIBGO_DEPEND="${GLIBC_DEPEND}"
245     GO_DEPEND="${COMMON_DEPEND}"
246     fi
247    
248     if lang_enabled objc
249     then
250     SPLIT_PACKAGES+=" libobjc"
251     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
252     then
253     SPLIT_PACKAGES+=" libobjc-dev"
254     fi
255     SPLIT_PACKAGES+=" gcc-objc"
256     LIBOBJC_DEPEND="${GLIBC_DEPEND}"
257     OBJC_DEPEND="${COMMON_DEPEND}"
258    
259     if lang_enabled obj-c++
260     then
261     SPLIT_PACKAGES+=" gcc-objc++"
262     OBJCPP_DEPEND="${COMMON_DEPEND}"
263     fi
264     fi
265    
266     SDEPEND="${LIBGCC_DEPEND}
267     ${LIBSSP_DEPEND}
268     ${LIBGOMP_DEPEND}
269     ${LIBQUADMATH_DEPEND}
270     ${LIBITM_DEPEND}
271     ${LIBATOMIC_DEPEND}
272     ${LIBASAN_DEPEND}
273     ${LIBLSAN_DEPEND}
274     ${LIBUBSAN_DEPEND}
275     ${LIBTSAN_DEPEND}
276     ${LIBCILKRTS_DEPEND}
277     ${LIBVTV_DEPEND}
278     ${LIBSTDCPP_DEPEND}
279     ${GCC_DEPEND}
280     ${LIBGCJ_DEPEND}
281     ${JAVA_DEPEND}
282     ${LIBGNAT_DEPEND}
283     ${ADA_DEPEND}
284     ${LIBGFORTRAN_DEPEND}
285     ${FORTRAN_DEPEND}
286     ${LIBGO_DEPEND}
287     ${GO_DEPEND}
288     ${LIBOBJC_DEPEND}
289     ${OBJC_DEPEND}
290     ${OBJCPP_DEPEND}
291     >= virtual/kernel-headers"
292    
293     if [[ ${ADA_BOOTSTRAP} != 1 ]]
294     then
295     # add gnat to SDEPEND
296     SDEPEND="${SDEPEND}
297     >= sys-dev/gcc-gnat-4.9"
298     fi
299    
300     SRCFILE="${PNAME}-${PVER}.tar.bz2"
301     SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
302    
303     # you better off when not using distcc to compile
304     # your new compiler :) maybe not all are the same
305     msetfeature "!distcc"
306    
307     sminclude mtools cleanutils libtool
308    
309     SRC_URI=(
310     ${SRC_URI[*]}
311     gnu://${PNAME}/${PNAME}-${PVER}/${SRCFILE}
312     mirror://${PNAME}/${SRCFILE}
313     mirror://${PNAME}/${PNAME}-4.5.1-no-fixincludes.patch
314     )
315    
316     UP2DATE="updatecmd 'http://ftp.gnu.org/gnu/${PNAME}/' | utf8encode | grep '\[DIR\].*${PNAME}' | sed 's:.*${PNAME}-\(.*\)/.*:\1:' | upsort_pipe"
317    
318     # gcc don't like strong CFLAGS
319     export CFLAGS="${CFLAGS//-O?} -O2"
320     export CXXFLAGS="${CFLAGS}"
321    
322     # check for crosscompile or export default CHOST
323     if [[ -z ${CTARGET} ]]
324     then
325     # no crosscompile defined
326     export CTARGET=${CHOST}
327     else
328     # use crosscompile host
329     export CTARGET=${CTARGET}
330     fi
331    
332     split_info_gcc()
333     {
334     DESCRIPTION="Modern C/C++ compiler written by the GNU people."
335    
336     DEPEND="== sys-libs/libgcc-${PVER}
337     == sys-libs/libssp-${PVER}
338     == sys-libs/libgomp-${PVER}
339     == sys-libs/libquadmath-${PVER}
340     == sys-libs/libitm-${PVER}
341     == sys-libs/libatomic-${PVER}
342     == sys-libs/libstdc++-${PVER}
343     == sys-libs/libasan-${PVER}
344     == sys-libs/libubsan-${PVER}
345     == sys-libs/libcilkrts-${PVER}
346     == sys-libs/libvtv-${PVER}
347     $(marchdepend)
348     ${GCC_DEPEND}"
349    
350     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
351     then
352     DEPEND="${DEPEND}
353     == sys-libs/libgcc-dev-${PVER}
354     == sys-libs/libssp-dev-${PVER}
355     == sys-libs/libgomp-dev-${PVER}
356     == sys-libs/libquadmath-dev-${PVER}
357     == sys-libs/libitm-dev-${PVER}
358     == sys-libs/libatomic-dev-${PVER}
359     == sys-libs/libstdc++-dev-${PVER}
360     == sys-libs/libasan-dev-${PVER}
361     == sys-libs/libubsan-dev-${PVER}
362     == sys-libs/libcilkrts-dev-${PVER}
363     == sys-libs/libvtv-dev-${PVER}"
364     fi
365     }
366    
367     split_info_libgcc()
368     {
369     DESCRIPTION="GCC shared support library."
370     DEPEND="${LIBGCC_DEPEND}"
371     PCAT="sys-libs"
372     }
373    
374     split_info_libgcc-dev()
375     {
376     DESCRIPTION="Development files for libgcc."
377     DEPEND="== sys-libs/libgcc-${PVER}"
378     PCAT="sys-libs"
379     }
380    
381     split_info_libssp()
382     {
383     DESCRIPTION="Stack Smashing Protection library from GCC."
384     DEPEND="${LIBSSP_DEPEND}"
385     PCAT="sys-libs"
386     }
387    
388     split_info_libssp-dev()
389     {
390     DESCRIPTION="Development files for libssp."
391     DEPEND="== sys-libs/libssp-${PVER}"
392     PCAT="sys-libs"
393     }
394    
395     split_info_libgomp()
396     {
397     DESCRIPTION="GNU OpenMP runtime library."
398     DEPEND="${LIBGOMP_DEPEND}"
399     PCAT="sys-libs"
400     }
401    
402     split_info_libgomp-dev()
403     {
404     DESCRIPTION="Development files for libgomp."
405     DEPEND="== sys-libs/libgomp-${PVER}"
406     PCAT="sys-libs"
407     }
408    
409     split_info_libquadmath()
410     {
411     DESCRIPTION="GCC __float128 shared support library."
412     DEPEND="${LIBQUADMATH_DEPEND}"
413     PCAT="sys-libs"
414     }
415    
416     split_info_libquadmath-dev()
417     {
418     DESCRIPTION="Development files for libquadmath."
419     DEPEND="== sys-libs/libquadmath-${PVER}"
420     PCAT="sys-libs"
421     }
422    
423     split_info_libitm()
424     {
425     DESCRIPTION="The GNU Transactional Memory library."
426     DEPEND="${LIBITM_DEPEND}"
427     PCAT="sys-libs"
428     }
429    
430     split_info_libitm-dev()
431     {
432     DESCRIPTION="Development files for libitm."
433     DEPEND="== sys-libs/libitm-${PVER}"
434     PCAT="sys-libs"
435     }
436    
437     split_info_libatomic()
438     {
439     DESCRIPTION="The GNU Atomic library."
440     DEPEND="${LIBATOMIC_DEPEND}"
441     PCAT="sys-libs"
442     }
443    
444     split_info_libatomic-dev()
445     {
446     DESCRIPTION="Development files for libatomic."
447     DEPEND="== sys-libs/libatomic-${PVER}"
448     PCAT="sys-libs"
449     }
450    
451     split_info_libasan()
452     {
453     DESCRIPTION="The Address Sanitizer runtime library."
454     DEPEND="== sys-libs/libgcc-${PVER}
455     == sys-libs/libstdc++-${PVER}
456     ${LIBASAN_DEPEND}"
457     PCAT="sys-libs"
458     }
459    
460     split_info_libasan-dev()
461     {
462     DESCRIPTION="Development files for libasan."
463     DEPEND="== sys-libs/libasan-${PVER}"
464     PCAT="sys-libs"
465     }
466    
467     split_info_liblsan()
468     {
469     DESCRIPTION="The Leak Sanitizer runtime library."
470     DEPEND="== sys-libs/libgcc-${PVER}
471     == sys-libs/libstdc++-${PVER}
472     ${LIBLSAN_DEPEND}"
473     PCAT="sys-libs"
474     }
475    
476     split_info_liblsan-dev()
477     {
478     DESCRIPTION="Development files for liblsan."
479     DEPEND="== sys-libs/liblsan-${PVER}"
480     PCAT="sys-libs"
481     }
482    
483     split_info_libubsan()
484     {
485     DESCRIPTION="The Undefined behavior Sanitizer runtime library."
486     DEPEND="== sys-libs/libgcc-${PVER}
487     == sys-libs/libstdc++-${PVER}
488     ${LIBUBSAN_DEPEND}"
489     PCAT="sys-libs"
490     }
491    
492     split_info_libubsan-dev()
493     {
494     DESCRIPTION="Development files for libubsan."
495     DEPEND="== sys-libs/libubsan-${PVER}"
496     PCAT="sys-libs"
497     }
498    
499     split_info_libtsan()
500     {
501     DESCRIPTION="The Thread Sanitizer runtime library."
502     DEPEND="== sys-libs/libgcc-${PVER}
503     == sys-libs/libstdc++-${PVER}
504     ${LIBTSAN_DEPEND}"
505     PCAT="sys-libs"
506     }
507    
508     split_info_libtsan-dev()
509     {
510     DESCRIPTION="Development files for libtsan."
511     DEPEND="== sys-libs/libtsan-${PVER}
512     == sys-libs/libgcc-dev-${PVER}
513     == sys-libs/libstdc++-dev-${PVER}"
514     PCAT="sys-libs"
515     }
516    
517     split_info_libcilkrts()
518     {
519     DESCRIPTION="The Cilk+ runtime library."
520     DEPEND="== sys-libs/libgcc-${PVER}
521     == sys-libs/libstdc++-${PVER}
522     ${LIBCILKRTS_DEPEND}"
523     PCAT="sys-libs"
524     }
525    
526     split_info_libcilkrts-dev()
527     {
528     DESCRIPTION="Development files for libcilkrts."
529     DEPEND="== sys-libs/libcilkrts-${PVER}
530     == sys-libs/libgcc-dev-${PVER}
531     == sys-libs/libstdc++-dev-${PVER}"
532     PCAT="sys-libs"
533     }
534    
535     split_info_libvtv()
536     {
537     DESCRIPTION="Vtable Verification runtime library."
538     DEPEND="${LIBVTV_DEPEND}"
539     PCAT="sys-libs"
540     }
541    
542     split_info_libvtv-dev()
543     {
544     DESCRIPTION="Development files for libvtv."
545     DEPEND="== sys-libs/libvtv-${PVER}"
546     PCAT="sys-libs"
547     }
548    
549     split_info_libstdc++()
550     {
551     DESCRIPTION="Standard GNU C and C++ libraries."
552     DEPEND="== sys-libs/libgcc-${PVER}
553     ${LIBSTDCPP_DEPEND}"
554     PCAT="sys-libs"
555     }
556    
557     split_info_libstdc++-dev()
558     {
559     DESCRIPTION="Development files for libstdc++."
560     DEPEND="== sys-libs/libstdc++-${PVER}
561     == sys-libs/libgcc-dev-${PVER}"
562     PCAT="sys-libs"
563     }
564    
565     if lang_enabled java
566     then
567     split_info_libgcj()
568     {
569     DESCRIPTION="Java runtime library for GCC."
570     DEPEND="== sys-libs/libgcc-${PVER}
571     ${LIBGCJ_DEPEND}"
572     PCAT="sys-libs"
573     }
574    
575     split_info_libgcj-dev()
576     {
577     DESCRIPTION="Development files for libgcj."
578     DEPEND="== sys-libs/libgcj-${PVER}
579     == sys-libs/libgcc-dev-${PVER}"
580     PCAT="sys-libs"
581     }
582    
583     split_info_gcc-gcj()
584     {
585     DESCRIPTION="Java support for GCC."
586     DEPEND="== sys-libs/libgcc-${PVER}
587     == sys-libs/libstdc++-${PVER}
588     == sys-libs/libgcj-${PVER}
589     == sys-dev/gcc-${PVER}
590     ${JAVA_DEPEND}"
591     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
592     then
593     DEPEND="${DEPEND}
594     == sys-libs/libgcc-dev-${PVER}
595     == sys-libs/libstdc++-dev-${PVER}
596     == sys-libs/libgcj-dev-${PVER}"
597     fi
598     }
599     fi
600    
601     if lang_enabled ada
602     then
603     split_info_libgnat()
604     {
605     DESCRIPTION="Gnu Ada 95 library which is needed to run Ada programs."
606     DEPEND="== sys-libs/libgcc-${PVER}
607     ${LIBGNAT_DEPEND}"
608     PCAT="sys-libs"
609     }
610    
611     split_info_libgnat-dev()
612     {
613     DESCRIPTION="Development files for libgnat."
614     DEPEND="== sys-libs/libgnat-${PVER}
615     == sys-libs/libgcc-dev-${PVER}"
616     PCAT="sys-libs"
617     }
618    
619     split_info_gcc-gnat()
620     {
621     DESCRIPTION="Ada 95 support for GCC."
622     DEPEND="== sys-libs/libgcc-${PVER}
623     == sys-libs/libstdc++-${PVER}
624     == sys-libs/libgnat-${PVER}
625     == sys-dev/gcc-${PVER}
626     ${ADA_DEPEND}"
627     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
628     then
629     DEPEND="${DEPEND}
630     == sys-libs/libgcc-dev-${PVER}
631     == sys-libs/libstdc++-dev-${PVER}
632     == sys-libs/libgnat-dev-${PVER}"
633     fi
634     }
635     fi
636    
637     if lang_enabled fortran
638     then
639     split_info_libgfortran()
640     {
641     DESCRIPTION="Gnu Fortran library which is needed to run Fortran programs."
642     DEPEND="== sys-libs/libquadmath-${PVER}
643     ${LIBGFORTRAN_DEPEND}"
644     PCAT="sys-libs"
645     }
646    
647     split_info_libgfortran-dev()
648     {
649     DESCRIPTION="Development files for libgfortran."
650     DEPEND="== sys-libs/libgfortran-${PVER}
651     == sys-libs/libquadmath-dev-${PVER}"
652     PCAT="sys-libs"
653     }
654    
655     split_info_gcc-gfortran()
656     {
657     DESCRIPTION="Fortran support for GCC."
658     DEPEND="== sys-libs/libgcc-${PVER}
659     == sys-libs/libstdc++-${PVER}
660     == sys-libs/libgfortran-${PVER}
661     == sys-dev/gcc-${PVER}
662     ${FORTRAN_DEPEND}"
663     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
664     then
665     DEPEND="${DEPEND}
666     == sys-libs/libgcc-dev-${PVER}
667     == sys-libs/libstdc++-dev-${PVER}
668     == sys-libs/libgfortran-dev-${PVER}"
669     fi
670     }
671     fi
672    
673     if lang_enabled go
674     then
675     split_info_libgo()
676     {
677     DESCRIPTION="Go library which is needed to run Go programs."
678     DEPEND="== sys-libs/libgcc-${PVER}
679     ${LIBGO_DEPEND}"
680     PCAT="sys-libs"
681     }
682    
683     split_info_libgo-dev()
684     {
685     DESCRIPTION="Development files for libgo."
686     DEPEND="== sys-libs/libgo-${PVER}
687     == sys-libs/libgcc-dev-${PVER}"
688     PCAT="sys-libs"
689     }
690    
691     split_info_gcc-go()
692     {
693     DESCRIPTION="Go support for GCC."
694     DEPEND="== sys-libs/libgcc-${PVER}
695     == sys-libs/libstdc++-${PVER}
696     == sys-libs/libgo-${PVER}
697     == sys-dev/gcc-${PVER}
698     ${GO_DEPEND}"
699     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
700     then
701     DEPEND="${DEPEND}
702     == sys-libs/libgcc-dev-${PVER}
703     == sys-libs/libstdc++-dev-${PVER}
704     == sys-libs/libgo-dev-${PVER}"
705     fi
706     }
707     fi
708    
709     if lang_enabled objc
710     then
711     split_info_libobjc()
712     {
713     DESCRIPTION="Objective-C library which is needed to run Objective-C programs."
714     DEPEND="== sys-libs/libgcc-${PVER}
715     ${LIBOBJC_DEPEND}"
716     PCAT="sys-libs"
717     }
718    
719     split_info_libobjc-dev()
720     {
721     DESCRIPTION="Development files for libobjc."
722     DEPEND="== sys-libs/libobjc-${PVER}
723     == sys-libs/libgcc-dev-${PVER}"
724     PCAT="sys-libs"
725     }
726    
727     split_info_gcc-objc()
728     {
729     DESCRIPTION="Objective-C support for GCC."
730     DEPEND="== sys-libs/libgcc-${PVER}
731     == sys-libs/libstdc++-${PVER}
732     == sys-libs/libobjc-${PVER}
733     == sys-dev/gcc-${PVER}
734     ${OBJC_DEPEND}"
735     }
736    
737     if lang_enabled obj-c++
738     then
739     split_info_gcc-objc++()
740     {
741     DESCRIPTION="Objective-C++ support for GCC."
742     DEPEND="== sys-libs/libgcc-${PVER}
743     == sys-libs/libstdc++-${PVER}
744     == sys-libs/libobjc-${PVER}
745     == sys-dev/gcc-${PVER}
746     == sys-dev/gcc-objc-${PVER}
747     ${OBJCPP_DEPEND}"
748     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
749     then
750     DEPEND="${DEPEND}
751     == sys-libs/libgcc-dev-${PVER}
752     == sys-libs/libstdc++-dev-${PVER}
753     == sys-libs/libobjc-dev-${PVER}"
754     fi
755     }
756     fi
757     fi
758    
759     src_prepare()
760     {
761     munpack ${SRCFILE} || die
762    
763     if lang_enabled ada
764     then
765     if [[ ${ADA_BOOTSTRAP} = 1 ]]
766     then
767     # setup binary ada if boostrap is enabled
768     install -d ${GNAT_BIN_SRCDIR} || die
769     munpack ${GNAT_BIN} ${GNAT_BIN_SRCDIR} || die
770     # gnat wrapper has problems with quotation
771     sed -i \
772     -e "/-DREVISION/d" \
773     -e "/-DDEVPHASE/d" \
774     -e "s: -DDATESTAMP=\$(DATESTAMP_s)::" \
775     ${SRCDIR}/gcc/Makefile.in || die
776     sed -i \
777     -e "s: DATESTAMP DEVPHASE REVISION::" \
778     -e "s:PKGVERSION:\"\":" \
779     ${SRCDIR}/gcc/version.c || die
780     fi
781     cd ${SRCDIR}
782     fi
783    
784     cd ${SRCDIR}
785    
786     # generic fixes
787     mpatch ${PNAME}-4.5.1-no-fixincludes.patch || die
788    
789     # suppress installation of libffi, we're using libffi3 instead
790     sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
791     sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
792    
793     install -d ${SRCDIR}/build || die
794     }
795    
796     src_compile()
797     {
798     if lang_enabled ada
799     then
800     if [[ ${ADA_BOOTSTRAP} = 1 ]]
801     then
802     # export binary gnat pathes
803     export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
804     export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
805     # CPATH is supposed to be applied for any language, thus
806     # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
807     export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
808     export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
809     export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
810     export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
811     export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
812     export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
813    
814     # prepare some tools
815     cd ${GNAT_BIN_SRCDIR}
816     cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
817     cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
818     cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
819     cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
820     cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
821     cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
822     cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
823     gnatmake xtreeprs || die
824     gnatmake xsinfo || die
825     gnatmake xeinfo || die
826     gnatmake xnmake || die
827     fi
828     fi
829    
830     cd ${SRCDIR}/build
831     local myconf
832    
833     # Straight from the GCC install doc:
834     # "GCC has code to correctly determine the correct value for target
835     # for nearly all native systems. Therefore, we highly recommend you
836     # not provide a configure target when configuring a native compiler."
837     if [[ ${CHOST} != ${CTARGET} ]]
838     then
839     myconf+=" --target=${CTARGET}"
840     fi
841    
842     if lang_enabled java
843     then
844     myconf+=" --enable-java-awt=gtk
845     --enable-gtk-cairo
846     --enable-libgcj-multifile
847     --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
848     --with-fastjar=/usr/bin/fastjar
849     --enable-hash-synchronization"
850     # disable mutilib for java
851     myconf+=" --disable-libjava-multilib"
852     # java home, must be the same of java-gcj-compat
853     myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
854     fi
855    
856     # use isl backend
857     myconf+=" --enable-cloog-backend=isl"
858    
859     # suppress installation of libiberty, as we will be
860     # using the one from binutils
861     myconf+=" --disable-install-libiberty"
862    
863     # gcc >= 4.3 has now configure flags for uri and version - yeah!
864     AR=ar \
865     ../configure \
866     --with-bugurl="http://bugs.magellan-linux.de/" \
867     --with-pkgversion="Magellan-Linux" \
868     --build=${CHOST} \
869     --host=${CHOST} \
870     --prefix=/usr \
871     --sbindir=/usr/bin \
872     --mandir=/usr/share/man \
873     --infodir=/usr/share/info \
874     --libdir=/usr/$(mlibdir) \
875     --libexecdir=/usr/$(mlibdir) \
876     --enable-shared \
877     --enable-threads=posix \
878     --enable-__cxa_atexit \
879     --enable-clocale=gnu \
880     --enable-checking=release \
881     --with-system-zlib \
882     --enable-long-long \
883     --enable-cstdio=stdio \
884     --enable-languages=${MyLanguages} \
885     --disable-libstdcxx-pch \
886     --enable-gnu-unique-object \
887     --enable-lto \
888     --enable-plugin \
889     --enable-gold \
890     --with-plugin-ld=ld.gold \
891     --enable-ld=default \
892     --enable-linker-build-id \
893     --disable-install-libiberty \
894     ${myconf} \
895     || die
896    
897     # parallel builds seems to break sometimes on x86_64
898     local myopts
899     [[ ${ARCH} = x86_64 ]] && myopts=-j1
900    
901     # enable bootstrap if requested
902     local target
903     [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
904    
905     mmake ${myopts} ${target} || die
906     }
907    
908     src_install_gcc()
909     {
910     local i
911     local bin
912    
913     cd ${SRCDIR}/build
914     minstalldir /$(mlibdir) || die
915    
916     # install all targets
917     make DESTDIR=${BINDIR} install || die
918    
919     # move gdb scripts to a proper location and to pretty-print ldconfig
920     minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
921     mmove ${BINDIR}/usr/$(mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
922     # multilib as well
923     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
924     then
925     minstalldir /usr/share/gdb/auto-load/usr/lib || die
926     mmove ${BINDIR}/usr/lib/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/lib/ || die
927     fi
928    
929     # deletes libstdc++ && libgcc_s && libssp && libgomp && libquadmath && libitm && libatomic && libasan && &&libubsan && libcilkrts && libvtv
930     mdelete /usr/$(mlibdir)/libgcc_s.so\* || die
931     mmake -j1 -C ${CHOST}/libssp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
932     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
933     mmake -j1 -C ${CHOST}/libquadmath DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
934     mmake -j1 -C ${CHOST}/libitm DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
935     mmake -j1 -C ${CHOST}/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
936     mmake -j1 -C ${CHOST}/libsanitizer/asan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
937     mmake -j1 -C ${CHOST}/libsanitizer/ubsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
938     mmake -j1 -C ${CHOST}/libcilkrts DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
939     mmake -j1 -C ${CHOST}/libvtv DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
940     if [[ ${ARCH} = x86_64 ]]
941     then
942     mmake -j1 -C ${CHOST}/libsanitizer/tsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
943     mmake -j1 -C ${CHOST}/libsanitizer/lsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
944     fi
945     mmake -j1 -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
946     if [[ $(mlibdir) != lib ]]
947     then
948     mdelete /usr/lib/libgcc_s.so\* || die
949     mmake -j1 -C ${CHOST}/32/libssp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
950     mmake -j1 -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
951     mmake -j1 -C ${CHOST}/32/libquadmath DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
952     mmake -j1 -C ${CHOST}/32/libitm DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
953     mmake -j1 -C ${CHOST}/32/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
954     mmake -j1 -C ${CHOST}/32/libsanitizer/asan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
955     mmake -j1 -C ${CHOST}/32/libsanitizer/ubsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
956     mmake -j1 -C ${CHOST}/32/libcilkrts DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
957     mmake -j1 -C ${CHOST}/32/libvtv DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
958     # only 64bit exist
959     # mmake -j1 -C ${CHOST}/32/libsanitizer/tsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
960     # mmake -j1 -C ${CHOST}/32/libsanitizer/lsan DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
961     mmake -j1 -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
962     fi
963     mdelete /usr/share/info/libgomp.info || die
964     mdelete /usr/share/info/libitm.info || die
965     mdelete /usr/share/info/libquadmath.info || die
966     find ${BINDIR}/usr/share/locale -name libstdc++.mo | xargs --no-run-if-empty --verbose rm -v || die
967    
968     # deletes all java specific
969     if lang_enabled java
970     then
971     mmake -j1 -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
972     if [[ $(mlibdir) != lib ]]
973     then
974     mmake -j1 -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
975     fi
976     mdelete /usr/$(mlibdir)/libgcj_bc.so\* || die
977     mdelete -r /usr/include/c++/${PVER}/gcj || die
978     mdelete -r /usr/include/c++/${PVER}/gnu || die
979     mdelete -r /usr/include/c++/${PVER}/java || die
980     mdelete -r /usr/include/c++/${PVER}/javax || die
981     mdelete -r /usr/include/c++/${PVER}/org || die
982     mdelete -r /usr/include/c++/${PVER}/sun || die
983     mdelete -r /usr/$(mlibdir)/gcj\* || die
984     mdelete /usr/$(mlibdir)/logging.properties || die
985     mdelete /usr/$(mlibdir)/libgcj.spec || die
986     mdelete /usr/$(mlibdir)/pkgconfig/libgcj\*.pc || die
987     mdelete -r /usr/$(mlibdir)/security || die
988     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ecj1 || die
989     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jc1 || die
990     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jvgenmain || die
991     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/gcj || die
992     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/jvmpi.h || die
993     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/jawt.h || die
994     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/jawt_md.h || die
995     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/jni.h || die
996     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/jni_md.h || die
997     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
998     then
999     mdelete /usr/lib/libgcj_bc.so\* || die
1000     mdelete -r /usr/lib/gcj\* || die
1001     mdelete /usr/lib/logging.properties || die
1002     mdelete /usr/lib/pkgconfig/libgcj\*.pc || die
1003     mdelete -r /usr/lib/security || die
1004     fi
1005     mdelete /usr/share/info/cp-tools.info || die
1006     mdelete /usr/share/info/gcj.info || die
1007     mdelete -r /usr/share/java || die
1008     mdelete -r /usr/share/gcc-${PVER}/python/libjava || die
1009     for i in aot-compile gappletviewer gc-analyze gcj gcj-dbtool gcjh gij gjar \
1010     gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry \
1011     gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db ${CHOST}-gcj
1012     do
1013     if [ -f ${BINDIR}/usr/bin/${i} ]
1014     then
1015     mdelete /usr/bin/${i} || die
1016     fi
1017     if [ -f ${BINDIR}/usr/share/man/man1/${i}.1 ]
1018     then
1019     mdelete /usr/share/man/man1/${i}.1 || die
1020     fi
1021     done
1022     fi
1023    
1024     # deletes all ada specific
1025     if lang_enabled ada
1026     then
1027     mdelete /usr/bin/gnat\* || die
1028     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/gnat1 || die
1029     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib || die
1030     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1031     if [[ $(mlibdir) != lib ]]
1032     then
1033     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib || die
1034     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1035     fi
1036     mdelete /usr/share/info/gnat\*.info || die
1037     fi
1038    
1039     # deletes all fortran specific
1040     if lang_enabled fortran
1041     then
1042     mmake -j1 -C ${CHOST}/libgfortran DESTDIR=${BINDIR} uninstall || die
1043     if [[ $(mlibdir) != lib ]]
1044     then
1045     mmake -j1 -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} uninstall || die
1046     fi
1047     mdelete /usr/bin/gfortran || die
1048     mdelete /usr/bin/${CHOST}-gfortran || die
1049     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
1050     mdelete /usr/share/info/gfortran.info || die
1051     mdelete /usr/share/man/man1/gfortran.1 || die
1052     fi
1053    
1054     # deletes all go specific
1055     if lang_enabled go
1056     then
1057     mmake -j1 -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1058     if [[ $(mlibdir) != lib ]]
1059     then
1060     mmake -j1 -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1061     fi
1062     mdelete /usr/bin/gccgo || die
1063     mdelete /usr/bin/${CHOST}-gccgo || die
1064     mdelete -r /usr/$(mlibdir)/go || die
1065     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/go1 || die
1066     mdelete /usr/$(mlibdir)/libgobegin.a || die
1067     if [[ $(mlibdir) != lib ]]
1068     then
1069     mdelete -r /usr/lib/go || die
1070     mdelete /usr/lib/libgobegin.a || die
1071     fi
1072     mdelete /usr/share/info/gccgo.info || die
1073     mdelete /usr/share/man/man1/gccgo.1 || die
1074     fi
1075    
1076     # deletes all objc + obj-c++
1077     if lang_enabled objc
1078     then
1079     mdelete /usr/$(mlibdir)/libobjc.so\* || die
1080     mdelete /usr/$(mlibdir)/libobjc.a || die
1081     mdelete /usr/$(mlibdir)/libobjc.la || die
1082     if [[ $(mlibdir) != lib ]]
1083     then
1084     mdelete /usr/lib/libobjc.so\* || die
1085     mdelete /usr/lib/libobjc.a || die
1086     mdelete /usr/lib/libobjc.la || die
1087     fi
1088     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1obj || die
1089     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/objc || die
1090    
1091     if lang_enabled obj-c++
1092     then
1093     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1objplus || die
1094     fi
1095     fi
1096    
1097     # versionize all bins and symlink them
1098     versionize_all_bins || die
1099    
1100     mlink ../usr/bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
1101     # this one is needed on multilib systems.
1102     # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
1103     if [[ $(mlibdir) != lib ]]
1104     then
1105     minstalldir /usr/lib || die
1106     mlink ../usr/bin/cpp-${PVER} /usr/lib/cpp || die
1107     fi
1108     mlink gcc-${PVER} /usr/bin/cc || die
1109    
1110     # fix all .la files
1111     # they may contain invalid libpathes which are not needed
1112     local la
1113     for la in $(find ${BINDIR} -name \*.la)
1114     do
1115     fix_la_file ${la} || die ${la}
1116     done
1117    
1118     # remove /lib dirs to be usr-move compat
1119     if [[ -d ${BINDIR}/$(mlibdir) ]]
1120     then
1121     mdelete -r /$(mlibdir) || die
1122     fi
1123     if [[ $(mlibdir) != lib ]]
1124     then
1125     if [[ -d ${BINDIR}/lib ]]
1126     then
1127     mdelete -r /lib || die
1128     fi
1129     fi
1130     }
1131    
1132     src_install_libgcc-common()
1133     {
1134     cd ${SRCDIR}/build
1135     mmake -j1 -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
1136     if [[ $(mlibdir) != lib ]]
1137     then
1138     mmake -j1 -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
1139     fi
1140     mdelete -r /usr/$(mlibdir)/gcc || die
1141     }
1142    
1143     src_install_libgcc()
1144     {
1145     src_install_libgcc-common || die
1146     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1147     then
1148     keep_dev_package_libs 'libgcc_s.so.*' || die
1149     fi
1150     }
1151    
1152     src_install_libgcc-dev()
1153     {
1154     src_install_libgcc-common || die
1155     delete_dev_package_libs 'libgcc_s.so.*' || die
1156     }
1157    
1158     src_install_libssp-common()
1159     {
1160     install_gcc_library "libssp" || die
1161     }
1162    
1163     src_install_libssp()
1164     {
1165     src_install_libssp-common || die
1166     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1167     then
1168     keep_dev_package_libs 'libssp.so.*' || die
1169     fi
1170     }
1171    
1172     src_install_libssp-dev()
1173     {
1174     src_install_libssp-common || die
1175     delete_dev_package_libs 'libssp.so.*' || die
1176     }
1177    
1178     src_install_libgomp-common()
1179     {
1180     install_gcc_library "libgomp" || die
1181     mmake -j1 -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
1182     }
1183    
1184     src_install_libgomp()
1185     {
1186     src_install_libgomp-common || die
1187     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1188     then
1189     keep_dev_package_libs 'libgomp.so.*' || die
1190     fi
1191     }
1192    
1193     src_install_libgomp-dev()
1194     {
1195     src_install_libgomp-common || die
1196     delete_dev_package_libs 'libgomp.so.*' || die
1197     }
1198    
1199     src_install_libquadmath-common()
1200     {
1201     install_gcc_library "libquadmath" || die
1202     mmake -j1 -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-info || die
1203     }
1204    
1205     src_install_libquadmath()
1206     {
1207     src_install_libquadmath-common || die
1208     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1209     then
1210     keep_dev_package_libs 'libquadmath.so.*' || die
1211     fi
1212     }
1213    
1214     src_install_libquadmath-dev()
1215     {
1216     src_install_libquadmath-common || die
1217     delete_dev_package_libs 'libquadmath.so.*' || die
1218     }
1219    
1220     src_install_libitm-common()
1221     {
1222     install_gcc_library "libitm"
1223     mmake -j1 -C ${CHOST}/libitm DESTDIR=${BINDIR} install-info || die
1224     }
1225    
1226     src_install_libitm()
1227     {
1228     src_install_libitm-common || die
1229     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1230     then
1231     keep_dev_package_libs 'libitm.so.*' || die
1232     fi
1233     }
1234    
1235     src_install_libitm-dev()
1236     {
1237     src_install_libitm-common || die
1238     delete_dev_package_libs 'libitm.so.*' || die
1239     }
1240    
1241     src_install_libatomic-common()
1242     {
1243     install_gcc_library "libatomic" || die
1244     }
1245    
1246     src_install_libatomic()
1247     {
1248     src_install_libatomic-common || die
1249     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1250     then
1251     keep_dev_package_libs 'libatomic.so.*' || die
1252     fi
1253     }
1254    
1255     src_install_libatomic-dev()
1256     {
1257     src_install_libatomic-common || die
1258     delete_dev_package_libs 'libatomic.so.*' || die
1259     }
1260    
1261     src_install_libasan-common()
1262     {
1263     install_gcc_library "libsanitizer/asan" || die
1264     }
1265    
1266     src_install_libasan()
1267     {
1268     src_install_libasan-common || die
1269     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1270     then
1271     keep_dev_package_libs 'libasan.so.*' || die
1272     fi
1273     }
1274    
1275     src_install_libasan-dev()
1276     {
1277     src_install_libasan-common || die
1278     delete_dev_package_libs 'libasan.so.*' || die
1279     }
1280    
1281     src_install_liblsan-common()
1282     {
1283     install_gcc_library "libsanitizer/lsan" || die
1284     }
1285    
1286     src_install_liblsan()
1287     {
1288     src_install_liblsan-common || die
1289     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1290     then
1291     keep_dev_package_libs 'liblsan.so.*' || die
1292     fi
1293     }
1294    
1295     src_install_liblsan-dev()
1296     {
1297     src_install_liblsan-common || die
1298     delete_dev_package_libs 'liblsan.so.*' || die
1299     }
1300    
1301     src_install_libubsan-common()
1302     {
1303     install_gcc_library "libsanitizer/ubsan" || die
1304     }
1305    
1306     src_install_libubsan()
1307     {
1308     src_install_libubsan-common || die
1309     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1310     then
1311     keep_dev_package_libs 'libubsan.so.*' || die
1312     fi
1313     }
1314    
1315     src_install_libubsan-dev()
1316     {
1317     src_install_libubsan-common || die
1318     delete_dev_package_libs 'libubsan.so.*' || die
1319     }
1320    
1321     src_install_libtsan-common()
1322     {
1323     install_gcc_library "libsanitizer/tsan" || die
1324     }
1325    
1326     src_install_libtsan()
1327     {
1328     src_install_libtsan-common || die
1329     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1330     then
1331     keep_dev_package_libs 'libtsan.so.*' || die
1332     fi
1333     }
1334     src_install_libtsan-dev()
1335     {
1336     src_install_libtsan-common || die
1337     delete_dev_package_libs 'libtsan.so.*' || die
1338     }
1339    
1340     src_install_libcilkrts-common()
1341     {
1342     install_gcc_library "libcilkrts" || die
1343     }
1344    
1345     src_install_libcilkrts()
1346     {
1347     src_install_libcilkrts-common || die
1348     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1349     then
1350     keep_dev_package_libs 'libcilkrts.so.*' || die
1351     fi
1352     }
1353    
1354     src_install_libcilkrts-dev()
1355     {
1356     src_install_libcilkrts-common || die
1357     delete_dev_package_libs 'libcilkrts.so.*' || die
1358     }
1359    
1360     src_install_libvtv-common()
1361     {
1362     install_gcc_library "libvtv" || die
1363     }
1364    
1365     src_install_libvtv()
1366     {
1367     src_install_libvtv-common || die
1368     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1369     then
1370     keep_dev_package_libs 'libvtv.so.*' || die
1371     fi
1372     }
1373    
1374     src_install_libvtv-dev()
1375     {
1376     src_install_libvtv-common || die
1377     delete_dev_package_libs 'libvtv.so.*' || die
1378     }
1379    
1380     src_install_libstdc++-common()
1381     {
1382     install_gcc_library "libstdc++-v3/src" || die
1383     mmake -j1 -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
1384     }
1385    
1386     src_install_libstdc++()
1387     {
1388     src_install_libstdc++-common || die
1389     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1390     then
1391     keep_dev_package_libs 'libstdc++.so.*' || die
1392     fi
1393     }
1394    
1395     src_install_libstdc++-dev()
1396     {
1397     src_install_libstdc++-common || die
1398     delete_dev_package_libs 'libstdc++.so.*' || die
1399     }
1400    
1401     if lang_enabled java
1402     then
1403     src_install_libgcj-common()
1404     {
1405     install_gcc_library "libjava"
1406     }
1407    
1408     src_install_libgcj()
1409     {
1410     src_install_libgcj-common || die
1411     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1412     then
1413     keep_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1414     fi
1415     }
1416    
1417     src_install_libgcj-dev()
1418     {
1419     src_install_libgcj-common || die
1420     delete_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1421     }
1422    
1423     src_install_gcc-gcj()
1424     {
1425     cd ${SRCDIR}/build
1426    
1427     # install only java targets
1428     make -C ${CHOST}/libjava DESTDIR=${BINDIR} install || die
1429     make -C gcc DESTDIR=${BINDIR} java.install-common || die
1430     make -C gcc DESTDIR=${BINDIR} java.install-man || die
1431    
1432     # missing bins
1433     minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1434     minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1435    
1436     # remove libraries and files already included elsewhere
1437     mmake -j1 -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1438     mdelete /usr/$(mlibdir)/libgcj_bc.so\* || die
1439     if [[ $(mlibdir) != lib ]]
1440     then
1441     mmake -j1 -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1442     mdelete /usr/lib/libgcj_bc.so\* || die
1443     fi
1444    
1445     # versionize all bins and symlink them
1446     versionize_all_bins || die
1447     }
1448     fi
1449    
1450     if lang_enabled ada
1451     then
1452     src_install_libgnat-common()
1453     {
1454     cd ${SRCDIR}/build
1455     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1456     if [[ $(mlibdir) != lib ]]
1457     then
1458     # install 32bit libgnat
1459     # make tries to execute the libs, which fails
1460     # we override the INSTALL commands to *not* do that
1461     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1462     fi
1463     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
1464    
1465     # move so-libs to the right location
1466     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so /usr/$(mlibdir) || die
1467     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so /usr/$(mlibdir) || die
1468     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1469     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1470     mlink libgnarl-${PVER%.*}.so /usr/$(mlibdir)/libgnarl.so || die
1471     mlink libgnat-${PVER%.*}.so /usr/$(mlibdir)/libgnat.so || die
1472     mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so || die
1473     mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so || die
1474     mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1475     mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1476    
1477     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1478    
1479     if [[ $(mlibdir) != lib ]]
1480     then
1481     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
1482    
1483     # move so-libs to the right location
1484     minstalldir /usr/lib || die
1485     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so /usr/lib || die
1486     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so /usr/lib || die
1487     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1488     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1489     mlink libgnarl-${PVER%.*}.so /usr/lib/libgnarl.so || die
1490     mlink libgnat-${PVER%.*}.so /usr/lib/libgnat.so || die
1491     mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so || die
1492     mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so || die
1493     mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1494     mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1495    
1496     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1497     fi
1498    
1499     # remove other
1500     mdelete -r /usr/bin || die
1501     }
1502    
1503     src_install_libgnat()
1504     {
1505     src_install_libgnat-common || die
1506     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1507     then
1508     keep_dev_package_libs "libgnarl-${PVER%.*}.so libgnarl.so libgnat-${PVER%.*}.so libgnat.so" || die
1509     fi
1510     }
1511    
1512     src_install_libgnat-dev()
1513     {
1514     src_install_libgnat-common || die
1515     delete_dev_package_libs "libgnarl-${PVER%.*}.so libgnarl.so libgnat-${PVER%.*}.so libgnat.so" || die
1516     }
1517    
1518     src_install_gcc-gnat()
1519     {
1520     cd ${SRCDIR}/build
1521     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1522     if [[ $(mlibdir) != lib ]]
1523     then
1524     # install 32bit libgnat
1525     # make tries to execute the libs, which fails
1526     # we override the INSTALL commands to *not* do that
1527     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1528     fi
1529     mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
1530     minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
1531    
1532     # remove libraries already included elsewhere
1533     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl\*.\* || die
1534     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat\*.\* || die
1535     if [[ $(mlibdir) != lib ]]
1536     then
1537     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl\*.\* || die
1538     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat\*.\* || die
1539     fi
1540    
1541     # versionize all bins and symlink them
1542     versionize_all_bins || die
1543     }
1544     fi
1545    
1546     if lang_enabled fortran
1547     then
1548     src_install_libgfortran-common()
1549     {
1550     install_gcc_library "libgfortran"
1551     }
1552    
1553     src_install_libgfortran()
1554     {
1555     src_install_libgfortran-common || die
1556     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1557     then
1558     keep_dev_package_libs 'libgfortran.so.*' || die
1559     fi
1560     }
1561    
1562     src_install_libgfortran-dev()
1563     {
1564     src_install_libgfortran-common || die
1565     delete_dev_package_libs 'libgfortran.so.*' || die
1566     }
1567    
1568     src_install_gcc-gfortran()
1569     {
1570     cd ${SRCDIR}/build
1571    
1572     # omp headers needed by fortran
1573     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1574     mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
1575     mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
1576     mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
1577     # missing binaries
1578     minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
1579     mlink gfortran /usr/bin/f95 || die
1580    
1581     # remove libraries already included elsewhere
1582     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} uninstall-nodist_fincludeHEADERS || die
1583    
1584     # versionize all bins and symlink them
1585     versionize_all_bins || die
1586     }
1587     fi
1588    
1589     if lang_enabled go
1590     then
1591     src_install_libgo-common()
1592     {
1593     install_gcc_library "libgo" || die
1594     }
1595    
1596     src_install_libgo()
1597     {
1598     src_install_libgo-common || die
1599     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1600     then
1601     keep_dev_package_libs 'libgo.so.*' || die
1602     fi
1603     }
1604    
1605     src_install_libgo-dev()
1606     {
1607     src_install_libgo-common || die
1608     delete_dev_package_libs 'libgo.so.*' || die
1609     }
1610    
1611     src_install_gcc-go()
1612     {
1613     cd ${SRCDIR}/build
1614     mmake DESTDIR=${BINDIR} install-target-libgo || die
1615     mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
1616     mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
1617     mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
1618     minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1619    
1620     # remove libraries already included elsewhere
1621     mmake -j1 -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1622     mmake -j1 -C ${CHOST}/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1623     if [[ $(mlibdir) != lib ]]
1624     then
1625     mmake -j1 -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1626     mmake -j1 -C ${CHOST}/32/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1627     fi
1628    
1629     # versionize all bins and symlink them
1630     versionize_all_bins || die
1631     }
1632     fi
1633    
1634     if lang_enabled objc
1635     then
1636     src_install_libobjc-common()
1637     {
1638     install_gcc_library "libobjc" || die
1639     }
1640    
1641     src_install_libobjc()
1642     {
1643     cd ${SRCDIR}/build
1644     mmake -j1 -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1645     if [[ $(mlibdir) != lib ]]
1646     then
1647     mmake -j1 -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1648     fi
1649    
1650     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1651     then
1652     keep_dev_package_libs 'libobjc.so.*' || die
1653     fi
1654     }
1655    
1656     src_install_libobjc-dev()
1657     {
1658     cd ${SRCDIR}/build
1659     mmake -j1 -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1660     if [[ $(mlibdir) != lib ]]
1661     then
1662     mmake -j1 -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1663     fi
1664     delete_dev_package_libs 'libobjc.so.*' || die
1665     }
1666    
1667     src_install_gcc-objc()
1668     {
1669     cd ${SRCDIR}/build
1670     mmake -j1 -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
1671     if [[ $(mlibdir) != lib ]]
1672     then
1673     mmake -j1 -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
1674     fi
1675     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1676     minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1677     }
1678    
1679     if lang_enabled obj-c++
1680     then
1681     src_install_gcc-objc++()
1682     {
1683     cd ${SRCDIR}/build
1684     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1685     minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1686     }
1687     fi
1688     fi