Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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