Magellan Linux

Annotation of /trunk/core/gcc/gcc-9.1.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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