Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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