Magellan Linux

Contents of /trunk/core/gcc/gcc-5.1.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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