Magellan Linux

Contents of /trunk/core/gcc/gcc-4.9.1-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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