Magellan Linux

Annotation of /smage/trunk/core/gcc/gcc-5.1.0-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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