Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 14388 - (show annotations) (download)
Thu Jul 9 13:46:20 2020 UTC (3 years, 9 months ago) by niro
File size: 44631 byte(s)
-pruned old cruft
1 # $Id$
2
3 PNAME="gcc"
4 PVER="10.1.0"
5 PBUILD="r1"
6
7 STATE="disabled"
8
9 # package base name
10 _BASENAME="gcc"
11
12 # in-tree isl
13 ISL_PVER="0.21"
14
15 PCAT="sys-dev"
16 HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
17
18 sminclude mtools cleanutils libtool gcc-toolchain
19
20 # packages which needs rebuild: libtool, java-gcj-compat, llvm
21
22 # languages to build into gcc
23 # options are: c,c++,java,ada,fortran,go,objc,obj-c++,lto
24 # obj-c++ requires objc
25 # c++ requires c and lto
26 # c always goes along with lto
27 # gcc required minimum are c,c++,lto
28 #
29 # while toolchain bootstrap, only build c,c++ and after that rebuild the whole toolchain:
30 # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
31 #
32 # dropped java/gcj beginning with year 2017
33 MyLanguages=c,c++,lto
34
35 # 1=bootstrap the whole gcc suite, using bootstrap-lean method
36 # 0=no bootstrap, use this only for quick builds to test something but never for release
37 GCC_BOOTSTRAP="1"
38
39 # 1=bootstrap ada, using precompiled gnat binaries
40 # 0=no bootstrap, build ada with system gnat - requires sys-dev/gcc-gnat
41 ADA_BOOTSTRAP="0"
42
43 # 1=enable dev split packages
44 # 0=disable dev split packages
45 ENABLE_DEV_PACKAGES="1"
46
47 # empty default
48 SPLIT_PACKAGES=""
49
50 GLIBC_DEPEND=">= virtual/glibc"
51 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
52 then
53 GLIBCDEV_DEPEND=">= virtual/glibc-dev"
54 fi
55 ZLIB_DEPEND=">= sys-libs/zlib-1.2.8"
56 COMMON_DEPEND="${GLIBC_DEPEND}
57 ${ZLIB_DEPEND}
58 >= dev-libs/gmp-6.2
59 >= dev-libs/mpfr-4.0.2
60 >= dev-libs/mpc-1.1"
61 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
62 then
63 COMMON_DEPEND="${COMMON_DEPEND}
64 >= dev-libs/gmp-dev-6.2"
65 fi
66
67 # special handling for libtsan, only x86-64
68 DEPEND_x86_64="== sys-libs/libtsan-${PVER}
69 == sys-libs/liblsan-${PVER}"
70 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
71 then
72 DEPEND_x86_64="${DEPEND_x86_64}
73 == sys-libs/libtsan-dev-${PVER}
74 == sys-libs/liblsan-dev-${PVER}"
75 fi
76 SPECIAL_VARS="DEPEND_x86_64"
77
78 if lang_enabled c
79 then
80 SPLIT_PACKAGES+="libgcc libgomp libquadmath libitm libatomic libasan libubsan libvtv"
81 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
82 then
83 SPLIT_PACKAGES+=" libgcc-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libasan-dev libubsan-dev libvtv-dev"
84 fi
85 # thread/leak sanitizer is only available on x86_64
86 if [[ ${ARCH} = x86_64 ]]
87 then
88 SPLIT_PACKAGES+=" libtsan liblsan"
89 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
90 then
91 SPLIT_PACKAGES+=" libtsan-dev liblsan-dev"
92 fi
93 fi
94 SPLIT_PACKAGES+=" gcc"
95 LIBGCC_DEPEND="${GLIBC_DEPEND}"
96 LIBGOMP_DEPEND="${GLIBC_DEPEND}"
97 LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
98 LIBITM_DEPEND="${GLIBC_DEPEND}"
99 LIBATOMIC_DEPEND="${GLIBC_DEPEND}"
100 LIBASAN_DEPEND="${GLIBC_DEPEND}"
101 LIBLSAN_DEPEND="${GLIBC_DEPEND}"
102 LIBUBSAN_DEPEND="${GLIBC_DEPEND}"
103 LIBTSAN_DEPEND="${GLIBC_DEPEND}"
104 LIBVTV_DEPEND="${GLIBC_DEPEND}"
105 GCC_DEPEND="${COMMON_DEPEND}
106 >= sys-dev/binutils-2.34
107 >= dev-libs/elfutils-0.180"
108 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
109 then
110 GCC_DEPEND="${GCC_DEPEND}
111 ${GLIBCDEV_DEPEND}"
112 fi
113 fi
114
115 if lang_enabled c++
116 then
117 SPLIT_PACKAGES+=" libstdc++"
118 LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
119 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
120 then
121 SPLIT_PACKAGES+=" libstdc++-dev"
122 fi
123 SPLIT_PACKAGES+=" gcc-c++"
124 CPP_DEPEND="${COMMON_DEPEND}"
125 fi
126
127 if lang_enabled java
128 then
129 SPLIT_PACKAGES+=" libgcj"
130 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
131 then
132 SPLIT_PACKAGES+=" libgcj-dev"
133 fi
134 SPLIT_PACKAGES+=" gcc-gcj"
135 LIBGCJ_DEPEND="${GLIBC_DEPEND}
136 ${ZLIB_DEPEND}"
137 JAVA_DEPEND="${COMMON_DEPEND}
138 >= dev-java/eclipse-ecj-3.6
139 >= dev-java/fastjar-0.98
140 >= sys-apps/file-5
141 >= virtual/unzip
142 >= app-arch/zip-3
143 >= media-libs/alsa-lib-1.1
144 >= x11-libs/libSM-1.2
145 >= x11-libs/libXtst-1.2
146 >= dev-libs/glib2-2.64
147 >= x11-libs/gtk2+-2.24
148 >= media-libs/libart_lgpl-2.3.21"
149
150 # provided java version
151 JAVA_PVER="1.5.0-gcj-1.5.0.0"
152 fi
153
154 if lang_enabled ada
155 then
156 SPLIT_PACKAGES+=" libgnat"
157 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
158 then
159 SPLIT_PACKAGES+=" libgnat-dev"
160 fi
161 SPLIT_PACKAGES+=" gcc-gnat"
162 LIBGNAT_DEPEND="${GLIBC_DEPEND}"
163 ADA_DEPEND="${COMMON_DEPEND}"
164 if [[ ${ADA_BOOTSTRAP} = 1 ]]
165 then
166 GNAT_BIN_x86="gnatboot-7.2-i686.tar.xz"
167 GNAT_BIN_x86_64="gnatboot-7.2-amd64.tar.xz"
168 GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
169 GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
170 SRC_URI+=( mirror://${_BASENAME}/${GNAT_BIN_x86} )
171 SRC_URI+=( mirror://${_BASENAME}/${GNAT_BIN_x86_64} )
172 fi
173 fi
174
175 if lang_enabled fortran
176 then
177 SPLIT_PACKAGES+=" libgfortran"
178 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
179 then
180 SPLIT_PACKAGES+=" libgfortran-dev"
181 fi
182 SPLIT_PACKAGES+=" gcc-gfortran"
183 LIBGFORTRAN_DEPEND="${GLIBC_DEPEND}"
184 FORTRAN_DEPEND="${COMMON_DEPEND}"
185 fi
186
187 if lang_enabled go
188 then
189 SPLIT_PACKAGES+=" libgo"
190 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
191 then
192 SPLIT_PACKAGES+=" libgo-dev"
193 fi
194 SPLIT_PACKAGES+=" gcc-go"
195 LIBGO_DEPEND="${GLIBC_DEPEND}"
196 GO_DEPEND="${COMMON_DEPEND}"
197 fi
198
199 if lang_enabled objc
200 then
201 SPLIT_PACKAGES+=" libobjc"
202 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
203 then
204 SPLIT_PACKAGES+=" libobjc-dev"
205 fi
206 SPLIT_PACKAGES+=" gcc-objc"
207 LIBOBJC_DEPEND="${GLIBC_DEPEND}"
208 OBJC_DEPEND="${COMMON_DEPEND}"
209
210 if lang_enabled obj-c++
211 then
212 SPLIT_PACKAGES+=" gcc-objc++"
213 OBJCPP_DEPEND="${COMMON_DEPEND}"
214 fi
215 fi
216
217 SDEPEND="${LIBGCC_DEPEND}
218 ${LIBGOMP_DEPEND}
219 ${LIBQUADMATH_DEPEND}
220 ${LIBITM_DEPEND}
221 ${LIBATOMIC_DEPEND}
222 ${LIBASAN_DEPEND}
223 ${LIBLSAN_DEPEND}
224 ${LIBUBSAN_DEPEND}
225 ${LIBTSAN_DEPEND}
226 ${LIBVTV_DEPEND}
227 ${LIBSTDCPP_DEPEND}
228 ${GCC_DEPEND}
229 ${CPP_DEPEND}
230 ${LIBGCJ_DEPEND}
231 ${JAVA_DEPEND}
232 ${LIBGNAT_DEPEND}
233 ${ADA_DEPEND}
234 ${LIBGFORTRAN_DEPEND}
235 ${FORTRAN_DEPEND}
236 ${LIBGO_DEPEND}
237 ${GO_DEPEND}
238 ${LIBOBJC_DEPEND}
239 ${OBJC_DEPEND}
240 ${OBJCPP_DEPEND}
241 >= virtual/kernel-headers"
242
243 if lang_enabled ada
244 then
245 if [[ ${ADA_BOOTSTRAP} != 1 ]]
246 then
247 # add gnat to SDEPEND
248 SDEPEND="${SDEPEND}
249 >= sys-dev/gcc-gnat-7.3"
250 fi
251 fi
252
253 if mqueryfeature "check"
254 then
255 # make check needs dejagnu
256 SDEPEND="${SDEPEND}
257 >= dev-util/dejagnu-1.6"
258 fi
259
260 SRCFILE="${_BASENAME}-${PVER}.tar.xz"
261 SRCDIR="${BUILDDIR}/${_BASENAME}-${PVER}"
262
263 ISL_SRCFILE="isl-${ISL_PVER}.tar.bz2"
264 ISL_SRCDIR="${BUILDDIR}/isl-${ISL_PVER}"
265
266 # you better off when not using distcc to compile
267 # your new compiler :) maybe not all are the same
268 msetfeature "!distcc"
269
270 # src_check() takes a very long time, so we dont want to run it at every rebuild
271 # we only run it at the last stage
272 msetfeature "!check"
273
274 SRC_URI=(
275 ${SRC_URI[*]}
276 http://ftp.gwdg.de/pub/misc/${_BASENAME}/releases/${_BASENAME}-${PVER}/${SRCFILE}
277 #gnu://${_BASENAME}/${_BASENAME}-${PVER}/${SRCFILE}
278 http://isl.gforge.inria.fr/${ISL_SRCFILE}
279 mirror://${_BASENAME}/${SRCFILE}
280 mirror://${_BASENAME}/${ISL_SRCFILE}
281 mirror://${_BASENAME}/${_BASENAME}-8.1.0-no-fixincludes.patch
282 mirror://${_BASENAME}/${_BASENAME}-6.1.0-java-no-multilib.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 # generic fixes
748 mpatch ${_BASENAME}-8.1.0-no-fixincludes.patch || die
749 # re-add --enable/disable-libjava-multilib switch
750 #mpatch ${_BASENAME}-6.1.0-java-no-multilib.patch || die
751
752 # suppress installation of libffi, we're using libffi3 instead
753 sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
754 sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
755
756 # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
757 sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure gcc/configure || die
758
759 install -d ${SRCDIR}/build || die
760 }
761
762 src_compile()
763 {
764 if lang_enabled ada
765 then
766 if [[ ${ADA_BOOTSTRAP} = 1 ]]
767 then
768 # export binary gnat pathes
769 export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
770 export CC="${GNAT_BIN_SRCDIR}/usr/bin/gcc"
771 # CPATH is supposed to be applied for any language, thus
772 # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
773 export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
774 export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
775 export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
776 export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
777 export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
778 export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
779
780 # prepare some tools
781 cd ${GNAT_BIN_SRCDIR}
782 cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
783 cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
784 cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
785 cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
786 cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
787 cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
788 cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
789 gnatmake xtreeprs || die
790 gnatmake xsinfo || die
791 gnatmake xeinfo || die
792 gnatmake xnmake || die
793 fi
794 fi
795
796 cd ${SRCDIR}/build
797 local myconf
798
799 # Straight from the GCC install doc:
800 # "GCC has code to correctly determine the correct value for target
801 # for nearly all native systems. Therefore, we highly recommend you
802 # not provide a configure target when configuring a native compiler."
803 if [[ ${CHOST} != ${CTARGET} ]]
804 then
805 myconf+=" --target=${CTARGET}"
806 fi
807
808 if lang_enabled java
809 then
810 myconf+=" --enable-java-awt=gtk
811 --enable-gtk-cairo
812 --enable-libgcj-multifile
813 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
814 --with-fastjar=/usr/bin/fastjar
815 --enable-hash-synchronization"
816 # disable mutilib for java
817 myconf+=" --disable-libjava-multilib"
818 # java home, must be the same of java-gcj-compat
819 myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
820 fi
821
822 if lang_enabled lto
823 then
824 myconf+=" --enable-lto"
825 fi
826
827 # use isl backend
828 myconf+=" --with-isl"
829
830 # install libiberty, as we will NOT using the one from binutils
831 myconf+=" --enable-install-libiberty"
832
833 # no ssp, we use mpx
834 myconf+=" --disable-libssp"
835
836 # hack: just use empty pkgs for x86_64 arch
837 # # enforce vtable verification
838 # myconf+=" --enable-vtable-verify"
839 # myconf+=" --enable-libvtv"
840
841 # enable intel cet + branch tracking (IBT) and shadow stack (SHSTK)
842 myopts+=" --enable-cet=auto"
843
844 # enable gold but use default linker as default
845 #myconf+=" --enable-gold"
846 #myconf+=" --with-plugin-ld=ld.gold"
847 #myconf+=" --enable-ld=default"
848
849 # use the old default c++ abi until LLVM is fixed
850 # later we switch to c++11
851 # see: http://allanmcrae.com/2015/06/the-case-of-gcc-5-1-and-the-two-c-abis/
852 # myconf+=" --with-default-libstdcxx-abi=gcc4-compatible"
853
854 # gcc >= 4.3 has now configure flags for uri and version - yeah!
855 ../configure \
856 --with-bugurl="http://bugs.magellan-linux.de/" \
857 --with-pkgversion="Magellan-Linux" \
858 --build=${CHOST} \
859 --host=${CHOST} \
860 --prefix=/usr \
861 --sbindir=/usr/bin \
862 --mandir=/usr/share/man \
863 --infodir=/usr/share/info \
864 --libdir=/usr/$(mlibdir) \
865 --libexecdir=/usr/$(mlibdir) \
866 --enable-shared \
867 --enable-threads=posix \
868 --enable-__cxa_atexit \
869 --enable-clocale=gnu \
870 --enable-checking=release \
871 --disable-libunwind-exceptions \
872 --with-linker-hash-style=gnu \
873 --with-system-zlib \
874 --enable-languages=${MyLanguages} \
875 --disable-libstdcxx-pch \
876 --enable-gnu-unique-object \
877 --enable-gnu-indirect-function \
878 --enable-plugin \
879 --enable-linker-build-id \
880 --disable-werror \
881 --enable-default-pie \
882 --enable-default-ssp \
883 ${myconf} \
884 || die
885
886 # parallel builds seems to break sometimes on x86_64
887 local myopts
888 #[[ ${ARCH} = x86_64 ]] && myopts="-j1"
889 # always use -j1
890 myopts="-j1"
891
892 # enable bootstrap if requested
893 local target
894 [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
895
896 mmake ${myopts} ${target} || die
897 }
898
899 src_check()
900 {
901 cd ${SRCDIR}/build
902
903 # increase stack size to prevent test failures
904 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
905 ulimit -s 32768
906
907 # do not abort on error as some are "expected"
908 mmake -k check || true
909 # list all
910 ${SRCDIR}/contrib/test_summary
911 # only summary
912 #${SRCDIR}/contrib/test_summary | grep -A7 "Summ"
913 }
914
915 if lang_enabled c
916 then
917 src_install_gcc()
918 {
919 cd ${SRCDIR}/build
920
921 mmake -C gcc DESTDIR=${BINDIR} install-driver || die
922 mmake -C gcc DESTDIR=${BINDIR} install-gcc-ar || die
923 mmake -C gcc DESTDIR=${BINDIR} install-headers || die
924 mmake -C gcc DESTDIR=${BINDIR} install-plugin || die
925
926 # missing bins
927 minstallexec gcc/gcov || die
928 minstallexec gcc/gcov-tool || die
929 minstallexec gcc/cc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
930 minstallexec gcc/collect2 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
931
932 # lto wrapper
933 if lang_enabled lto
934 then
935 mmake -C gcc DESTDIR=${BINDIR} install-lto-wrapper || die
936 minstallexec gcc/lto1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
937 fi
938
939 # install only libgcc crts
940 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install || die
941 mdelete /usr/$(mlibdir)/libgcc_s.so\* || die
942 if [[ $(mlibdir) != lib ]]
943 then
944 mmake -C ${CHOST}/32/libgcc DESTDIR=${BINDIR} install || die
945 mdelete /usr/lib/libgcc_s.so\* || die
946 fi
947
948 # install libcc1
949 mmake DESTDIR=${BINDIR} install-libcc1 || die
950
951 # fixinclude header + scripts
952 mmake DESTDIR=${BINDIR} install-fixincludes || die
953 mmake -C gcc DESTDIR=${BINDIR} install-mkheaders || die
954
955 # lto plugin
956 if lang_enabled lto
957 then
958 mmake -C lto-plugin DESTDIR=${BINDIR} install || die
959 minstalldir /usr/$(mlibdir)/bfd-plugins || die
960 mlink /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/liblto_plugin.so /usr/$(mlibdir)/bfd-plugins/ || die
961 fi
962
963 # library headers: libgomp, libitm, libsanitizer, libasan
964 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
965 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
966 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
967 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
968 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
969 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
970 mmake -C ${CHOST}/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
971 if [[ $(mlibdir) != lib ]]
972 then
973 mmake -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
974 mmake -C ${CHOST}/32/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
975 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
976 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
977 mmake -C ${CHOST}/32/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
978 fi
979
980 # install libiberty
981 mmake -C libiberty DESTDIR=${BINDIR} install || die
982 # install PIC version of libiberty
983 minstallfile libiberty/pic/libiberty.a /usr/$(mlibdir) || die
984
985 # man and info pages
986 mmake -C gcc DESTDIR=${BINDIR} install-man || die
987 mmake -C gcc DESTDIR=${BINDIR} install-info || die
988 # provided by split-packages
989 if lang_enabled c++
990 then
991 mdelete /usr/share/man/man1/cpp.1 || die
992 mdelete /usr/share/man/man1/g++.1 || die
993 mdelete /usr/share/info/cpp.info || die
994 mdelete /usr/share/info/cppinternals.info || die
995 fi
996 if lang_enabled go
997 then
998 mdelete /usr/share/man/man1/gccgo.1 || die
999 mdelete /usr/share/info/gccgo.info || die
1000 fi
1001 if lang_enabled fortran
1002 then
1003 mdelete /usr/share/man/man1/gfortran.1 || die
1004 mdelete /usr/share/info/gfortran.info || die
1005 fi
1006 if lang_enabled ada
1007 then
1008 mdelete /usr/share/info/gnat-style.info || die
1009 mdelete /usr/share/info/gnat_rm.info || die
1010 mdelete /usr/share/info/gnat_ugn.info || die
1011 fi
1012
1013 # install gcc locales
1014 mmake -C gcc DESTDIR=${BINDIR} install-po || die
1015
1016 # install posix conformance launcher scripts for c89 and c99
1017 cat > ${BINDIR}/usr/bin/c89 <<"EOF"
1018 #!/bin/sh
1019 fl="-std=c89"
1020 for opt
1021 do
1022 case "$opt" in
1023 -ansi|-std=c89|-std=iso9899:1990)
1024 fl=""
1025 ;;
1026 -std=*)
1027 echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
1028 exit 1
1029 ;;
1030 esac
1031 done
1032 exec gcc $fl ${1+"$@"}
1033 EOF
1034 cat > ${BINDIR}/usr/bin/c99 <<"EOF"
1035 #!/bin/sh
1036 fl="-std=c99"
1037 for opt
1038 do
1039 case "$opt" in
1040 -std=c99|-std=iso9899:1999)
1041 fl=""
1042 ;;
1043 -std=*)
1044 echo "`basename $0` called with non ISO C99 option $opt" >&2
1045 exit 1
1046 ;;
1047 esac
1048 done
1049 exec gcc $fl ${1+"$@"}
1050 EOF
1051 mchmod 0755 /usr/bin/c89 || die
1052 mchmod 0755 /usr/bin/c99 || die
1053
1054 # versionize all bins and symlink them
1055 versionize_all_bins || die
1056 mlink gcc-${PVER} /usr/bin/cc || die
1057
1058 # fix all .la files
1059 # they may contain invalid libpathes which are not needed
1060 local la
1061 for la in $(find ${BINDIR} -name \*.la)
1062 do
1063 fix_la_file ${la} || die ${la}
1064 done
1065
1066 # remove /lib dirs to be usr-move compat
1067 if [[ -d ${BINDIR}/$(mlibdir) ]]
1068 then
1069 mdelete -r /$(mlibdir) || die
1070 fi
1071 if [[ $(mlibdir) != lib ]]
1072 then
1073 if [[ -d ${BINDIR}/lib ]]
1074 then
1075 mdelete -r /lib || die
1076 fi
1077 fi
1078 }
1079 fi
1080
1081 if lang_enabled c++
1082 then
1083 src_install_gcc-c++()
1084 {
1085 cd ${SRCDIR}/build
1086
1087 mmake -C gcc DESTDIR=${BINDIR} install-cpp || die
1088 mmake -C gcc DESTDIR=${BINDIR} c++.install-common || die
1089
1090 # missing bins
1091 minstallexec gcc/cc1plus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1092
1093 # install libstdc++ files
1094 mmake -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1095 mmake -C ${CHOST}/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1096 mmake -C ${CHOST}/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1097 mmake -C ${CHOST}/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1098 if [[ $(mlibdir) != lib ]]
1099 then
1100 mmake -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1101 mmake -C ${CHOST}/32/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1102 mmake -C ${CHOST}/32/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1103 mmake -C ${CHOST}/32/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1104 fi
1105 # move gdb scripts to a proper location and to pretty-print ldconfig
1106 minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
1107 mmove ${BINDIR}/usr/$(mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
1108 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
1109 then
1110 minstalldir /usr/share/gdb/auto-load/usr/lib || die
1111 mmove ${BINDIR}/usr/lib/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/lib/ || die
1112 fi
1113 # only keep static libstdcc++ lib
1114 mdelete /usr/$(mlibdir)/libstdc++.so\* || die
1115 if [[ $(mlibdir) != lib ]]
1116 then
1117 mdelete /usr/lib/libstdc++.so\* || die
1118 fi
1119
1120 # man and info pages
1121 mmake -C gcc DESTDIR=${BINDIR} install-man || die
1122 mmake -C gcc DESTDIR=${BINDIR} install-info || die
1123 # provided by split-packages
1124 if lang_enabled c
1125 then
1126 mdelete /usr/share/man/man1/gcc.1 || die
1127 mdelete /usr/share/man/man1/gcov.1 || die
1128 mdelete /usr/share/man/man1/gcov-dump.1 || die
1129 mdelete /usr/share/man/man1/gcov-tool.1 || die
1130 mdelete -r /usr/share/man/man7 || die
1131 mdelete /usr/share/info/gcc.info || die
1132 mdelete /usr/share/info/gccinstall.info || die
1133 mdelete /usr/share/info/gccint.info || die
1134 fi
1135 if lang_enabled go
1136 then
1137 mdelete /usr/share/man/man1/gccgo.1 || die
1138 mdelete /usr/share/info/gccgo.info || die
1139 fi
1140 if lang_enabled fortran
1141 then
1142 mdelete /usr/share/man/man1/gfortran.1 || die
1143 mdelete /usr/share/info/gfortran.info || die
1144 fi
1145 if lang_enabled ada
1146 then
1147 mdelete /usr/share/info/gnat-style.info || die
1148 mdelete /usr/share/info/gnat_rm.info || die
1149 mdelete /usr/share/info/gnat_ugn.info || die
1150 fi
1151
1152 # install libcpp locales
1153 mmake -C libcpp DESTDIR=${BINDIR} install || die
1154
1155 # versionize all bins and symlink them
1156 versionize_all_bins || die
1157
1158 mlink ../bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
1159 # this one is needed on multilib systems.
1160 # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
1161 if [[ $(mlibdir) != lib ]]
1162 then
1163 minstalldir /usr/lib || die
1164 mlink ../bin/cpp-${PVER} /usr/lib/cpp || die
1165 fi
1166
1167 # fix all .la files
1168 # they may contain invalid libpathes which are not needed
1169 local la
1170 for la in $(find ${BINDIR} -name \*.la)
1171 do
1172 fix_la_file ${la} || die ${la}
1173 done
1174
1175 # remove /lib dirs to be usr-move compat
1176 if [[ -d ${BINDIR}/$(mlibdir) ]]
1177 then
1178 mdelete -r /$(mlibdir) || die
1179 fi
1180 if [[ $(mlibdir) != lib ]]
1181 then
1182 if [[ -d ${BINDIR}/lib ]]
1183 then
1184 mdelete -r /lib || die
1185 fi
1186 fi
1187 }
1188 fi
1189
1190 if lang_enabled c
1191 then
1192 src_install_libgcc-common()
1193 {
1194 cd ${SRCDIR}/build
1195 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
1196 if [[ $(mlibdir) != lib ]]
1197 then
1198 mmake -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
1199 fi
1200 mdelete -r /usr/$(mlibdir)/gcc || die
1201 }
1202
1203 src_install_libgcc()
1204 {
1205 src_install_libgcc-common || die
1206 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1207 then
1208 keep_dev_package_libs 'libgcc_s.so.*' || die
1209 fi
1210 }
1211
1212 src_install_libgcc-dev()
1213 {
1214 src_install_libgcc-common || die
1215 delete_dev_package_libs 'libgcc_s.so.*' || die
1216 }
1217
1218 src_install_libgomp-common()
1219 {
1220 install_gcc_library "libgomp" || die
1221 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
1222 }
1223
1224 src_install_libgomp()
1225 {
1226 src_install_libgomp-common || die
1227 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1228 then
1229 keep_dev_package_libs 'libgomp.so.*' || die
1230 fi
1231 }
1232
1233 src_install_libgomp-dev()
1234 {
1235 src_install_libgomp-common || die
1236 delete_dev_package_libs 'libgomp.so.*' || die
1237 }
1238
1239 src_install_libquadmath-common()
1240 {
1241 install_gcc_library "libquadmath" || die
1242 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-info || die
1243 }
1244
1245 src_install_libquadmath()
1246 {
1247 src_install_libquadmath-common || die
1248 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1249 then
1250 keep_dev_package_libs 'libquadmath.so.*' || die
1251 fi
1252 }
1253
1254 src_install_libquadmath-dev()
1255 {
1256 src_install_libquadmath-common || die
1257 delete_dev_package_libs 'libquadmath.so.*' || die
1258 }
1259
1260 src_install_libitm-common()
1261 {
1262 install_gcc_library "libitm"
1263 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-info || die
1264 }
1265
1266 src_install_libitm()
1267 {
1268 src_install_libitm-common || die
1269 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1270 then
1271 keep_dev_package_libs 'libitm.so.*' || die
1272 fi
1273 }
1274
1275 src_install_libitm-dev()
1276 {
1277 src_install_libitm-common || die
1278 delete_dev_package_libs 'libitm.so.*' || die
1279 }
1280
1281 src_install_libatomic-common()
1282 {
1283 install_gcc_library "libatomic" || die
1284 }
1285
1286 src_install_libatomic()
1287 {
1288 src_install_libatomic-common || die
1289 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1290 then
1291 keep_dev_package_libs 'libatomic.so.*' || die
1292 fi
1293 }
1294
1295 src_install_libatomic-dev()
1296 {
1297 src_install_libatomic-common || die
1298 delete_dev_package_libs 'libatomic.so.*' || die
1299 }
1300
1301 src_install_libasan-common()
1302 {
1303 install_gcc_library "libsanitizer/asan" || die
1304 }
1305
1306 src_install_libasan()
1307 {
1308 src_install_libasan-common || die
1309 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1310 then
1311 keep_dev_package_libs 'libasan.so.*' || die
1312 fi
1313 }
1314
1315 src_install_libasan-dev()
1316 {
1317 src_install_libasan-common || die
1318 delete_dev_package_libs 'libasan.so.*' || die
1319 }
1320
1321 src_install_liblsan-common()
1322 {
1323 install_gcc_library "libsanitizer/lsan" || die
1324 }
1325
1326 src_install_liblsan()
1327 {
1328 src_install_liblsan-common || die
1329 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1330 then
1331 keep_dev_package_libs 'liblsan.so.*' || die
1332 fi
1333 }
1334
1335 src_install_liblsan-dev()
1336 {
1337 src_install_liblsan-common || die
1338 delete_dev_package_libs 'liblsan.so.*' || die
1339 }
1340
1341 src_install_libubsan-common()
1342 {
1343 install_gcc_library "libsanitizer/ubsan" || die
1344 }
1345
1346 src_install_libubsan()
1347 {
1348 src_install_libubsan-common || die
1349 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1350 then
1351 keep_dev_package_libs 'libubsan.so.*' || die
1352 fi
1353 }
1354
1355 src_install_libubsan-dev()
1356 {
1357 src_install_libubsan-common || die
1358 delete_dev_package_libs 'libubsan.so.*' || die
1359 }
1360
1361 src_install_libtsan-common()
1362 {
1363 install_gcc_library "libsanitizer/tsan" || die
1364 }
1365
1366 src_install_libtsan()
1367 {
1368 src_install_libtsan-common || die
1369 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1370 then
1371 keep_dev_package_libs 'libtsan.so.*' || die
1372 fi
1373 }
1374 src_install_libtsan-dev()
1375 {
1376 src_install_libtsan-common || die
1377 delete_dev_package_libs 'libtsan.so.*' || die
1378 }
1379
1380 src_install_libvtv-common()
1381 {
1382 # hack - always create the bindir to get empty pkgs at least on x86_64 platforms
1383 install -d ${BINDIR} || die
1384
1385 install_gcc_library "libvtv" || die
1386 }
1387
1388 src_install_libvtv()
1389 {
1390 src_install_libvtv-common || die
1391 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1392 then
1393 keep_dev_package_libs 'libvtv.so.*' || die
1394 fi
1395 }
1396
1397 src_install_libvtv-dev()
1398 {
1399 src_install_libvtv-common || die
1400 delete_dev_package_libs 'libvtv.so.*' || die
1401 }
1402 fi
1403
1404 if lang_enabled c++
1405 then
1406 src_install_libstdc++-common()
1407 {
1408 install_gcc_library "libstdc++-v3/src" || die
1409 mmake -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
1410 }
1411
1412 src_install_libstdc++()
1413 {
1414 src_install_libstdc++-common || die
1415 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1416 then
1417 keep_dev_package_libs 'libstdc++.so.*' || die
1418 fi
1419 }
1420
1421 src_install_libstdc++-dev()
1422 {
1423 src_install_libstdc++-common || die
1424 delete_dev_package_libs 'libstdc++.so.*' || die
1425 }
1426 fi
1427
1428 if lang_enabled java
1429 then
1430 src_install_libgcj-common()
1431 {
1432 install_gcc_library "libjava"
1433 }
1434
1435 src_install_libgcj()
1436 {
1437 src_install_libgcj-common || die
1438 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1439 then
1440 keep_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1441 fi
1442 }
1443
1444 src_install_libgcj-dev()
1445 {
1446 src_install_libgcj-common || die
1447 delete_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1448 }
1449
1450 src_install_gcc-gcj()
1451 {
1452 cd ${SRCDIR}/build
1453
1454 # install only java targets
1455 make -C ${CHOST}/libjava DESTDIR=${BINDIR} install || die
1456 make -C gcc DESTDIR=${BINDIR} java.install-common || die
1457 make -C gcc DESTDIR=${BINDIR} java.install-man || die
1458
1459 # missing bins
1460 minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1461 minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1462
1463 # remove libraries and files already included elsewhere
1464 uninstall_gcc_library "libjava" || die
1465 mdelete /usr/$(mlibdir)/libgcj_bc.so\* || die
1466 if [[ $(mlibdir) != lib ]]
1467 then
1468 # with >= gcc-6.1 this one only applies when libjava was a mulitlib build
1469 if [[ -d ${CHOST}/32/libjava ]]
1470 then
1471 mmake -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1472 mdelete /usr/lib/libgcj_bc.so\* || die
1473 fi
1474 fi
1475
1476 # versionize all bins and symlink them
1477 versionize_all_bins || die
1478 }
1479 fi
1480
1481 if lang_enabled ada
1482 then
1483 # gnat so-lib version
1484 solib_ver="$(echo ${PVER} | cut -d'.' -f1)"
1485
1486 src_install_libgnat-common()
1487 {
1488 cd ${SRCDIR}/build
1489 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1490 if [[ $(mlibdir) != lib ]]
1491 then
1492 # install 32bit libgnat
1493 # make tries to execute the libs, which fails
1494 # we override the INSTALL commands to *not* do that
1495 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-libada || die
1496 fi
1497 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
1498
1499 # move so-libs to the right location
1500 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so /usr/$(mlibdir) || die
1501 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so /usr/$(mlibdir) || die
1502 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1503 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1504 mlink libgnarl-${solib_ver}.so /usr/$(mlibdir)/libgnarl.so || die
1505 mlink libgnat-${solib_ver}.so /usr/$(mlibdir)/libgnat.so || die
1506 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so || die
1507 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so || die
1508 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1509 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1510
1511 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1512
1513 if [[ $(mlibdir) != lib ]]
1514 then
1515 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
1516
1517 # move so-libs to the right location
1518 minstalldir /usr/lib || die
1519 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so /usr/lib || die
1520 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so /usr/lib || die
1521 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1522 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1523 mlink libgnarl-${solib_ver}.so /usr/lib/libgnarl.so || die
1524 mlink libgnat-${solib_ver}.so /usr/lib/libgnat.so || die
1525 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so || die
1526 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so || die
1527 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1528 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1529
1530 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1531 fi
1532
1533 # remove other
1534 mdelete -r /usr/bin || die
1535 }
1536
1537 src_install_libgnat()
1538 {
1539 src_install_libgnat-common || die
1540 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1541 then
1542 keep_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1543 fi
1544 }
1545
1546 src_install_libgnat-dev()
1547 {
1548 src_install_libgnat-common || die
1549 delete_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1550 }
1551
1552 src_install_gcc-gnat()
1553 {
1554 cd ${SRCDIR}/build
1555 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1556 if [[ $(mlibdir) != lib ]]
1557 then
1558 # install 32bit libgnat
1559 # make tries to execute the libs, which fails
1560 # we override the INSTALL commands to *not* do that
1561 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-libada || die
1562 fi
1563 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
1564 minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
1565
1566 # remove libraries already included elsewhere
1567 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl\*.\* || die
1568 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat\*.\* || die
1569 if [[ $(mlibdir) != lib ]]
1570 then
1571 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl\*.\* || die
1572 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat\*.\* || die
1573 fi
1574
1575 # versionize all bins and symlink them
1576 versionize_all_bins || die
1577 }
1578 fi
1579
1580 if lang_enabled fortran
1581 then
1582 src_install_libgfortran-common()
1583 {
1584 install_gcc_library "libquadmath"
1585 install_gcc_library "libgfortran"
1586 uninstall_gcc_library "libquadmath"
1587 }
1588
1589 src_install_libgfortran()
1590 {
1591 src_install_libgfortran-common || die
1592 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1593 then
1594 keep_dev_package_libs 'libgfortran.so.*' || die
1595 fi
1596 }
1597
1598 src_install_libgfortran-dev()
1599 {
1600 src_install_libgfortran-common || die
1601 delete_dev_package_libs 'libgfortran.so.*' || die
1602 }
1603
1604 src_install_gcc-gfortran()
1605 {
1606 cd ${SRCDIR}/build
1607
1608 # omp headers needed by fortran
1609 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1610 # libcafsingle
1611 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1612 if [[ $(mlibdir) != lib ]]
1613 then
1614 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1615 fi
1616 # only included in <= gcc-6.1
1617 if [[ ${PVER} < 6 ]]
1618 then
1619 #libgfortranbegin
1620 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1621 if [[ $(mlibdir) != lib ]]
1622 then
1623 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1624 fi
1625 fi
1626 # spec file
1627 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1628 if [[ $(mlibdir) != lib ]]
1629 then
1630 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1631 fi
1632 # finclude headers
1633 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1634 if [[ $(mlibdir) != lib ]]
1635 then
1636 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1637 fi
1638 # binaries
1639 mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
1640 mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
1641 mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
1642 # missing binaries
1643 minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
1644 mlink gfortran /usr/bin/f95 || die
1645
1646 # versionize all bins and symlink them
1647 versionize_all_bins || die
1648 }
1649 fi
1650
1651 if lang_enabled go
1652 then
1653 src_install_libgo-common()
1654 {
1655 install_gcc_library "libgo" || die
1656 }
1657
1658 src_install_libgo()
1659 {
1660 src_install_libgo-common || die
1661 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1662 then
1663 keep_dev_package_libs 'libgo.so.*' || die
1664 fi
1665 }
1666
1667 src_install_libgo-dev()
1668 {
1669 src_install_libgo-common || die
1670 delete_dev_package_libs 'libgo.so.*' || die
1671 }
1672
1673 src_install_gcc-go()
1674 {
1675 cd ${SRCDIR}/build
1676 mmake DESTDIR=${BINDIR} install-target-libgo || die
1677 mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
1678 mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
1679 mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
1680 minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1681
1682 # remove libraries already included elsewhere
1683 uninstall_gcc_library "libgo" || die
1684 uninstall_gcc_library "libatomic" || die
1685
1686 # versionize all bins and symlink them
1687 versionize_all_bins || die
1688 }
1689 fi
1690
1691 if lang_enabled objc
1692 then
1693 src_install_libobjc-common()
1694 {
1695 install_gcc_library "libobjc" || die
1696 }
1697
1698 src_install_libobjc()
1699 {
1700 cd ${SRCDIR}/build
1701 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1702 if [[ $(mlibdir) != lib ]]
1703 then
1704 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1705 fi
1706
1707 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1708 then
1709 keep_dev_package_libs 'libobjc.so.*' || die
1710 fi
1711 }
1712
1713 src_install_libobjc-dev()
1714 {
1715 cd ${SRCDIR}/build
1716 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1717 if [[ $(mlibdir) != lib ]]
1718 then
1719 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1720 fi
1721 delete_dev_package_libs 'libobjc.so.*' || die
1722 }
1723
1724 src_install_gcc-objc()
1725 {
1726 cd ${SRCDIR}/build
1727 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
1728 if [[ $(mlibdir) != lib ]]
1729 then
1730 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
1731 fi
1732 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1733 minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1734 }
1735
1736 if lang_enabled obj-c++
1737 then
1738 src_install_gcc-objc++()
1739 {
1740 cd ${SRCDIR}/build
1741 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1742 minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1743 }
1744 fi
1745 fi