Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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