Magellan Linux

Annotation of /smage/trunk/core/gcc/gcc-6.2.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9112 - (hide annotations) (download)
Fri Sep 16 11:11:45 2016 UTC (7 years, 9 months ago) by niro
File size: 45122 byte(s)
-disabled libvtv atm, 6.2.0 does not provide a library
1 niro 9111 # $Id$
2    
3     PNAME="gcc"
4     PVER="6.2.0"
5     PBUILD="r1"
6    
7     # in-tree isl
8     ISL_PVER="0.16.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++,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="1"
35    
36 niro 9112 #SPLIT_PACKAGES="libgcc libgomp libquadmath libitm libatomic libstdc++ libasan libubsan libcilkrts libvtv libmpx"
37     SPLIT_PACKAGES="libgcc libgomp libquadmath libitm libatomic libstdc++ libasan libubsan libcilkrts libmpx"
38 niro 9111
39     # dev packages
40     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
41     then
42 niro 9112 #SPLIT_PACKAGES+=" libgcc-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libstdc++-dev libasan-dev libubsan-dev libcilkrts-dev libvtv-dev libmpx-dev"
43     SPLIT_PACKAGES+=" libgcc-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libstdc++-dev libasan-dev libubsan-dev libcilkrts-dev libmpx-dev"
44 niro 9111 fi
45    
46     # thread/leak sanitizer is only available on x86_64
47     if [[ ${ARCH} = x86_64 ]]
48     then
49     SPLIT_PACKAGES+=" libtsan liblsan"
50     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
51     then
52     SPLIT_PACKAGES+=" libtsan-dev liblsan-dev"
53     fi
54     fi
55    
56     # always enable gcc
57     SPLIT_PACKAGES+=" gcc"
58    
59     # helper functions
60     lang_enabled()
61     {
62     local lang="$1"
63    
64     if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
65     then
66     return 0
67     else
68     return 1
69     fi
70     }
71    
72     install_gcc_library()
73     {
74     local library="$1"
75    
76     cd ${SRCDIR}/build
77     mmake -C ${CHOST}/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
78     if [[ $(mlibdir) != lib ]]
79     then
80     if [ -d ${CHOST}/32/${library} ]
81     then
82     mmake -C ${CHOST}/32/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
83     fi
84     fi
85     }
86    
87     versionize_all_bins()
88     {
89     local bin
90    
91     for bin in $(find ${BINDIR}/usr/bin -type f)
92     do
93     # only rename unversionized bins
94     if [[ ${bin//${PVER}} = ${bin} ]] && [[ ! -e ${bin}-${PVER} ]]
95     then
96     echo ${bin}
97     mv ${bin} ${bin}-${PVER} || die
98     ln -snf $(basename ${bin}-${PVER}) ${bin} || die
99     fi
100     done
101     }
102    
103     keep_dev_package_libs()
104     {
105     local libs="$@"
106    
107     # cleanup, only keep the libs, everything else get provided by the dev-package
108     zapmost ${BINDIR}/usr/$(mlibdir) "${libs}" || die
109     # multilib as well
110     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
111     then
112     zapmost ${BINDIR}/usr/lib "${libs}" || die
113     fi
114    
115     # cleanup the rest, keep only libs
116     zapmost ${BINDIR} /usr/$(mlibdir) $([[ $(mlibdir) != lib ]] && echo "/usr/lib") || die
117     }
118    
119     delete_dev_package_libs()
120     {
121     local libs="$@"
122     local i
123    
124     # cleanup, the solibs are provided by the non-dev package
125     for i in ${libs}
126     do
127     rm ${BINDIR}/usr/$(mlibdir)/${i} || die
128     # multilib as well
129     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
130     then
131     rm ${BINDIR}/usr/lib/${i} || die
132     fi
133     done
134     }
135    
136     GLIBC_DEPEND=">= virtual/glibc"
137     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
138     then
139     GLIBCDEV_DEPEND=">= virtual/glibc-dev"
140     fi
141     ZLIB_DEPEND=">= sys-libs/zlib-1.2.8"
142     COMMON_DEPEND="${GLIBC_DEPEND}
143     ${ZLIB_DEPEND}
144     >= dev-libs/gmp-6.1
145     >= dev-libs/mpfr-3.1.3
146     >= dev-libs/mpc-1.0.3"
147     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
148     then
149     COMMON_DEPEND="${COMMON_DEPEND}
150     >= dev-libs/gmp-dev-6.1"
151     fi
152     LIBGCC_DEPEND="${GLIBC_DEPEND}"
153     LIBGOMP_DEPEND="${GLIBC_DEPEND}"
154     LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
155     LIBITM_DEPEND="${GLIBC_DEPEND}"
156     LIBATOMIC_DEPEND="${GLIBC_DEPEND}"
157     LIBASAN_DEPEND="${GLIBC_DEPEND}"
158     LIBLSAN_DEPEND="${GLIBC_DEPEND}"
159     LIBUBSAN_DEPEND="${GLIBC_DEPEND}"
160     LIBTSAN_DEPEND="${GLIBC_DEPEND}"
161     LIBCILKRTS_DEPEND="${GLIBC_DEPEND}"
162     LIBVTV_DEPEND="${GLIBC_DEPEND}"
163     LIBMPX_DEPEND="${GLIBC_DEPEND}"
164     LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
165    
166     GCC_DEPEND="${COMMON_DEPEND}
167     >= sys-dev/binutils-2.27
168     >= dev-libs/elfutils-0.167"
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.1
204     >= x11-libs/libSM-1.2
205     >= x11-libs/libXtst-1.2
206     >= dev-libs/glib2-2.46
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}-6.1.0-java-no-multilib.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     # generic fixes
819     mpatch ${PNAME}-4.5.1-no-fixincludes.patch || die
820     # re-add --enable/disable-libjava-multilib switch
821     mpatch ${PNAME}-6.1.0-java-no-multilib.patch || die
822    
823     # suppress installation of libffi, we're using libffi3 instead
824     sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
825     sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
826    
827     install -d ${SRCDIR}/build || die
828     }
829    
830     src_compile()
831     {
832     if lang_enabled ada
833     then
834     if [[ ${ADA_BOOTSTRAP} = 1 ]]
835     then
836     # export binary gnat pathes
837     export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
838     export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
839     # CPATH is supposed to be applied for any language, thus
840     # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
841     export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
842     export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
843     export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
844     export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
845     export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
846     export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
847    
848     # prepare some tools
849     cd ${GNAT_BIN_SRCDIR}
850     cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
851     cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
852     cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
853     cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
854     cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
855     cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
856     cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
857     gnatmake xtreeprs || die
858     gnatmake xsinfo || die
859     gnatmake xeinfo || die
860     gnatmake xnmake || die
861     fi
862     fi
863    
864     cd ${SRCDIR}/build
865     local myconf
866    
867     # Straight from the GCC install doc:
868     # "GCC has code to correctly determine the correct value for target
869     # for nearly all native systems. Therefore, we highly recommend you
870     # not provide a configure target when configuring a native compiler."
871     if [[ ${CHOST} != ${CTARGET} ]]
872     then
873     myconf+=" --target=${CTARGET}"
874     fi
875    
876     if lang_enabled java
877     then
878     myconf+=" --enable-java-awt=gtk
879     --enable-gtk-cairo
880     --enable-libgcj-multifile
881     --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
882     --with-fastjar=/usr/bin/fastjar
883     --enable-hash-synchronization"
884     # disable mutilib for java
885     myconf+=" --disable-libjava-multilib"
886     # java home, must be the same of java-gcj-compat
887     myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
888     fi
889    
890     # use isl backend
891     myconf+=" --with-isl"
892    
893     # install libiberty, as we will NOT using the one from binutils
894     myconf+=" --enable-install-libiberty"
895    
896     # enable memory protections extension
897     myconf+=" --enable-libmpx"
898    
899     # no ssp, we use mpx
900     myconf+=" --disable-libssp"
901    
902     # enable gold but use default linker as default
903     #myconf+=" --enable-gold"
904     #myconf+=" --with-plugin-ld=ld.gold"
905     #myconf+=" --enable-ld=default"
906    
907     # use the old default c++ abi until LLVM is fixed
908     # later we switch to c++11
909     # see: http://allanmcrae.com/2015/06/the-case-of-gcc-5-1-and-the-two-c-abis/
910     # myconf+=" --with-default-libstdcxx-abi=gcc4-compatible"
911    
912     # gcc >= 4.3 has now configure flags for uri and version - yeah!
913     AR=ar \
914     ../configure \
915     --with-bugurl="http://bugs.magellan-linux.de/" \
916     --with-pkgversion="Magellan-Linux" \
917     --build=${CHOST} \
918     --host=${CHOST} \
919     --prefix=/usr \
920     --sbindir=/usr/bin \
921     --mandir=/usr/share/man \
922     --infodir=/usr/share/info \
923     --libdir=/usr/$(mlibdir) \
924     --libexecdir=/usr/$(mlibdir) \
925     --enable-shared \
926     --enable-threads=posix \
927     --enable-__cxa_atexit \
928     --enable-clocale=gnu \
929     --enable-checking=release \
930     --disable-libunwind-exceptions \
931     --with-linker-hash-style=gnu \
932     --with-system-zlib \
933     --enable-languages=${MyLanguages} \
934     --disable-libstdcxx-pch \
935     --enable-gnu-unique-object \
936     --enable-gnu-indirect-function \
937     --enable-lto \
938     --enable-plugin \
939     --enable-linker-build-id \
940     --disable-werror \
941     ${myconf} \
942     || die
943    
944     # parallel builds seems to break sometimes on x86_64
945     local myopts
946     [[ ${ARCH} = x86_64 ]] && myopts=-j1
947    
948     # enable bootstrap if requested
949     local target
950     [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
951    
952     mmake ${myopts} ${target} || die
953     }
954    
955     src_check()
956     {
957     cd ${SRCDIR}/build
958    
959     # increase stack size to prevent test failures
960     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
961     ulimit -s 32768
962    
963     # do not abort on error as some are "expected"
964     mmake -k check || true
965     # list all
966     ${SRCDIR}/contrib/test_summary
967     # only summary
968     #${SRCDIR}/contrib/test_summary | grep -A7 "Summ"
969     }
970    
971     src_install_gcc()
972     {
973     cd ${SRCDIR}/build
974    
975     mmake -C gcc DESTDIR=${BINDIR} install-driver || die
976     mmake -C gcc DESTDIR=${BINDIR} install-cpp || die
977     mmake -C gcc DESTDIR=${BINDIR} install-gcc-ar || die
978     mmake -C gcc DESTDIR=${BINDIR} c++.install-common || die
979     mmake -C gcc DESTDIR=${BINDIR} install-headers || die
980     mmake -C gcc DESTDIR=${BINDIR} install-plugin || die
981    
982     # missing bins
983     minstallexec gcc/gcov || die
984     minstallexec gcc/gcov-tool || die
985     minstallexec gcc/cc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
986     minstallexec gcc/cc1plus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
987     minstallexec gcc/collect2 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
988    
989     # lto wrapper
990     if lang_enabled lto
991     then
992     mmake -C gcc DESTDIR=${BINDIR} install-lto-wrapper || die
993     minstallexec gcc/lto1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
994     fi
995    
996     # install only libgcc crts
997     mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install || die
998     mdelete /usr/$(mlibdir)/libgcc_s.so\* || die
999     if [[ $(mlibdir) != lib ]]
1000     then
1001     mmake -C ${CHOST}/32/libgcc DESTDIR=${BINDIR} install || die
1002     mdelete /usr/lib/libgcc_s.so\* || die
1003     fi
1004    
1005     # install libstdc++ files
1006     mmake -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1007     mmake -C ${CHOST}/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1008     mmake -C ${CHOST}/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1009     mmake -C ${CHOST}/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1010     if [[ $(mlibdir) != lib ]]
1011     then
1012     mmake -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1013     mmake -C ${CHOST}/32/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1014     mmake -C ${CHOST}/32/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1015     mmake -C ${CHOST}/32/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1016     fi
1017     # install libcc1 + gdb-plugins
1018     mmake DESTDIR=${BINDIR} install-libcc1 || die
1019     # move gdb scripts to a proper location and to pretty-print ldconfig
1020     minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
1021     mmove ${BINDIR}/usr/$(mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
1022     if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
1023     then
1024     minstalldir /usr/share/gdb/auto-load/usr/lib || die
1025     mmove ${BINDIR}/usr/lib/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/lib/ || die
1026     fi
1027     # only keep static libstdcc++ lib
1028     mdelete /usr/$(mlibdir)/libstdc++.so\* || die
1029     if [[ $(mlibdir) != lib ]]
1030     then
1031     mdelete /usr/lib/libstdc++.so\* || die
1032     fi
1033    
1034     # fixinclude header + scripts
1035     mmake DESTDIR=${BINDIR} install-fixincludes || die
1036     mmake -C gcc DESTDIR=${BINDIR} install-mkheaders || die
1037    
1038     # lto plugin
1039     if lang_enabled lto
1040     then
1041     mmake -C lto-plugin DESTDIR=${BINDIR} install || die
1042     minstalldir /usr/$(mlibdir)/bfd-plugins || die
1043     mlink /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/liblto_plugin.so /usr/$(mlibdir)/bfd-plugins/ || die
1044     fi
1045    
1046     # library headers: libcilkrts, libgomp, libitm, libsanitizer, libasan, libmpx
1047     mmake -C ${CHOST}/libcilkrts DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1048     mmake -C ${CHOST}/libcilkrts DESTDIR=${BINDIR} install-nodist_cilkincludeHEADERS || die
1049     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1050     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1051     mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1052     mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1053     mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1054     mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1055     mmake -C ${CHOST}/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1056     mmake -C ${CHOST}/libmpx DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1057     if [[ $(mlibdir) != lib ]]
1058     then
1059     mmake -C ${CHOST}/32/libcilkrts DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1060     mmake -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1061     mmake -C ${CHOST}/32/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1062     mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1063     mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1064     mmake -C ${CHOST}/32/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1065     mmake -C ${CHOST}/32/libmpx DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1066     fi
1067    
1068     # install libiberty
1069     mmake -C libiberty DESTDIR=${BINDIR} install || die
1070     # install PIC version of libiberty
1071     minstallfile libiberty/pic/libiberty.a /usr/$(mlibdir) || die
1072    
1073     # man and info pages
1074     mmake -C gcc DESTDIR=${BINDIR} install-man || die
1075     mmake -C gcc DESTDIR=${BINDIR} install-info || die
1076     # provided by split-packages
1077     if lang_enabled go
1078     then
1079     mdelete /usr/share/man/man1/gccgo.1 || die
1080     mdelete /usr/share/info/gccgo.info || die
1081     fi
1082     if lang_enabled fortran
1083     then
1084     mdelete /usr/share/man/man1/gfortran.1 || die
1085     mdelete /usr/share/info/gfortran.info || die
1086     fi
1087     if lang_enabled ada
1088     then
1089     mdelete /usr/share/info/gnat-style.info || die
1090     mdelete /usr/share/info/gnat_rm.info || die
1091     mdelete /usr/share/info/gnat_ugn.info || die
1092     fi
1093    
1094     # install libcpp locales
1095     mmake -C libcpp DESTDIR=${BINDIR} install || die
1096     # install gcc locales
1097     mmake -C gcc DESTDIR=${BINDIR} install-po || die
1098    
1099     # install posix conformance launcher scripts for c89 and c99
1100     cat > ${BINDIR}/usr/bin/c89 <<"EOF"
1101     #!/bin/sh
1102     fl="-std=c89"
1103     for opt
1104     do
1105     case "$opt" in
1106     -ansi|-std=c89|-std=iso9899:1990)
1107     fl=""
1108     ;;
1109     -std=*)
1110     echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
1111     exit 1
1112     ;;
1113     esac
1114     done
1115     exec gcc $fl ${1+"$@"}
1116     EOF
1117     cat > ${BINDIR}/usr/bin/c99 <<"EOF"
1118     #!/bin/sh
1119     fl="-std=c99"
1120     for opt
1121     do
1122     case "$opt" in
1123     -std=c99|-std=iso9899:1999)
1124     fl=""
1125     ;;
1126     -std=*)
1127     echo "`basename $0` called with non ISO C99 option $opt" >&2
1128     exit 1
1129     ;;
1130     esac
1131     done
1132     exec gcc $fl ${1+"$@"}
1133     EOF
1134     mchmod 0755 /usr/bin/c89 || die
1135     mchmod 0755 /usr/bin/c99 || die
1136    
1137     # versionize all bins and symlink them
1138     versionize_all_bins || die
1139    
1140     mlink ../bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
1141     # this one is needed on multilib systems.
1142     # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
1143     if [[ $(mlibdir) != lib ]]
1144     then
1145     minstalldir /usr/lib || die
1146     mlink ../bin/cpp-${PVER} /usr/lib/cpp || die
1147     fi
1148     mlink gcc-${PVER} /usr/bin/cc || die
1149    
1150     # fix all .la files
1151     # they may contain invalid libpathes which are not needed
1152     local la
1153     for la in $(find ${BINDIR} -name \*.la)
1154     do
1155     fix_la_file ${la} || die ${la}
1156     done
1157    
1158     # remove /lib dirs to be usr-move compat
1159     if [[ -d ${BINDIR}/$(mlibdir) ]]
1160     then
1161     mdelete -r /$(mlibdir) || die
1162     fi
1163     if [[ $(mlibdir) != lib ]]
1164     then
1165     if [[ -d ${BINDIR}/lib ]]
1166     then
1167     mdelete -r /lib || die
1168     fi
1169     fi
1170     }
1171    
1172     src_install_libgcc-common()
1173     {
1174     cd ${SRCDIR}/build
1175     mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
1176     if [[ $(mlibdir) != lib ]]
1177     then
1178     mmake -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
1179     fi
1180     mdelete -r /usr/$(mlibdir)/gcc || die
1181     }
1182    
1183     src_install_libgcc()
1184     {
1185     src_install_libgcc-common || die
1186     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1187     then
1188     keep_dev_package_libs 'libgcc_s.so.*' || die
1189     fi
1190     }
1191    
1192     src_install_libgcc-dev()
1193     {
1194     src_install_libgcc-common || die
1195     delete_dev_package_libs 'libgcc_s.so.*' || die
1196     }
1197    
1198     src_install_libgomp-common()
1199     {
1200     install_gcc_library "libgomp" || die
1201     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
1202     }
1203    
1204     src_install_libgomp()
1205     {
1206     src_install_libgomp-common || die
1207     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1208     then
1209     keep_dev_package_libs 'libgomp.so.*' || die
1210     fi
1211     }
1212    
1213     src_install_libgomp-dev()
1214     {
1215     src_install_libgomp-common || die
1216     delete_dev_package_libs 'libgomp.so.*' || die
1217     }
1218    
1219     src_install_libquadmath-common()
1220     {
1221     install_gcc_library "libquadmath" || die
1222     mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-info || die
1223     }
1224    
1225     src_install_libquadmath()
1226     {
1227     src_install_libquadmath-common || die
1228     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1229     then
1230     keep_dev_package_libs 'libquadmath.so.*' || die
1231     fi
1232     }
1233    
1234     src_install_libquadmath-dev()
1235     {
1236     src_install_libquadmath-common || die
1237     delete_dev_package_libs 'libquadmath.so.*' || die
1238     }
1239    
1240     src_install_libitm-common()
1241     {
1242     install_gcc_library "libitm"
1243     mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-info || die
1244     }
1245    
1246     src_install_libitm()
1247     {
1248     src_install_libitm-common || die
1249     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1250     then
1251     keep_dev_package_libs 'libitm.so.*' || die
1252     fi
1253     }
1254    
1255     src_install_libitm-dev()
1256     {
1257     src_install_libitm-common || die
1258     delete_dev_package_libs 'libitm.so.*' || die
1259     }
1260    
1261     src_install_libatomic-common()
1262     {
1263     install_gcc_library "libatomic" || die
1264     }
1265    
1266     src_install_libatomic()
1267     {
1268     src_install_libatomic-common || die
1269     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1270     then
1271     keep_dev_package_libs 'libatomic.so.*' || die
1272     fi
1273     }
1274    
1275     src_install_libatomic-dev()
1276     {
1277     src_install_libatomic-common || die
1278     delete_dev_package_libs 'libatomic.so.*' || die
1279     }
1280    
1281     src_install_libasan-common()
1282     {
1283     install_gcc_library "libsanitizer/asan" || die
1284     }
1285    
1286     src_install_libasan()
1287     {
1288     src_install_libasan-common || die
1289     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1290     then
1291     keep_dev_package_libs 'libasan.so.*' || die
1292     fi
1293     }
1294    
1295     src_install_libasan-dev()
1296     {
1297     src_install_libasan-common || die
1298     delete_dev_package_libs 'libasan.so.*' || die
1299     }
1300    
1301     src_install_liblsan-common()
1302     {
1303     install_gcc_library "libsanitizer/lsan" || die
1304     }
1305    
1306     src_install_liblsan()
1307     {
1308     src_install_liblsan-common || die
1309     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1310     then
1311     keep_dev_package_libs 'liblsan.so.*' || die
1312     fi
1313     }
1314    
1315     src_install_liblsan-dev()
1316     {
1317     src_install_liblsan-common || die
1318     delete_dev_package_libs 'liblsan.so.*' || die
1319     }
1320    
1321     src_install_libubsan-common()
1322     {
1323     install_gcc_library "libsanitizer/ubsan" || die
1324     }
1325    
1326     src_install_libubsan()
1327     {
1328     src_install_libubsan-common || die
1329     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1330     then
1331     keep_dev_package_libs 'libubsan.so.*' || die
1332     fi
1333     }
1334    
1335     src_install_libubsan-dev()
1336     {
1337     src_install_libubsan-common || die
1338     delete_dev_package_libs 'libubsan.so.*' || die
1339     }
1340    
1341     src_install_libtsan-common()
1342     {
1343     install_gcc_library "libsanitizer/tsan" || die
1344     }
1345    
1346     src_install_libtsan()
1347     {
1348     src_install_libtsan-common || die
1349     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1350     then
1351     keep_dev_package_libs 'libtsan.so.*' || die
1352     fi
1353     }
1354     src_install_libtsan-dev()
1355     {
1356     src_install_libtsan-common || die
1357     delete_dev_package_libs 'libtsan.so.*' || die
1358     }
1359    
1360     src_install_libcilkrts-common()
1361     {
1362     install_gcc_library "libcilkrts" || die
1363     }
1364    
1365     src_install_libcilkrts()
1366     {
1367     src_install_libcilkrts-common || die
1368     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1369     then
1370     keep_dev_package_libs 'libcilkrts.so.*' || die
1371     fi
1372     }
1373    
1374     src_install_libcilkrts-dev()
1375     {
1376     src_install_libcilkrts-common || die
1377     delete_dev_package_libs 'libcilkrts.so.*' || die
1378     }
1379    
1380     src_install_libvtv-common()
1381     {
1382     install_gcc_library "libvtv" || die
1383     }
1384    
1385     src_install_libvtv()
1386     {
1387     src_install_libvtv-common || die
1388     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1389     then
1390     keep_dev_package_libs 'libvtv.so.*' || die
1391     fi
1392     }
1393    
1394     src_install_libvtv-dev()
1395     {
1396     src_install_libvtv-common || die
1397     delete_dev_package_libs 'libvtv.so.*' || die
1398     }
1399    
1400     src_install_libmpx-common()
1401     {
1402     cd ${SRCDIR}/build
1403    
1404     # does not support install-toolexeclibLTLIBRARIES
1405     mmake -C ${CHOST}/libmpx DESTDIR=${BINDIR} install || die
1406     mdelete /usr/$(mlibdir)/libmpx.spec || die
1407     if [[ $(mlibdir) != lib ]]
1408     then
1409     mmake -C ${CHOST}/32/libmpx DESTDIR=${BINDIR} install || die
1410     mdelete /usr/lib/libmpx.spec || die
1411     fi
1412     }
1413    
1414     src_install_libmpx()
1415     {
1416     src_install_libmpx-common || die
1417     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1418     then
1419     keep_dev_package_libs 'libmpx.so.*' || die
1420     fi
1421     }
1422    
1423     src_install_libmpx-dev()
1424     {
1425     src_install_libmpx-common || die
1426     delete_dev_package_libs 'libmpx.so.*' || die
1427     }
1428    
1429     src_install_libstdc++-common()
1430     {
1431     install_gcc_library "libstdc++-v3/src" || die
1432     mmake -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
1433     }
1434    
1435     src_install_libstdc++()
1436     {
1437     src_install_libstdc++-common || die
1438     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1439     then
1440     keep_dev_package_libs 'libstdc++.so.*' || die
1441     fi
1442     }
1443    
1444     src_install_libstdc++-dev()
1445     {
1446     src_install_libstdc++-common || die
1447     delete_dev_package_libs 'libstdc++.so.*' || die
1448     }
1449    
1450     if lang_enabled java
1451     then
1452     src_install_libgcj-common()
1453     {
1454     install_gcc_library "libjava"
1455     }
1456    
1457     src_install_libgcj()
1458     {
1459     src_install_libgcj-common || die
1460     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1461     then
1462     keep_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1463     fi
1464     }
1465    
1466     src_install_libgcj-dev()
1467     {
1468     src_install_libgcj-common || die
1469     delete_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1470     }
1471    
1472     src_install_gcc-gcj()
1473     {
1474     cd ${SRCDIR}/build
1475    
1476     # install only java targets
1477     make -C ${CHOST}/libjava DESTDIR=${BINDIR} install || die
1478     make -C gcc DESTDIR=${BINDIR} java.install-common || die
1479     make -C gcc DESTDIR=${BINDIR} java.install-man || die
1480    
1481     # missing bins
1482     minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1483     minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1484    
1485     # remove libraries and files already included elsewhere
1486     mmake -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1487     mdelete /usr/$(mlibdir)/libgcj_bc.so\* || die
1488     if [[ $(mlibdir) != lib ]]
1489     then
1490     # with >= gcc-6.1 this one only applies when libjava was a mulitlib build
1491     if [[ -d ${CHOST}/32/libjava ]]
1492     then
1493     mmake -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1494     mdelete /usr/lib/libgcj_bc.so\* || die
1495     fi
1496     fi
1497    
1498     # versionize all bins and symlink them
1499     versionize_all_bins || die
1500     }
1501     fi
1502    
1503     if lang_enabled ada
1504     then
1505     # gnat so-lib version
1506     solib_ver="$(echo ${PVER} | cut -d'.' -f1)"
1507    
1508     src_install_libgnat-common()
1509     {
1510     cd ${SRCDIR}/build
1511     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1512     if [[ $(mlibdir) != lib ]]
1513     then
1514     # install 32bit libgnat
1515     # make tries to execute the libs, which fails
1516     # we override the INSTALL commands to *not* do that
1517     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1518     fi
1519     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
1520    
1521     # move so-libs to the right location
1522     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so /usr/$(mlibdir) || die
1523     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so /usr/$(mlibdir) || die
1524     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1525     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1526     mlink libgnarl-${solib_ver}.so /usr/$(mlibdir)/libgnarl.so || die
1527     mlink libgnat-${solib_ver}.so /usr/$(mlibdir)/libgnat.so || die
1528     mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so || die
1529     mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so || die
1530     mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1531     mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1532    
1533     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1534    
1535     if [[ $(mlibdir) != lib ]]
1536     then
1537     zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
1538    
1539     # move so-libs to the right location
1540     minstalldir /usr/lib || die
1541     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so /usr/lib || die
1542     mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so /usr/lib || die
1543     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1544     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1545     mlink libgnarl-${solib_ver}.so /usr/lib/libgnarl.so || die
1546     mlink libgnat-${solib_ver}.so /usr/lib/libgnat.so || die
1547     mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so || die
1548     mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so || die
1549     mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1550     mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1551    
1552     mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1553     fi
1554    
1555     # remove other
1556     mdelete -r /usr/bin || die
1557     }
1558    
1559     src_install_libgnat()
1560     {
1561     src_install_libgnat-common || die
1562     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1563     then
1564     keep_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1565     fi
1566     }
1567    
1568     src_install_libgnat-dev()
1569     {
1570     src_install_libgnat-common || die
1571     delete_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1572     }
1573    
1574     src_install_gcc-gnat()
1575     {
1576     cd ${SRCDIR}/build
1577     mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1578     if [[ $(mlibdir) != lib ]]
1579     then
1580     # install 32bit libgnat
1581     # make tries to execute the libs, which fails
1582     # we override the INSTALL commands to *not* do that
1583     mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1584     fi
1585     mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
1586     minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
1587    
1588     # remove libraries already included elsewhere
1589     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl\*.\* || die
1590     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat\*.\* || die
1591     if [[ $(mlibdir) != lib ]]
1592     then
1593     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl\*.\* || die
1594     mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat\*.\* || die
1595     fi
1596    
1597     # versionize all bins and symlink them
1598     versionize_all_bins || die
1599     }
1600     fi
1601    
1602     if lang_enabled fortran
1603     then
1604     src_install_libgfortran-common()
1605     {
1606     install_gcc_library "libgfortran"
1607     }
1608    
1609     src_install_libgfortran()
1610     {
1611     src_install_libgfortran-common || die
1612     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1613     then
1614     keep_dev_package_libs 'libgfortran.so.*' || die
1615     fi
1616     }
1617    
1618     src_install_libgfortran-dev()
1619     {
1620     src_install_libgfortran-common || die
1621     delete_dev_package_libs 'libgfortran.so.*' || die
1622     }
1623    
1624     src_install_gcc-gfortran()
1625     {
1626     cd ${SRCDIR}/build
1627    
1628     # omp headers needed by fortran
1629     mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1630     # libcafsingle
1631     mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1632     if [[ $(mlibdir) != lib ]]
1633     then
1634     mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1635     fi
1636     # only included in <= gcc-6.1
1637     if [[ ${PVER} < 6 ]]
1638     then
1639     #libgfortranbegin
1640     mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1641     if [[ $(mlibdir) != lib ]]
1642     then
1643     mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1644     fi
1645     fi
1646     # spec file
1647     mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1648     if [[ $(mlibdir) != lib ]]
1649     then
1650     mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1651     fi
1652     # finclude headers
1653     mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1654     if [[ $(mlibdir) != lib ]]
1655     then
1656     mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1657     fi
1658     # binaries
1659     mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
1660     mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
1661     mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
1662     # missing binaries
1663     minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
1664     mlink gfortran /usr/bin/f95 || die
1665    
1666     # versionize all bins and symlink them
1667     versionize_all_bins || die
1668     }
1669     fi
1670    
1671     if lang_enabled go
1672     then
1673     src_install_libgo-common()
1674     {
1675     install_gcc_library "libgo" || die
1676     }
1677    
1678     src_install_libgo()
1679     {
1680     src_install_libgo-common || die
1681     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1682     then
1683     keep_dev_package_libs 'libgo.so.*' || die
1684     fi
1685     }
1686    
1687     src_install_libgo-dev()
1688     {
1689     src_install_libgo-common || die
1690     delete_dev_package_libs 'libgo.so.*' || die
1691     }
1692    
1693     src_install_gcc-go()
1694     {
1695     cd ${SRCDIR}/build
1696     mmake DESTDIR=${BINDIR} install-target-libgo || die
1697     mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
1698     mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
1699     mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
1700     minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1701    
1702     # remove libraries already included elsewhere
1703     mmake -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1704     mmake -C ${CHOST}/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1705     if [[ $(mlibdir) != lib ]]
1706     then
1707     mmake -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1708     mmake -C ${CHOST}/32/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1709     fi
1710    
1711     # versionize all bins and symlink them
1712     versionize_all_bins || die
1713     }
1714     fi
1715    
1716     if lang_enabled objc
1717     then
1718     src_install_libobjc-common()
1719     {
1720     install_gcc_library "libobjc" || die
1721     }
1722    
1723     src_install_libobjc()
1724     {
1725     cd ${SRCDIR}/build
1726     mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1727     if [[ $(mlibdir) != lib ]]
1728     then
1729     mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1730     fi
1731    
1732     if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1733     then
1734     keep_dev_package_libs 'libobjc.so.*' || die
1735     fi
1736     }
1737    
1738     src_install_libobjc-dev()
1739     {
1740     cd ${SRCDIR}/build
1741     mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1742     if [[ $(mlibdir) != lib ]]
1743     then
1744     mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1745     fi
1746     delete_dev_package_libs 'libobjc.so.*' || die
1747     }
1748    
1749     src_install_gcc-objc()
1750     {
1751     cd ${SRCDIR}/build
1752     mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
1753     if [[ $(mlibdir) != lib ]]
1754     then
1755     mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
1756     fi
1757     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1758     minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1759     }
1760    
1761     if lang_enabled obj-c++
1762     then
1763     src_install_gcc-objc++()
1764     {
1765     cd ${SRCDIR}/build
1766     minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1767     minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1768     }
1769     fi
1770     fi