Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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