Magellan Linux

Contents of /trunk/core/gcc/gcc-7.1.0-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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