Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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