Magellan Linux

Annotation of /trunk/core/gcc/gcc-8.2.0-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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