Magellan Linux

Contents of /trunk/core/gcc/gcc-8.2.0-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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