Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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