Magellan Linux

Contents of /smage/trunk/core/gcc/gcc-4.8.2-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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