Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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