Magellan Linux

Annotation of /branches/R11-unstable/core/gcc/gcc-4.8.4-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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