Magellan Linux

Contents of /branches/R11-stable/core/gcc/gcc-4.8.2-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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