Magellan Linux

Annotation of /trunk/core/gcc/gcc-5.2.0-r5.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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