Magellan Linux

Contents of /smage/branches/alx08x-stable/core/gcc/gcc-13.1.0-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 16673 - (show annotations) (download)
Fri Oct 6 16:20:35 2023 UTC (8 months, 1 week ago) by niro
File size: 58166 byte(s)
-release branches/alx08x-stable
1 # $Id$
2
3 PNAME="gcc"
4 PVER="13.1.0"
5 PBUILD="r2"
6
7 # package base name
8 _BASENAME="gcc"
9
10 PCAT="sys-dev"
11 HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
12
13 sminclude mtools cleanutils libtool gcc-toolchain rpath
14
15 # packages which needs rebuild: libtool, java-gcj-compat, llvm
16
17 # languages to build into gcc
18 # options are: c,c++,ada,fortran,go,objc,obj-c++,lto,jit,d
19 # obj-c++ requires objc
20 # c++ requires c and lto
21 # c always goes along with lto
22 # gcc required minimum are c,c++,lto
23 #
24 # while toolchain bootstrap, only build c,c++ and after that rebuild the whole toolchain:
25 # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
26 #
27 MyLanguages=c,c++,lto
28 # todo ada, d (libphobos)
29
30 # 1=bootstrap the whole gcc suite, using bootstrap-lean method
31 # 0=no bootstrap, use this only for quick builds to test something but never for release
32 GCC_BOOTSTRAP="1"
33
34 # 1=bootstrap ada, using precompiled gnat binaries
35 # 0=no bootstrap, build ada with system gnat - requires sys-dev/gcc-gnat
36 ADA_BOOTSTRAP="0"
37
38 # 1=bootstrap d, using precompiled gcc-d binaries
39 # 0=no bootstrap, build d with system gcc-d - requires sys-dev/gcc-d
40 D_BOOTSTRAP="0"
41
42 # 1=enable lib32 split packages
43 # 0=disable lib32 split packages
44 ENABLE_LIB32_PACKAGES="1"
45
46 # 1=enable dev split packages
47 # 0=disable dev split packages
48 ENABLE_DEV_PACKAGES="1"
49
50 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
51 then
52 sminclude lib32-split
53 fi
54
55 # empty default
56 SPLIT_PACKAGES=""
57
58 GLIBC_DEPEND=">= virtual/glibc"
59 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
60 then
61 GLIBC_LIB32_DEPEND=">= virtual/glibc-lib32"
62 fi
63 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
64 then
65 GLIBC_DEV_DEPEND=">= virtual/glibc-dev"
66 fi
67 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
68 then
69 ZLIB_DEPEND=">= sys-libs/zlib-1.2.13"
70 fi
71 ZLIB_LIB32_DEPEND=">= sys-libs/zlib-lib32-1.2.13"
72 COMMON_DEPEND="${GLIBC_DEPEND}
73 ${ZLIB_DEPEND}
74 >= dev-libs/gmp-6.2
75 >= dev-libs/mpfr-4.2
76 >= dev-libs/mpc-1.2
77 >= dev-libs/isl-0.24"
78 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
79 then
80 COMMON_DEPEND="${GLIBC_LIB32_DEPEND}
81 ${ZLIB_LIB32_DEPEND}
82 >= dev-libs/gmp-lib32-6.2"
83 fi
84 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
85 then
86 COMMON_DEPEND="${COMMON_DEPEND}
87 >= dev-libs/gmp-dev-6.2"
88 fi
89
90 # special handling for libtsan/liblsan, only x86-64
91 DEPEND_x86_64="== sys-libs/libtsan-${PVER}
92 == sys-libs/liblsan-${PVER}"
93 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
94 then
95 DEPEND_x86_64="${DEPEND_x86_64}
96 == sys-libs/libtsan-dev-${PVER}
97 == sys-libs/liblsan-dev-${PVER}"
98 fi
99 SPECIAL_VARS="DEPEND_x86_64"
100
101 if lang_enabled c
102 then
103 SPLIT_PACKAGES+="libgcc libgomp libquadmath libitm libatomic libasan libubsan libvtv"
104 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
105 then
106 SPLIT_PACKAGES+=" libgcc-lib32 libgomp-lib32 libquadmath-lib32 libitm-lib32 libatomic-lib32 libasan-lib32 libubsan-lib32 libvtv-lib32"
107 fi
108 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
109 then
110 SPLIT_PACKAGES+=" libgcc-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libasan-dev libubsan-dev libvtv-dev"
111 fi
112 # thread/leak sanitizer is only available on x86_64
113 if [[ ${ARCH} = x86_64 ]]
114 then
115 SPLIT_PACKAGES+=" libtsan liblsan"
116 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
117 then
118 SPLIT_PACKAGES+=" libtsan-dev liblsan-dev"
119 fi
120 fi
121 SPLIT_PACKAGES+=" gcc"
122
123 LIBGCC_DEPEND="${GLIBC_DEPEND}"
124 LIBGOMP_DEPEND="${GLIBC_DEPEND}"
125 LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
126 LIBITM_DEPEND="${GLIBC_DEPEND}"
127 LIBATOMIC_DEPEND="${GLIBC_DEPEND}"
128 LIBASAN_DEPEND="${GLIBC_DEPEND}"
129 LIBLSAN_DEPEND="${GLIBC_DEPEND}"
130 LIBUBSAN_DEPEND="${GLIBC_DEPEND}"
131 LIBTSAN_DEPEND="${GLIBC_DEPEND}"
132 LIBVTV_DEPEND="${GLIBC_DEPEND}"
133 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
134 then
135 LIBGCC_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
136 LIBGOMP_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
137 LIBQUADMATH_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
138 LIBITM_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
139 LIBATOMIC_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
140 LIBASAN_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
141 LIBLSAN_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
142 LIBUBSAN_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
143 LIBTSAN_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
144 LIBVTV_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
145 fi
146 GCC_DEPEND="${COMMON_DEPEND}
147 >= sys-dev/binutils-2.40
148 >= dev-libs/elfutils-0.189"
149 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
150 then
151 GCC_DEPEND="${GCC_DEPEND}
152 ${GLIBC_LIB32_DEPEND}
153 >= sys-libs/libelf-0.189
154 >= dev-libs/elfutils-libs-lib32-0.189"
155 fi
156 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
157 then
158 GCC_DEPEND="${GCC_DEPEND}
159 ${GLIBC_DEV_DEPEND}"
160 fi
161 fi
162
163 if lang_enabled c++
164 then
165 SPLIT_PACKAGES+=" libstdc++"
166 LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
167 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
168 then
169 SPLIT_PACKAGES+=" libstdc++-lib32"
170 LIBSTDCPP_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
171 fi
172 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
173 then
174 SPLIT_PACKAGES+=" libstdc++-dev"
175 fi
176 SPLIT_PACKAGES+=" gcc-c++"
177 CPP_DEPEND="${COMMON_DEPEND}"
178 fi
179
180 if lang_enabled ada
181 then
182 SPLIT_PACKAGES+=" libgnat"
183 LIBGNAT_DEPEND="${GLIBC_DEPEND}"
184 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
185 then
186 SPLIT_PACKAGES+=" libgnat-lib32"
187 LIBGNAT_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
188 fi
189 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
190 then
191 SPLIT_PACKAGES+=" libgnat-dev"
192 fi
193 SPLIT_PACKAGES+=" gcc-gnat"
194 ADA_DEPEND="${COMMON_DEPEND}"
195 if [[ ${ADA_BOOTSTRAP} = 1 ]]
196 then
197 GNAT_BIN_x86="gnatboot-7.2-i686.tar.xz"
198 GNAT_BIN_x86_64="gnatboot-7.2-amd64.tar.xz"
199 GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
200 GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
201 SRC_URI+=( mirror://${_BASENAME}/${GNAT_BIN_x86} )
202 SRC_URI+=( mirror://${_BASENAME}/${GNAT_BIN_x86_64} )
203 fi
204 fi
205
206 if lang_enabled fortran
207 then
208 SPLIT_PACKAGES+=" libgfortran"
209 LIBGFORTRAN_DEPEND="${GLIBC_DEPEND}"
210 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
211 then
212 SPLIT_PACKAGES+=" libgfortran-lib32"
213 LIBGFORTRAN_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
214 fi
215 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
216 then
217 SPLIT_PACKAGES+=" libgfortran-dev"
218 fi
219 SPLIT_PACKAGES+=" gcc-gfortran"
220 FORTRAN_DEPEND="${COMMON_DEPEND}"
221 fi
222
223 if lang_enabled go
224 then
225 SPLIT_PACKAGES+=" libgo"
226 LIBGO_DEPEND="${GLIBC_DEPEND}"
227 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
228 then
229 SPLIT_PACKAGES+=" libgo-lib32"
230 LIBGO_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
231 fi
232 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
233 then
234 SPLIT_PACKAGES+=" libgo-dev"
235 fi
236 SPLIT_PACKAGES+=" gcc-go"
237 GO_DEPEND="${COMMON_DEPEND}"
238 fi
239
240 if lang_enabled objc
241 then
242 SPLIT_PACKAGES+=" libobjc"
243 LIBOBJC_DEPEND="${GLIBC_DEPEND}"
244 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
245 then
246 SPLIT_PACKAGES+=" libobjc-lib32"
247 LIBOBJC_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
248 fi
249 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
250 then
251 SPLIT_PACKAGES+=" libobjc-dev"
252 fi
253 SPLIT_PACKAGES+=" gcc-objc"
254 OBJC_DEPEND="${COMMON_DEPEND}"
255
256 if lang_enabled obj-c++
257 then
258 SPLIT_PACKAGES+=" gcc-objc++"
259 OBJCPP_DEPEND="${COMMON_DEPEND}"
260 fi
261 fi
262
263 if lang_enabled lto
264 then
265 SPLIT_PACKAGES+=" lto-dump"
266 fi
267
268 if lang_enabled jit
269 then
270 SPLIT_PACKAGES+=" libgccjit"
271 fi
272
273 if lang_enabled d
274 then
275 SPLIT_PACKAGES+=" libphobos"
276 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
277 then
278 SPLIT_PACKAGES+=" libphobos-lib32"
279 LIBPHOBOS_LIB32_DEPEND="${GLIBC_LIB32_DEPEND}"
280 fi
281 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
282 then
283 SPLIT_PACKAGES+=" libphobos-dev"
284 fi
285 SPLIT_PACKAGES+=" gcc-d"
286 D_DEPEND="${COMMON_DEPEND}"
287 fi
288
289 SDEPEND="${LIBGCC_DEPEND}
290 ${LIBGOMP_DEPEND}
291 ${LIBQUADMATH_DEPEND}
292 ${LIBITM_DEPEND}
293 ${LIBATOMIC_DEPEND}
294 ${LIBASAN_DEPEND}
295 ${LIBLSAN_DEPEND}
296 ${LIBUBSAN_DEPEND}
297 ${LIBTSAN_DEPEND}
298 ${LIBVTV_DEPEND}
299 ${LIBSTDCPP_DEPEND}
300 ${GCC_DEPEND}
301 ${CPP_DEPEND}
302 ${LIBGCJ_DEPEND}
303 ${LIBGNAT_DEPEND}
304 ${ADA_DEPEND}
305 ${LIBGFORTRAN_DEPEND}
306 ${FORTRAN_DEPEND}
307 ${LIBGO_DEPEND}
308 ${GO_DEPEND}
309 ${LIBOBJC_DEPEND}
310 ${OBJC_DEPEND}
311 ${OBJCPP_DEPEND}
312 ${LIBPHOBOS_DEPEND}
313 ${D_DEPEND}
314 >= virtual/kernel-headers"
315
316 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
317 then
318 SDEPEND="${LIBGCC_LIB32_DEPEND}
319 ${LIBGOMP_LIB32_DEPEND}
320 ${LIBQUADMATH_LIB32_DEPEND}
321 ${LIBITM_LIB32_DEPEND}
322 ${LIBATOMIC_LIB32_DEPEND}
323 ${LIBASAN_LIB32_DEPEND}
324 ${LIBUBSAN_LIB32_DEPEND}
325 ${LIBVTV_LIB32_DEPEND}
326 ${LIBSTDCPP_LIB32_DEPEND}
327 ${LIBGCJ_LIB32_DEPEND}
328 ${LIBGNAT_LIB32_DEPEND}
329 ${LIBGFORTRAN_LIB32_DEPEND}
330 ${LIBGO_LIB32_DEPEND}
331 ${LIBOBJC_LIB32_DEPEND}
332 ${LIBPHOBOS_LIB32_DEPEND}"
333 fi
334
335 if lang_enabled ada
336 then
337 if [[ ${ADA_BOOTSTRAP} != 1 ]]
338 then
339 # add gnat to SDEPEND
340 SDEPEND="${SDEPEND}
341 >= sys-dev/gcc-gnat-7.3"
342 fi
343 fi
344
345 if lang_enabled d
346 then
347 if [[ ${D_BOOTSTRAP} != 1 ]]
348 then
349 # add gnat to SDEPEND
350 SDEPEND="${SDEPEND}
351 >= sys-dev/gcc-d-12"
352 fi
353 fi
354
355 if mqueryfeature "check"
356 then
357 # make check needs dejagnu
358 SDEPEND="${SDEPEND}
359 >= dev-util/dejagnu-1.6"
360 fi
361
362 SRCFILE="${_BASENAME}-${PVER}.tar.xz"
363 SRCDIR="${BUILDDIR}/${_BASENAME}-${PVER}"
364
365 # you better off when not using distcc to compile
366 # your new compiler :) maybe not all are the same
367 msetfeature "!distcc"
368
369 # src_check() takes a very long time, so we dont want to run it at every rebuild
370 # we only run it at the last stage
371 msetfeature "!check"
372
373 SRC_URI=(
374 ${SRC_URI[*]}
375 http://ftp.gwdg.de/pub/misc/${_BASENAME}/releases/${_BASENAME}-${PVER}/${SRCFILE}
376 #gnu://${_BASENAME}/${_BASENAME}-${PVER}/${SRCFILE}
377 mirror://${_BASENAME}/${SRCFILE}
378 )
379
380 UP2DATE="updatecmd 'https://ftp.gnu.org/gnu/${PNAME}/' | utf8encode | grep '\[DIR\].*${PNAME}' | sed 's:.*${PNAME}-\(.*\)/.*:\1:' | upsort_pipe"
381
382 # gcc don't like strong CFLAGS
383 #export CFLAGS="${CFLAGS//-O?} -O2"
384 #export CXXFLAGS="${CFLAGS}"
385
386 # from archlinux
387 # Credits @allanmcrae
388 # https://github.com/allanmcrae/toolchain/blob/f18604d70c5933c31b51a320978711e4e6791cf1/gcc/PKGBUILD
389 # TODO: properly deal with the build issues resulting from this
390 export CFLAGS="${CFLAGS/-Werror=format-security/}"
391 export CXXFLAGS="${CXXFLAGS/-Werror=format-security/}"
392
393 # check for crosscompile or export default CHOST
394 #if [[ -z ${CTARGET} ]]
395 #then
396 # # no crosscompile defined
397 # export CTARGET=${CHOST}
398 #else
399 # # use crosscompile host
400 # export CTARGET=${CTARGET}
401 #fi
402
403 if lang_enabled c
404 then
405 split_info_gcc()
406 {
407 DESCRIPTION="Modern C compiler written by the GNU people."
408
409 DEPEND="== sys-libs/libgcc-${PVER}
410 == sys-libs/libgomp-${PVER}
411 == sys-libs/libquadmath-${PVER}
412 == sys-libs/libitm-${PVER}
413 == sys-libs/libatomic-${PVER}
414 == sys-libs/libasan-${PVER}
415 == sys-libs/libubsan-${PVER}
416 == sys-libs/libvtv-${PVER}
417 $(marchdepend)
418 ${GCC_DEPEND}"
419
420 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
421 then
422 DEPEND="${DEPEND}
423 == sys-libs/libgcc-lib32-${PVER}
424 == sys-libs/libgomp-lib32-${PVER}
425 == sys-libs/libquadmath-lib32-${PVER}
426 == sys-libs/libitm-lib32-${PVER}
427 == sys-libs/libatomic-lib32-${PVER}
428 == sys-libs/libasan-lib32-${PVER}
429 == sys-libs/libubsan-lib32-${PVER}
430 == sys-libs/libvtv-lib32-${PVER}"
431 fi
432
433 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
434 then
435 DEPEND="${DEPEND}
436 == sys-libs/libgcc-dev-${PVER}
437 == sys-libs/libgomp-dev-${PVER}
438 == sys-libs/libquadmath-dev-${PVER}
439 == sys-libs/libitm-dev-${PVER}
440 == sys-libs/libatomic-dev-${PVER}
441 == sys-libs/libasan-dev-${PVER}
442 == sys-libs/libubsan-dev-${PVER}
443 == sys-libs/libvtv-dev-${PVER}"
444 fi
445
446 # install libstdc++ and gcc-c++ too if enabled
447 if lang_enabled c++
448 then
449 DEPEND="${DEPEND}
450 == sys-libs/libstdc++-${PVER}
451 == sys-dev/gcc-c++-${PVER}"
452 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
453 then
454 DEPEND="${DEPEND}
455 == sys-libs/libstdc++-lib32-${PVER}"
456 fi
457 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
458 then
459 DEPEND="${DEPEND}
460 == sys-libs/libstdc++-dev-${PVER}"
461 fi
462 fi
463 }
464
465 split_info_libgcc()
466 {
467 DESCRIPTION="GCC shared support library."
468 DEPEND="${LIBGCC_DEPEND}"
469 PCAT="sys-libs"
470 }
471
472 split_info_libgcc-lib32()
473 {
474 DESCRIPTION="GCC shared support library - 32bit."
475 DEPEND="${LIBGCC_LIB32_DEPEND}"
476 PCAT="sys-libs"
477 }
478
479 split_info_libgcc-dev()
480 {
481 DESCRIPTION="Development files for libgcc."
482 DEPEND="== sys-libs/libgcc-${PVER}"
483 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
484 then
485 DEPEND="${DEPEND}
486 == sys-libs/libgcc-lib32-${PVER}"
487 fi
488 PCAT="sys-libs"
489 }
490
491 split_info_libgomp()
492 {
493 DESCRIPTION="GNU OpenMP runtime library."
494 DEPEND="${LIBGOMP_DEPEND}"
495 PCAT="sys-libs"
496 }
497
498 split_info_libgomp-lib32()
499 {
500 DESCRIPTION="GNU OpenMP runtime library - 32bit."
501 DEPEND="${LIBGOMP_LIB32_DEPEND}"
502 PCAT="sys-libs"
503 }
504
505 split_info_libgomp-dev()
506 {
507 DESCRIPTION="Development files for libgomp."
508 DEPEND="== sys-libs/libgomp-${PVER}"
509 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
510 then
511 DEPEND="${DEPEND}
512 == sys-libs/libgomp-lib32-${PVER}"
513 fi
514 PCAT="sys-libs"
515 }
516
517 split_info_libquadmath()
518 {
519 DESCRIPTION="GCC __float128 shared support library."
520 DEPEND="${LIBQUADMATH_DEPEND}"
521 PCAT="sys-libs"
522 }
523
524 split_info_libquadmath-lib32()
525 {
526 DESCRIPTION="GCC __float128 shared support library - 32bit."
527 DEPEND="${LIBQUADMATH_LIB32_DEPEND}"
528 PCAT="sys-libs"
529 }
530
531 split_info_libquadmath-dev()
532 {
533 DESCRIPTION="Development files for libquadmath."
534 DEPEND="== sys-libs/libquadmath-${PVER}"
535 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
536 then
537 DEPEND="${DEPEND}
538 == sys-libs/libquadmath-lib32-${PVER}"
539 fi
540 PCAT="sys-libs"
541 }
542
543 split_info_libitm()
544 {
545 DESCRIPTION="The GNU Transactional Memory library."
546 DEPEND="${LIBITM_DEPEND}"
547 PCAT="sys-libs"
548 }
549
550 split_info_libitm-lib32()
551 {
552 DESCRIPTION="The GNU Transactional Memory library - 32bit."
553 DEPEND="${LIBITM_LIB32_DEPEND}"
554 PCAT="sys-libs"
555 }
556
557 split_info_libitm-dev()
558 {
559 DESCRIPTION="Development files for libitm."
560 DEPEND="== sys-libs/libitm-${PVER}"
561 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
562 then
563 DEPEND="${DEPEND}
564 == sys-libs/libitm-lib32-${PVER}"
565 fi
566 PCAT="sys-libs"
567 }
568
569 split_info_libatomic()
570 {
571 DESCRIPTION="The GNU Atomic library."
572 DEPEND="${LIBATOMIC_DEPEND}"
573 PCAT="sys-libs"
574 }
575
576 split_info_libatomic-lib32()
577 {
578 DESCRIPTION="The GNU Atomic library - 32bit."
579 DEPEND="${LIBATOMIC_LIB32_DEPEND}"
580 PCAT="sys-libs"
581 }
582
583 split_info_libatomic-dev()
584 {
585 DESCRIPTION="Development files for libatomic."
586 DEPEND="== sys-libs/libatomic-${PVER}"
587 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
588 then
589 DEPEND="${DEPEND}
590 == sys-libs/libatomic-lib32-${PVER}"
591 fi
592 PCAT="sys-libs"
593 }
594
595 split_info_libasan()
596 {
597 DESCRIPTION="The Address Sanitizer runtime library."
598 DEPEND="== sys-libs/libgcc-${PVER}
599 == sys-libs/libstdc++-${PVER}
600 ${LIBASAN_DEPEND}"
601 PCAT="sys-libs"
602 }
603
604 split_info_libasan-lib32()
605 {
606 DESCRIPTION="The Address Sanitizer runtime library - 32bit."
607 DEPEND="== sys-libs/libgcc-lib32-${PVER}
608 == sys-libs/libstdc++-lib32-${PVER}
609 ${LIBASAN_LIB32_DEPEND}"
610 PCAT="sys-libs"
611 }
612
613 split_info_libasan-dev()
614 {
615 DESCRIPTION="Development files for libasan."
616 DEPEND="== sys-libs/libasan-${PVER}"
617 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
618 then
619 DEPEND="${DEPEND}
620 == sys-libs/libasan-lib32-${PVER}"
621 fi
622 PCAT="sys-libs"
623 }
624
625 split_info_liblsan()
626 {
627 DESCRIPTION="The Leak Sanitizer runtime library."
628 DEPEND="== sys-libs/libgcc-${PVER}
629 == sys-libs/libstdc++-${PVER}
630 ${LIBLSAN_DEPEND}"
631 PCAT="sys-libs"
632 }
633
634 split_info_liblsan-dev()
635 {
636 DESCRIPTION="Development files for liblsan."
637 DEPEND="== sys-libs/liblsan-${PVER}"
638 PCAT="sys-libs"
639 }
640
641 split_info_libubsan()
642 {
643 DESCRIPTION="The Undefined behavior Sanitizer runtime library."
644 DEPEND="== sys-libs/libgcc-${PVER}
645 == sys-libs/libstdc++-${PVER}
646 ${LIBUBSAN_DEPEND}"
647 PCAT="sys-libs"
648 }
649
650 split_info_libubsan-lib32()
651 {
652 DESCRIPTION="The Undefined behavior Sanitizer runtime library - 32bit."
653 DEPEND="== sys-libs/libgcc-lib32-${PVER}
654 == sys-libs/libstdc++-lib32-${PVER}
655 ${LIBUBSAN_LIB32_DEPEND}"
656 PCAT="sys-libs"
657 }
658
659 split_info_libubsan-dev()
660 {
661 DESCRIPTION="Development files for libubsan."
662 DEPEND="== sys-libs/libubsan-${PVER}"
663 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
664 then
665 DEPEND="${DEPEND}
666 == sys-libs/libubsan-lib32-${PVER}"
667 fi
668 PCAT="sys-libs"
669 }
670
671 split_info_libtsan()
672 {
673 DESCRIPTION="The Thread Sanitizer runtime library."
674 DEPEND="== sys-libs/libgcc-${PVER}
675 == sys-libs/libstdc++-${PVER}
676 ${LIBTSAN_DEPEND}"
677 PCAT="sys-libs"
678 }
679
680 split_info_libtsan-dev()
681 {
682 DESCRIPTION="Development files for libtsan."
683 DEPEND="== sys-libs/libtsan-${PVER}
684 == sys-libs/libgcc-dev-${PVER}
685 == sys-libs/libstdc++-dev-${PVER}"
686 PCAT="sys-libs"
687 }
688
689 split_info_libvtv()
690 {
691 DESCRIPTION="Vtable Verification runtime library."
692 DEPEND="${LIBVTV_DEPEND}"
693 PCAT="sys-libs"
694 }
695
696 split_info_libvtv-lib32()
697 {
698 DESCRIPTION="Vtable Verification runtime library - 32bit."
699 DEPEND="${LIBVTV_LIB32_DEPEND}"
700 PCAT="sys-libs"
701 }
702
703 split_info_libvtv-dev()
704 {
705 DESCRIPTION="Development files for libvtv."
706 DEPEND="== sys-libs/libvtv-${PVER}"
707 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
708 then
709 DEPEND="${DEPEND}
710 == sys-libs/libvtv-lib32-${PVER}"
711 fi
712 PCAT="sys-libs"
713 }
714 fi
715
716 if lang_enabled c++
717 then
718 split_info_libstdc++()
719 {
720 DESCRIPTION="Standard GNU C and C++ libraries."
721 DEPEND="== sys-libs/libgcc-${PVER}
722 ${LIBSTDCPP_DEPEND}"
723 PCAT="sys-libs"
724 }
725
726 split_info_libstdc++-lib32()
727 {
728 DESCRIPTION="Standard GNU C and C++ libraries - 32bit."
729 DEPEND="== sys-libs/libgcc-lib32-${PVER}
730 ${LIBSTDCPP_LIB32_DEPEND}"
731 PCAT="sys-libs"
732 }
733
734 split_info_libstdc++-dev()
735 {
736 DESCRIPTION="Development files for libstdc++."
737 DEPEND="== sys-libs/libstdc++-${PVER}
738 == sys-libs/libgcc-dev-${PVER}"
739 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
740 then
741 DEPEND="${DEPEND}
742 == sys-libs/libstdc++-lib32-${PVER}"
743 fi
744 PCAT="sys-libs"
745 }
746
747 split_info_gcc-c++()
748 {
749 DESCRIPTION="Modern C++ compiler written by the GNU people."
750 DEPEND="== sys-libs/libstdc++-${PVER}
751 ${CPP_DEPEND}"
752 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
753 then
754 DEPEND="${DEPEND}
755 == sys-libs/libstdc++-lib32-${PVER}"
756 fi
757 }
758 fi
759
760 if lang_enabled ada
761 then
762 split_info_libgnat()
763 {
764 DESCRIPTION="Gnu Ada 95 library which is needed to run Ada programs."
765 DEPEND="== sys-libs/libgcc-${PVER}
766 ${LIBGNAT_DEPEND}"
767 PCAT="sys-libs"
768 }
769
770 split_info_libgnat()
771 {
772 DESCRIPTION="Gnu Ada 95 library which is needed to run Ada programs - 32bit."
773 DEPEND="== sys-libs/libgcc-lib32-${PVER}
774 ${LIBGNAT_LIB32_DEPEND}"
775 PCAT="sys-libs"
776 }
777
778 split_info_libgnat-dev()
779 {
780 DESCRIPTION="Development files for libgnat."
781 DEPEND="== sys-libs/libgnat-${PVER}
782 == sys-libs/libgcc-dev-${PVER}"
783 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
784 then
785 DEPEND="${DEPEND}
786 == sys-libs/libgnat-lib32-${PVER}"
787 fi
788 PCAT="sys-libs"
789 }
790
791 split_info_gcc-gnat()
792 {
793 DESCRIPTION="Ada 95 support for GCC."
794 DEPEND="== sys-libs/libgcc-${PVER}
795 == sys-libs/libstdc++-${PVER}
796 == sys-libs/libgnat-${PVER}
797 == sys-dev/gcc-${PVER}
798 ${ADA_DEPEND}"
799 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
800 then
801 DEPEND="${DEPEND}
802 == sys-libs/libgcc-lib32-${PVER}
803 == sys-libs/libstdc++-lib32-${PVER}
804 == sys-libs/libgnat-lib32-${PVER}"
805 fi
806 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
807 then
808 DEPEND="${DEPEND}
809 == sys-libs/libgcc-dev-${PVER}
810 == sys-libs/libstdc++-dev-${PVER}
811 == sys-libs/libgnat-dev-${PVER}"
812 fi
813 }
814 fi
815
816 if lang_enabled fortran
817 then
818 split_info_libgfortran()
819 {
820 DESCRIPTION="Gnu Fortran library which is needed to run Fortran programs."
821 DEPEND="== sys-libs/libquadmath-${PVER}
822 ${LIBGFORTRAN_DEPEND}"
823 PCAT="sys-libs"
824 }
825
826 split_info_libgfortran-lib32()
827 {
828 DESCRIPTION="Gnu Fortran library which is needed to run Fortran programs - 32bit."
829 DEPEND="== sys-libs/libquadmath-lib32-${PVER}
830 ${LIBGFORTRAN_LIB32_DEPEND}"
831 PCAT="sys-libs"
832 }
833
834 split_info_libgfortran-dev()
835 {
836 DESCRIPTION="Development files for libgfortran."
837 DEPEND="== sys-libs/libgfortran-${PVER}
838 == sys-libs/libquadmath-dev-${PVER}"
839 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
840 then
841 DEPEND="${DEPEND}
842 == sys-libs/libgfortran-lib32-${PVER}"
843 fi
844 PCAT="sys-libs"
845 }
846
847 split_info_gcc-gfortran()
848 {
849 DESCRIPTION="Fortran support for GCC."
850 DEPEND="== sys-libs/libgcc-${PVER}
851 == sys-libs/libstdc++-${PVER}
852 == sys-libs/libgfortran-${PVER}
853 == sys-dev/gcc-${PVER}
854 ${FORTRAN_DEPEND}"
855 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
856 then
857 DEPEND="${DEPEND}
858 == sys-libs/libgcc-lib32-${PVER}
859 == sys-libs/libstdc++-lib32-${PVER}
860 == sys-libs/libgfortran-lib32-${PVER}"
861 fi
862 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
863 then
864 DEPEND="${DEPEND}
865 == sys-libs/libgcc-dev-${PVER}
866 == sys-libs/libstdc++-dev-${PVER}
867 == sys-libs/libgfortran-dev-${PVER}"
868 fi
869 }
870 fi
871
872 if lang_enabled go
873 then
874 split_info_libgo()
875 {
876 DESCRIPTION="Go library which is needed to run Go programs."
877 DEPEND="== sys-libs/libgcc-${PVER}
878 ${LIBGO_DEPEND}"
879 PCAT="sys-libs"
880 }
881
882 split_info_libgo-lib32()
883 {
884 DESCRIPTION="Go library which is needed to run Go programs - 32bit."
885 DEPEND="== sys-libs/libgcc-lib32-${PVER}
886 ${LIBGO_LIB32_DEPEND}"
887 PCAT="sys-libs"
888 }
889
890 split_info_libgo-dev()
891 {
892 DESCRIPTION="Development files for libgo."
893 DEPEND="== sys-libs/libgo-${PVER}
894 == sys-libs/libgcc-dev-${PVER}"
895 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
896 then
897 DEPEND="${DEPEND}
898 == sys-libs/libgo-lib32-${PVER}"
899 fi
900 PCAT="sys-libs"
901 }
902
903 split_info_gcc-go()
904 {
905 DESCRIPTION="Go support for GCC."
906 DEPEND="== sys-libs/libgcc-${PVER}
907 == sys-libs/libstdc++-${PVER}
908 == sys-libs/libgo-${PVER}
909 == sys-dev/gcc-${PVER}
910 ${GO_DEPEND}"
911 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
912 then
913 DEPEND="${DEPEND}
914 == sys-libs/libgcc-lib32-${PVER}
915 == sys-libs/libstdc++-lib32-${PVER}
916 == sys-libs/libgo-lib32-${PVER}"
917 fi
918 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
919 then
920 DEPEND="${DEPEND}
921 == sys-libs/libgcc-dev-${PVER}
922 == sys-libs/libstdc++-dev-${PVER}
923 == sys-libs/libgo-dev-${PVER}"
924 fi
925 }
926 fi
927
928 if lang_enabled objc
929 then
930 split_info_libobjc()
931 {
932 DESCRIPTION="Objective-C library which is needed to run Objective-C programs."
933 DEPEND="== sys-libs/libgcc-${PVER}
934 ${LIBOBJC_DEPEND}"
935 PCAT="sys-libs"
936 }
937
938 split_info_libobjc-lib32()
939 {
940 DESCRIPTION="Objective-C library which is needed to run Objective-C programs - 32bit."
941 DEPEND="== sys-libs/libgcc-lib32-${PVER}
942 ${LIBOBJC_LIB32_DEPEND}"
943 PCAT="sys-libs"
944 }
945
946 split_info_libobjc-dev()
947 {
948 DESCRIPTION="Development files for libobjc."
949 DEPEND="== sys-libs/libobjc-${PVER}
950 == sys-libs/libgcc-dev-${PVER}"
951 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
952 then
953 DEPEND="${DEPEND}
954 == sys-libs/libobjc-lib32-${PVER}"
955 fi
956 PCAT="sys-libs"
957 }
958
959 split_info_gcc-objc()
960 {
961 DESCRIPTION="Objective-C support for GCC."
962 DEPEND="== sys-libs/libgcc-${PVER}
963 == sys-libs/libstdc++-${PVER}
964 == sys-libs/libobjc-${PVER}
965 == sys-dev/gcc-${PVER}
966 ${OBJC_DEPEND}"
967 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
968 then
969 DEPEND="${DEPEND}
970 == sys-libs/libgcc-lib32-${PVER}
971 == sys-libs/libstdc++-lib32-${PVER}
972 == sys-libs/libobjc-lib32-${PVER}"
973 fi
974 }
975
976 if lang_enabled obj-c++
977 then
978 split_info_gcc-objc++()
979 {
980 DESCRIPTION="Objective-C++ support for GCC."
981 DEPEND="== sys-libs/libgcc-${PVER}
982 == sys-libs/libstdc++-${PVER}
983 == sys-libs/libobjc-${PVER}
984 == sys-dev/gcc-${PVER}
985 == sys-dev/gcc-objc-${PVER}
986 ${OBJCPP_DEPEND}"
987 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
988 then
989 DEPEND="${DEPEND}
990 == sys-libs/libgcc-lib32-${PVER}
991 == sys-libs/libstdc++-lib32-${PVER}
992 == sys-libs/libobjc-lib32-${PVER}"
993 fi
994 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
995 then
996 DEPEND="${DEPEND}
997 == sys-libs/libgcc-dev-${PVER}
998 == sys-libs/libstdc++-dev-${PVER}
999 == sys-libs/libobjc-dev-${PVER}"
1000 fi
1001 }
1002 fi
1003 fi
1004
1005 if lang_enabled lto
1006 then
1007 split_info_lto-dump()
1008 {
1009 DESCRIPTION="Dump link time optimization object files."
1010 DEPEND="== sys-dev/gcc-${PVER}"
1011 }
1012 fi
1013
1014 if lang_enabled jit
1015 then
1016 split_info_libgccjit()
1017 {
1018 DESCRIPTION="Just-In-Time Compilation with GCC backend."
1019 DEPEND="== sys-dev/gcc-${PVER}"
1020 PCAT="sys-libs"
1021 }
1022 fi
1023
1024 if lang_enabled d
1025 then
1026 split_info_libphobos()
1027 {
1028 DESCRIPTION="D runtime libraries."
1029 DEPEND="${LIBPHOBOS_DEPEND}"
1030 PCAT="sys-libs"
1031 }
1032
1033 split_info_libphobos-lib32()
1034 {
1035 DESCRIPTION="D runtime libraries - 32bit."
1036 DEPEND="${LIBPHOBOS_LIB32_DEPEND}"
1037 PCAT="sys-libs"
1038 }
1039
1040 split_info_gcc-d()
1041 {
1042 DESCRIPTION="D frontend for GCC."
1043 DEPEND="== sys-dev/gcc-${PVER}
1044 == sys-libs/libphobos-${PVER}
1045 ${D_DEPEND}"
1046 if [[ ${ENABLE_LIB32_PACKAGES} = 1 ]]
1047 then
1048 DEPEND="${DEPEND}
1049 == sys-libs/libphobos-lib32-${PVER}"
1050 fi
1051 }
1052 fi
1053
1054 src_prepare()
1055 {
1056 munpack ${SRCFILE} || die
1057
1058 if lang_enabled ada
1059 then
1060 if [[ ${ADA_BOOTSTRAP} = 1 ]]
1061 then
1062 # setup binary ada if boostrap is enabled
1063 install -d ${GNAT_BIN_SRCDIR} || die
1064 munpack ${GNAT_BIN} ${GNAT_BIN_SRCDIR} || die
1065 # gnat wrapper has problems with quotation
1066 sed -i \
1067 -e "/-DREVISION/d" \
1068 -e "/-DDEVPHASE/d" \
1069 -e "s: -DDATESTAMP=\$(DATESTAMP_s)::" \
1070 ${SRCDIR}/gcc/Makefile.in || die
1071 sed -i \
1072 -e "s: DATESTAMP DEVPHASE REVISION::" \
1073 -e "s:PKGVERSION:\"\":" \
1074 ${SRCDIR}/gcc/version.c || die
1075 fi
1076 cd ${SRCDIR}
1077 fi
1078
1079 cd ${SRCDIR}
1080
1081 # do not run fixincludes
1082 sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in || die
1083
1084 # honor 64bit libs in /usr/lib
1085 if [[ $(ARCH=x86_64 mlibdir) = lib ]]
1086 then
1087 sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 || die
1088 fi
1089
1090 install -d ${SRCDIR}/build || die
1091 install -d ${SRCDIR}/build-jit || die
1092 }
1093
1094 src_compile()
1095 {
1096 if lang_enabled ada
1097 then
1098 if [[ ${ADA_BOOTSTRAP} = 1 ]]
1099 then
1100 # export binary gnat pathes
1101 export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
1102 export CC="${GNAT_BIN_SRCDIR}/usr/bin/gcc"
1103 # CPATH is supposed to be applied for any language, thus
1104 # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
1105 export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
1106 export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
1107 export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
1108 export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
1109 export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
1110 export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
1111
1112 # prepare some tools
1113 cd ${GNAT_BIN_SRCDIR}
1114 cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
1115 cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
1116 cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
1117 cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
1118 cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
1119 cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
1120 cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
1121 gnatmake xtreeprs || die
1122 gnatmake xsinfo || die
1123 gnatmake xeinfo || die
1124 gnatmake xnmake || die
1125 fi
1126 fi
1127
1128 cd ${SRCDIR}/build
1129 local globalconf
1130 local buildconf
1131
1132 # # Straight from the GCC install doc:
1133 # # "GCC has code to correctly determine the correct value for target
1134 # # for nearly all native systems. Therefore, we highly recommend you
1135 # # not provide a configure target when configuring a native compiler."
1136 # if [[ ${CHOST} != ${CTARGET} ]]
1137 # then
1138 # globalconf+=" --target=${CTARGET}"
1139 # fi
1140
1141 if lang_enabled lto
1142 then
1143 globalconf+=" --enable-lto"
1144 fi
1145
1146 # no ssp, we use mpx
1147 globalconf+=" --disable-libssp"
1148
1149 # enable intel cet + branch tracking (IBT) and shadow stack (SHSTK)
1150 globalconf+=" --enable-cet=auto"
1151
1152 # enable libstdc++ backtraces
1153 globalconf+=" --enable-libstdcxx-backtrace"
1154
1155 # enable link serialization
1156 globalconf+=" --enable-link-serialization=1"
1157
1158 globalconf+=" --enable-multilib"
1159
1160 globalconf+=' --with-bugurl="http://bugs.magellan-linux.de/"'
1161 globalconf+=' --with-pkgversion="Magellan-Linux"'
1162 globalconf+=" --enable-shared"
1163 globalconf+=" --enable-threads=posix"
1164 globalconf+=" --enable-__cxa_atexit"
1165 globalconf+=" --enable-clocale=gnu"
1166 globalconf+=" --enable-checking=release"
1167 globalconf+=" --with-linker-hash-style=gnu"
1168 globalconf+=" --with-system-zlib"
1169 globalconf+=" --disable-libstdcxx-pch"
1170 globalconf+=" --enable-gnu-unique-object"
1171 globalconf+=" --enable-gnu-indirect-function"
1172 globalconf+=" --enable-plugin"
1173 globalconf+=" --enable-linker-build-id"
1174 globalconf+=" --disable-werror"
1175 globalconf+=" --enable-default-pie"
1176 globalconf+=" --enable-default-ssp"
1177
1178 if [[ ${GCC_BOOTSTRAP} = 1 ]]
1179 then
1180 globalconf+=" --with-build-config=bootstrap-lto"
1181 buildconf+=" --enable-bootstrap"
1182 else
1183 buildconf+=" --disable-bootstrap"
1184 fi
1185
1186 # jit will be build later
1187 if lang_enabled jit
1188 then
1189 local lang
1190 local StrippedLanguages
1191 for lang in ${MyLanguages//,/ }
1192 do
1193 if [[ ${lang} = jit ]]
1194 then
1195 continue
1196 else
1197 if [[ -z ${StrippedLanguages} ]]
1198 then
1199 StrippedLanguages="${lang}"
1200 else
1201 StrippedLanguages+=",${lang}"
1202 fi
1203 fi
1204 done
1205 buildconf+=" --enable-languages=${StrippedLanguages}"
1206 else
1207 buildconf+=" --enable-languages=${MyLanguages}"
1208 fi
1209
1210 ../configure \
1211 --build=${CHOST} \
1212 --host=${CHOST} \
1213 --prefix=/usr \
1214 --sbindir=/usr/bin \
1215 --mandir=/usr/share/man \
1216 --infodir=/usr/share/info \
1217 --libdir=/usr/$(mlibdir) \
1218 --libexecdir=/usr/$(mlibdir) \
1219 ${globalconf} \
1220 ${buildconf} \
1221 || die
1222
1223 # non parallel build breaks atm
1224 # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106472
1225 local myopts
1226 if [[ -z ${MAKEOPTS} ]]
1227 then
1228 myopts="-j2"
1229 fi
1230
1231 # enable bootstrap if requested
1232 local target
1233 [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap"
1234
1235 # always honor our FLAGS
1236 mmake -O \
1237 STAGE1_CFLAGS="-O2" \
1238 BOOT_CFLAGS="${CFLAGS}" \
1239 BOOT_LDFLAGS="${LDFLAGS}" \
1240 LDFLAGS_FOR_TARGET="${LDFLAGS}" \
1241 ${myopts} ${target} || die
1242
1243 # build jit with host-shared separately, otherwise this will bring a perfomance penality to other compilers
1244 if lang_enabled jit
1245 then
1246 cd ${SRCDIR}/build-jit
1247
1248 # only build jit
1249 buildconf=" --enable-languages=jit"
1250
1251 # disable bootstrap
1252 buildconf+=" --disable-bootstrap"
1253
1254 # enable host shared for jit
1255 buildconf+=" --enable-host-shared"
1256
1257 # use all-gcc as make target
1258 target="all-gcc"
1259
1260 ../configure \
1261 --build=${CHOST} \
1262 --host=${CHOST} \
1263 --prefix=/usr \
1264 --sbindir=/usr/bin \
1265 --mandir=/usr/share/man \
1266 --infodir=/usr/share/info \
1267 --libdir=/usr/$(mlibdir) \
1268 --libexecdir=/usr/$(mlibdir) \
1269 ${globalconf} \
1270 ${buildconf} \
1271 || die
1272
1273 # always honor our FLAGS
1274 mmake -O \
1275 STAGE1_CFLAGS="-O2" \
1276 BOOT_CFLAGS="${CFLAGS}" \
1277 BOOT_LDFLAGS="${LDFLAGS}" \
1278 LDFLAGS_FOR_TARGET="${LDFLAGS}" \
1279 ${myopts} ${target} || die
1280
1281 # copy the builded jit lib to the regular gcc build
1282 cp -a gcc/libgccjit.so* ../build/gcc/
1283 fi
1284 }
1285
1286 src_check()
1287 {
1288 cd ${SRCDIR}/build
1289
1290 # increase stack size to prevent test failures
1291 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
1292 ulimit -s 32768
1293
1294 # do not abort on error as some are "expected"
1295 mmake -k check || true
1296 # list all
1297 ${SRCDIR}/contrib/test_summary
1298 # only summary
1299 #${SRCDIR}/contrib/test_summary | grep -A7 "Summ"
1300 }
1301
1302 if lang_enabled c
1303 then
1304 src_install_gcc()
1305 {
1306 cd ${SRCDIR}/build
1307
1308 mmake -C gcc DESTDIR=${BINDIR} install-driver || die
1309 mmake -C gcc DESTDIR=${BINDIR} install-gcc-ar || die
1310 mmake -C gcc DESTDIR=${BINDIR} install-headers || die
1311 mmake -C gcc DESTDIR=${BINDIR} install-plugin || die
1312
1313 # missing bins
1314 minstallexec gcc/gcov || die
1315 minstallexec gcc/gcov-tool || die
1316 minstallexec gcc/cc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1317 minstallexec gcc/collect2 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1318
1319 # lto wrapper
1320 if lang_enabled lto
1321 then
1322 mmake -C gcc DESTDIR=${BINDIR} install-lto-wrapper || die
1323 minstallexec gcc/lto1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1324 fi
1325
1326 # install only libgcc crts
1327 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install || die
1328 mdelete /usr/$(mlibdir)/libgcc_s.so\* || die
1329 if [[ ${ARCH} = x86_64 ]]
1330 then
1331 mmake -C ${CHOST}/32/libgcc DESTDIR=${BINDIR} install || die
1332 mdelete /usr/$(ARCH=i686 mlibdir)/libgcc_s.so\* || die
1333 fi
1334
1335 # install libcc1
1336 mmake DESTDIR=${BINDIR} install-libcc1 || die
1337
1338 # fixinclude header + scripts
1339 mmake DESTDIR=${BINDIR} install-fixincludes || die
1340 mmake -C gcc DESTDIR=${BINDIR} install-mkheaders || die
1341
1342 # lto plugin
1343 if lang_enabled lto
1344 then
1345 mmake -C lto-plugin DESTDIR=${BINDIR} install || die
1346 minstalldir /usr/$(mlibdir)/bfd-plugins || die
1347 mlink /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/liblto_plugin.so /usr/$(mlibdir)/bfd-plugins/ || die
1348 fi
1349
1350 # library headers: libgomp, libitm, libsanitizer, libasan, libtsan, liblsan
1351 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1352 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1353 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1354 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1355 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1356 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1357 mmake -C ${CHOST}/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1358 mmake -C ${CHOST}/libsanitizer/tsan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1359 mmake -C ${CHOST}/libsanitizer/lsan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1360 if [[ ${ARCH} = x86_64 ]]
1361 then
1362 mmake -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1363 mmake -C ${CHOST}/32/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1364 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1365 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1366 mmake -C ${CHOST}/32/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1367 # 64bit only
1368 #mmake -C ${CHOST}/32/libsanitizer/tsan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1369 #mmake -C ${CHOST}/32/libsanitizer/lsan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1370 fi
1371
1372 # man and info pages
1373 mmake -C gcc DESTDIR=${BINDIR} install-man || die
1374 mmake -C gcc DESTDIR=${BINDIR} install-info || die
1375 # provided by split-packages
1376 if lang_enabled c++
1377 then
1378 mdelete /usr/share/man/man1/cpp.1 || die
1379 mdelete /usr/share/man/man1/g++.1 || die
1380 mdelete /usr/share/info/cpp.info || die
1381 mdelete /usr/share/info/cppinternals.info || die
1382 fi
1383 if lang_enabled go
1384 then
1385 mdelete /usr/share/man/man1/gccgo.1 || die
1386 mdelete /usr/share/info/gccgo.info || die
1387 fi
1388 if lang_enabled fortran
1389 then
1390 mdelete /usr/share/man/man1/gfortran.1 || die
1391 mdelete /usr/share/info/gfortran.info || die
1392 fi
1393 if lang_enabled ada
1394 then
1395 mdelete /usr/share/info/gnat-style.info || die
1396 mdelete /usr/share/info/gnat_rm.info || die
1397 mdelete /usr/share/info/gnat_ugn.info || die
1398 fi
1399 if lang_enabled lto
1400 then
1401 mdelete /usr/share/man/man1/lto-dump.1 || die
1402 fi
1403 if lang_enabled d
1404 then
1405 mdelete /usr/share/man/man1/gdc.1 || die
1406 mdelete /usr/share/info/gdc.info || die
1407 fi
1408
1409 # install gcc locales
1410 mmake -C gcc DESTDIR=${BINDIR} install-po || die
1411
1412 # install posix conformance launcher scripts for c89 and c99
1413 cat > ${BINDIR}/usr/bin/c89 <<"EOF"
1414 #!/bin/sh
1415 fl="-std=c89"
1416 for opt
1417 do
1418 case "$opt" in
1419 -ansi|-std=c89|-std=iso9899:1990)
1420 fl=""
1421 ;;
1422 -std=*)
1423 echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
1424 exit 1
1425 ;;
1426 esac
1427 done
1428 exec gcc $fl ${1+"$@"}
1429 EOF
1430 cat > ${BINDIR}/usr/bin/c99 <<"EOF"
1431 #!/bin/sh
1432 fl="-std=c99"
1433 for opt
1434 do
1435 case "$opt" in
1436 -std=c99|-std=iso9899:1999)
1437 fl=""
1438 ;;
1439 -std=*)
1440 echo "`basename $0` called with non ISO C99 option $opt" >&2
1441 exit 1
1442 ;;
1443 esac
1444 done
1445 exec gcc $fl ${1+"$@"}
1446 EOF
1447 mchmod 0755 /usr/bin/c89 || die
1448 mchmod 0755 /usr/bin/c99 || die
1449
1450 # versionize all bins and symlink them
1451 versionize_all_bins || die
1452 mlink gcc-${PVER} /usr/bin/cc || die
1453
1454 # fix all .la files
1455 # they may contain invalid libpathes which are not needed
1456 local la
1457 for la in $(find ${BINDIR} -name \*.la)
1458 do
1459 fix_la_file ${la} || die ${la}
1460 done
1461
1462 # remove /lib dirs to be usr-move compat
1463 if [[ -d ${BINDIR}/$(mlibdir) ]]
1464 then
1465 mdelete -r /$(mlibdir) || die
1466 fi
1467 if [[ $(mlibdir) != lib ]]
1468 then
1469 if [[ -d ${BINDIR}/lib ]]
1470 then
1471 mdelete -r /lib || die
1472 fi
1473 fi
1474 }
1475 fi
1476
1477 if lang_enabled c++
1478 then
1479 src_install_gcc-c++()
1480 {
1481 cd ${SRCDIR}/build
1482
1483 mmake -C gcc DESTDIR=${BINDIR} install-cpp || die
1484 mmake -C gcc DESTDIR=${BINDIR} c++.install-common || die
1485
1486 # missing bins
1487 minstallexec gcc/cc1plus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1488
1489 # install libstdc++ files
1490 mmake -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1491 mmake -C ${CHOST}/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1492 mmake -C ${CHOST}/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1493 mmake -C ${CHOST}/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1494 if [[ ${ARCH} = x86_64 ]]
1495 then
1496 mmake -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1497 mmake -C ${CHOST}/32/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1498 mmake -C ${CHOST}/32/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1499 # only install native python modules
1500 #mmake -C ${CHOST}/32/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1501 fi
1502 # move gdb scripts to a proper location and to pretty-print ldconfig
1503 minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
1504 mmove ${BINDIR}/usr/$(mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
1505 # only install native python modules
1506 #if [[ $(ARCH=i686 mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/$(ARCH=i686 mlibdir) ]]
1507 #then
1508 # minstalldir /usr/share/gdb/auto-load/usr/$(ARCH=i686 mlibdir) || die
1509 # mmove ${BINDIR}/usr/$(ARCH=i686 mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(ARCH=i686 mlibdir)/ || die
1510 #fi
1511 # only keep static libstdcc++ lib
1512 mdelete /usr/$(mlibdir)/libstdc++.so\* || die
1513 if [[ $(ARCH=i686 mlibdir) != lib ]]
1514 then
1515 mdelete /usr/$(ARCH=i686 mlibdir)/libstdc++.so\* || die
1516 fi
1517
1518 # man and info pages
1519 mmake -C gcc DESTDIR=${BINDIR} install-man || die
1520 mmake -C gcc DESTDIR=${BINDIR} install-info || die
1521 # provided by split-packages
1522 if lang_enabled c
1523 then
1524 mdelete /usr/share/man/man1/gcc.1 || die
1525 mdelete /usr/share/man/man1/gcov.1 || die
1526 mdelete /usr/share/man/man1/gcov-dump.1 || die
1527 mdelete /usr/share/man/man1/gcov-tool.1 || die
1528 mdelete -r /usr/share/man/man7 || die
1529 mdelete /usr/share/info/gcc.info || die
1530 mdelete /usr/share/info/gccinstall.info || die
1531 mdelete /usr/share/info/gccint.info || die
1532 fi
1533 if lang_enabled go
1534 then
1535 mdelete /usr/share/man/man1/gccgo.1 || die
1536 mdelete /usr/share/info/gccgo.info || die
1537 fi
1538 if lang_enabled fortran
1539 then
1540 mdelete /usr/share/man/man1/gfortran.1 || die
1541 mdelete /usr/share/info/gfortran.info || die
1542 fi
1543 if lang_enabled ada
1544 then
1545 mdelete /usr/share/info/gnat-style.info || die
1546 mdelete /usr/share/info/gnat_rm.info || die
1547 mdelete /usr/share/info/gnat_ugn.info || die
1548 fi
1549 if lang_enabled lto
1550 then
1551 mdelete /usr/share/man/man1/lto-dump.1 || die
1552 fi
1553 if lang_enabled d
1554 then
1555 mdelete /usr/share/man/man1/gdc.1 || die
1556 mdelete /usr/share/info/gdc.info || die
1557 fi
1558
1559 # install libcpp locales
1560 mmake -C libcpp DESTDIR=${BINDIR} install || die
1561
1562 # versionize all bins and symlink them
1563 versionize_all_bins || die
1564
1565 mlink ../bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
1566 # this one is needed on multilib systems.
1567 # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
1568 if [[ $(mlibdir) != lib ]]
1569 then
1570 minstalldir /usr/lib || die
1571 mlink ../bin/cpp-${PVER} /usr/lib/cpp || die
1572 fi
1573
1574 # fix all .la files
1575 # they may contain invalid libpathes which are not needed
1576 local la
1577 for la in $(find ${BINDIR} -name \*.la)
1578 do
1579 fix_la_file ${la} || die ${la}
1580 done
1581
1582 # remove /lib dirs to be usr-move compat
1583 if [[ -d ${BINDIR}/$(mlibdir) ]]
1584 then
1585 mdelete -r /$(mlibdir) || die
1586 fi
1587 if [[ $(mlibdir) != lib ]]
1588 then
1589 if [[ -d ${BINDIR}/lib ]]
1590 then
1591 mdelete -r /lib || die
1592 fi
1593 fi
1594 }
1595 fi
1596
1597 if lang_enabled c
1598 then
1599 src_install_libgcc-common()
1600 {
1601 cd ${SRCDIR}/build
1602 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
1603
1604 if [[ ${ARCH} = x86_64 ]]
1605 then
1606 mmake -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
1607 fi
1608 mdelete -r /usr/$(mlibdir)/gcc || die
1609 }
1610
1611 src_install_libgcc()
1612 {
1613 src_install_libgcc-common || die
1614 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1615 then
1616 keep_dev_package_libs 'libgcc_s.so.*' || die
1617 fi
1618 }
1619
1620 src_install_libgcc-lib32()
1621 {
1622 src_install_libgcc-common || die
1623 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1624 then
1625 keep_dev_package_libs_only32 'libgcc_s.so.*' || die
1626 fi
1627 }
1628
1629 src_install_libgcc-dev()
1630 {
1631 src_install_libgcc-common || die
1632 delete_dev_package_libs 'libgcc_s.so.*' || die
1633 }
1634
1635 src_install_libgomp-common()
1636 {
1637 install_gcc_library "libgomp" || die
1638 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
1639 }
1640
1641 src_install_libgomp()
1642 {
1643 src_install_libgomp-common || die
1644 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1645 then
1646 keep_dev_package_libs 'libgomp.so.*' || die
1647 fi
1648 }
1649
1650 src_install_libgomp-lib32()
1651 {
1652 src_install_libgomp-common || die
1653 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1654 then
1655 keep_dev_package_libs_only32 'libgomp.so.*' || die
1656 fi
1657 }
1658
1659 src_install_libgomp-dev()
1660 {
1661 src_install_libgomp-common || die
1662 delete_dev_package_libs 'libgomp.so.*' || die
1663 }
1664
1665 src_install_libquadmath-common()
1666 {
1667 install_gcc_library "libquadmath" || die
1668 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-info || die
1669 }
1670
1671 src_install_libquadmath()
1672 {
1673 src_install_libquadmath-common || die
1674 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1675 then
1676 keep_dev_package_libs 'libquadmath.so.*' || die
1677 fi
1678 }
1679
1680 src_install_libquadmath-lib32()
1681 {
1682 src_install_libquadmath-common || die
1683 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1684 then
1685 keep_dev_package_libs_only32 'libquadmath.so.*' || die
1686 fi
1687 }
1688
1689 src_install_libquadmath-dev()
1690 {
1691 src_install_libquadmath-common || die
1692 delete_dev_package_libs 'libquadmath.so.*' || die
1693 }
1694
1695 src_install_libitm-common()
1696 {
1697 install_gcc_library "libitm"
1698 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-info || die
1699 }
1700
1701 src_install_libitm()
1702 {
1703 src_install_libitm-common || die
1704 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1705 then
1706 keep_dev_package_libs 'libitm.so.*' || die
1707 fi
1708 }
1709
1710 src_install_libitm-lib32()
1711 {
1712 src_install_libitm-common || die
1713 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1714 then
1715 keep_dev_package_libs_only32 'libitm.so.*' || die
1716 fi
1717 }
1718
1719 src_install_libitm-dev()
1720 {
1721 src_install_libitm-common || die
1722 delete_dev_package_libs 'libitm.so.*' || die
1723 }
1724
1725 src_install_libatomic-common()
1726 {
1727 install_gcc_library "libatomic" || die
1728 }
1729
1730 src_install_libatomic()
1731 {
1732 src_install_libatomic-common || die
1733 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1734 then
1735 keep_dev_package_libs 'libatomic.so.*' || die
1736 fi
1737 }
1738
1739 src_install_libatomic-lib32()
1740 {
1741 src_install_libatomic-common || die
1742 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1743 then
1744 keep_dev_package_libs_only32 'libatomic.so.*' || die
1745 fi
1746 }
1747
1748 src_install_libatomic-dev()
1749 {
1750 src_install_libatomic-common || die
1751 delete_dev_package_libs 'libatomic.so.*' || die
1752 }
1753
1754 src_install_libasan-common()
1755 {
1756 install_gcc_library "libsanitizer/asan" || die
1757 }
1758
1759 src_install_libasan()
1760 {
1761 src_install_libasan-common || die
1762 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1763 then
1764 keep_dev_package_libs 'libasan.so.*' || die
1765 fi
1766 }
1767
1768 src_install_libasan-lib32()
1769 {
1770 src_install_libasan-common || die
1771 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1772 then
1773 keep_dev_package_libs_only32 'libasan.so.*' || die
1774 fi
1775 }
1776
1777 src_install_libasan-dev()
1778 {
1779 src_install_libasan-common || die
1780 delete_dev_package_libs 'libasan.so.*' || die
1781 }
1782
1783 src_install_liblsan-common()
1784 {
1785 install_gcc_library "libsanitizer/lsan" || die
1786 }
1787
1788 src_install_liblsan()
1789 {
1790 src_install_liblsan-common || die
1791 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1792 then
1793 keep_dev_package_libs 'liblsan.so.*' || die
1794 fi
1795 }
1796
1797 src_install_liblsan-dev()
1798 {
1799 src_install_liblsan-common || die
1800 delete_dev_package_libs 'liblsan.so.*' || die
1801 }
1802
1803 src_install_libubsan-common()
1804 {
1805 install_gcc_library "libsanitizer/ubsan" || die
1806 }
1807
1808 src_install_libubsan()
1809 {
1810 src_install_libubsan-common || die
1811 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1812 then
1813 keep_dev_package_libs 'libubsan.so.*' || die
1814 fi
1815 }
1816
1817 src_install_libubsan-lib32()
1818 {
1819 src_install_libubsan-common || die
1820 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1821 then
1822 keep_dev_package_libs_only32 'libubsan.so.*' || die
1823 fi
1824 }
1825
1826 src_install_libubsan-dev()
1827 {
1828 src_install_libubsan-common || die
1829 delete_dev_package_libs 'libubsan.so.*' || die
1830 }
1831
1832 src_install_libtsan-common()
1833 {
1834 install_gcc_library "libsanitizer/tsan" || die
1835 }
1836
1837 src_install_libtsan()
1838 {
1839 src_install_libtsan-common || die
1840 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1841 then
1842 keep_dev_package_libs 'libtsan.so.*' || die
1843 fi
1844 }
1845
1846 src_install_libtsan-dev()
1847 {
1848 src_install_libtsan-common || die
1849 delete_dev_package_libs 'libtsan.so.*' || die
1850 }
1851
1852 src_install_libvtv-common()
1853 {
1854 # hack - always create the bindir to get empty pkgs at least on x86_64 platforms
1855 install -d ${BINDIR} || die
1856
1857 install_gcc_library "libvtv" || die
1858 # delete insecure rpath
1859 mdeleterpath || die
1860 }
1861
1862 src_install_libvtv()
1863 {
1864 src_install_libvtv-common || die
1865 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1866 then
1867 keep_dev_package_libs 'libvtv.so.*' || die
1868 fi
1869 }
1870
1871 src_install_libvtv-lib32()
1872 {
1873 src_install_libvtv-common || die
1874 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1875 then
1876 keep_dev_package_libs_only32 'libvtv.so.*' || die
1877 fi
1878 }
1879
1880 src_install_libvtv-dev()
1881 {
1882 src_install_libvtv-common || die
1883 delete_dev_package_libs 'libvtv.so.*' || die
1884 }
1885 fi
1886
1887 if lang_enabled c++
1888 then
1889 src_install_libstdc++-common()
1890 {
1891 install_gcc_library "libstdc++-v3/src" || die
1892 mmake -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
1893 }
1894
1895 src_install_libstdc++()
1896 {
1897 src_install_libstdc++-common || die
1898 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1899 then
1900 keep_dev_package_libs 'libstdc++.so.*' || die
1901 fi
1902 }
1903
1904 src_install_libstdc++-lib32()
1905 {
1906 src_install_libstdc++-common || die
1907 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1908 then
1909 keep_dev_package_libs_only32 'libstdc++.so.*' || die
1910 fi
1911 }
1912
1913 src_install_libstdc++-dev()
1914 {
1915 src_install_libstdc++-common || die
1916 delete_dev_package_libs 'libstdc++.so.*' || die
1917 }
1918 fi
1919
1920 if lang_enabled ada
1921 then
1922 # gnat so-lib version
1923 solib_ver="$(echo ${PVER} | cut -d'.' -f1)"
1924
1925 src_install_libgnat-common()
1926 {
1927 cd ${SRCDIR}/build
1928 if [[ ${PNAME/$(ARCH=i686 mlibdir)/} = ${PNAME} ]] || [[ ${MAGE_LIB32_SPLIT} != true ]]
1929 then
1930 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1931 fi
1932
1933 if [[ ${ARCH} = x86_64 ]] && [[ ${MAGE_LIB32_SPLIT} != true ]]
1934 then
1935 # install 32bit libgnat
1936 # make tries to execute the libs, which fails
1937 # we override the INSTALL commands to *not* do that
1938 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-libada || die
1939 fi
1940 if [[ ${PNAME/$(ARCH=i686 mlibdir)/} = ${PNAME} ]] || [[ ${MAGE_LIB32_SPLIT} != true ]]
1941 then
1942 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
1943
1944 # move so-libs to the right location
1945 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so /usr/$(mlibdir) || die
1946 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so /usr/$(mlibdir) || die
1947 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1948 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1949 mlink libgnarl-${solib_ver}.so /usr/$(mlibdir)/libgnarl.so || die
1950 mlink libgnat-${solib_ver}.so /usr/$(mlibdir)/libgnat.so || die
1951 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so || die
1952 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so || die
1953 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1954 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1955
1956 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1957 fi
1958 if [[ ${ARCH} = x86_64 ]] && [[ ${MAGE_LIB32_SPLIT} != true ]]
1959 then
1960 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
1961
1962 # move so-libs to the right location
1963 minstalldir /usr/$(ARCH=i686 mlibdir) || die
1964 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so /usr/$(ARCH=i686 mlibdir) || die
1965 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so /usr/$(ARCH=i686 mlibdir) || die
1966 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1967 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1968 mlink libgnarl-${solib_ver}.so /usr/$(ARCH=i686 mlibdir)/libgnarl.so || die
1969 mlink libgnat-${solib_ver}.so /usr/$(ARCH=i686 mlibdir)/libgnat.so || die
1970 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so || die
1971 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so || die
1972 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1973 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1974
1975 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1976 fi
1977
1978 if [[ ${PNAME/$(ARCH=i686 mlibdir)/} = ${PNAME} ]] || [[ ${MAGE_LIB32_SPLIT} != true ]]
1979 then
1980 # remove other
1981 mdelete -r /usr/bin || die
1982 fi
1983 }
1984
1985 src_install_libgnat()
1986 {
1987 src_install_libgnat-common || die
1988 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1989 then
1990 keep_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1991 fi
1992 }
1993
1994 src_install_libgnat-lib32()
1995 {
1996 src_install_libgnat-common || die
1997 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1998 then
1999 keep_dev_package_libs_only32 "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
2000 fi
2001 }
2002
2003 src_install_libgnat-dev()
2004 {
2005 src_install_libgnat-common || die
2006 delete_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
2007 }
2008
2009 src_install_gcc-gnat()
2010 {
2011 cd ${SRCDIR}/build
2012 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
2013 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
2014 if [[ ${ARCH} = x86_64 ]]
2015 then
2016 # install 32bit libgnat
2017 # make tries to execute the libs, which fails
2018 # we override the INSTALL commands to *not* do that
2019 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-libada || die
2020 fi
2021 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
2022 minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
2023
2024 # remove libraries already included elsewhere
2025 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl\*.\* || die
2026 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat\*.\* || die
2027 if [[ $(mlibdir) != lib ]]
2028 then
2029 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl\*.\* || die
2030 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat\*.\* || die
2031 fi
2032
2033 # versionize all bins and symlink them
2034 versionize_all_bins || die
2035 }
2036 fi
2037
2038 if lang_enabled fortran
2039 then
2040 src_install_libgfortran-common()
2041 {
2042 install_gcc_library "libgfortran"
2043 }
2044
2045 src_install_libgfortran()
2046 {
2047 src_install_libgfortran-common || die
2048 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2049 then
2050 keep_dev_package_libs 'libgfortran.so.*' || die
2051 fi
2052 }
2053
2054 src_install_libgfortran-lib32()
2055 {
2056 src_install_libgfortran-common || die
2057 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2058 then
2059 keep_dev_package_libs_only32 'libgfortran.so.*' || die
2060 fi
2061 }
2062
2063 src_install_libgfortran-dev()
2064 {
2065 src_install_libgfortran-common || die
2066 delete_dev_package_libs 'libgfortran.so.*' || die
2067 }
2068
2069 src_install_gcc-gfortran()
2070 {
2071 cd ${SRCDIR}/build
2072
2073 # libcafsingle
2074 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
2075 if [[ ${ARCH} = x86_64 ]]
2076 then
2077 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
2078 fi
2079 # spec file
2080 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
2081 if [[ ${ARCH} = x86_64 ]]
2082 then
2083 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
2084 fi
2085 # finclude headers
2086 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
2087 if [[ ${ARCH} = x86_64 ]]
2088 then
2089 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
2090 fi
2091 # fortran c headers
2092 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-gfor_cHEADERS || die
2093 if [[ ${ARCH} = x86_64 ]]
2094 then
2095 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-gfor_cHEADERS || die
2096 fi
2097 # omp headers needed by fortran
2098 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
2099 # binaries
2100 mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
2101 mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
2102 mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
2103 # missing binaries
2104 minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
2105 mlink gfortran /usr/bin/f95 || die
2106
2107 # versionize all bins and symlink them
2108 versionize_all_bins || die
2109 }
2110 fi
2111
2112 if lang_enabled go
2113 then
2114 src_install_libgo-common()
2115 {
2116 install_gcc_library "libgo" || die
2117 }
2118
2119 src_install_libgo()
2120 {
2121 src_install_libgo-common || die
2122 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2123 then
2124 keep_dev_package_libs 'libgo.so.*' || die
2125 fi
2126 }
2127
2128 src_install_libgo-lib32()
2129 {
2130 src_install_libgo-common || die
2131 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2132 then
2133 keep_dev_package_libs_only32 'libgo.so.*' || die
2134 fi
2135 }
2136
2137 src_install_libgo-dev()
2138 {
2139 src_install_libgo-common || die
2140 delete_dev_package_libs 'libgo.so.*' || die
2141 }
2142
2143 src_install_gcc-go()
2144 {
2145 cd ${SRCDIR}/build
2146 mmake -C ${CHOST}/libgo DESTDIR=${BINDIR} install-exec-am || die
2147 mmake -C ${CHOST}/32/libgo DESTDIR=${BINDIR} install-exec-am || die
2148
2149 mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
2150 mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
2151 mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
2152 make DESTDIR=${BINDIR} install-gotools || die
2153 minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2154
2155 # remove libraries already included elsewhere
2156 mdelete /usr/$(mlibdir)/libgo.so\* || die
2157 if [[ $(ARCH=i686 mlibdir) != lib ]]
2158 then
2159 mdelete /usr/$(ARCH=i686 mlibdir)/libgo.so\* || die
2160 fi
2161
2162 # versionize all bins and symlink them
2163 versionize_all_bins || die
2164 }
2165 fi
2166
2167 if lang_enabled objc
2168 then
2169 src_install_libobjc()
2170 {
2171 cd ${SRCDIR}/build
2172 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
2173 if [[ ${ARCH} = x86_64 ]] && [[ ${MAGE_LIB32_SPLIT} != true ]]
2174 then
2175 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
2176 fi
2177
2178 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2179 then
2180 keep_dev_package_libs 'libobjc.so.*' || die
2181 fi
2182 }
2183
2184 src_install_libobjc-lib32()
2185 {
2186 cd ${SRCDIR}/build
2187 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
2188
2189 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
2190 then
2191 keep_dev_package_libs_only32 'libobjc.so.*' || die
2192 fi
2193 }
2194
2195 src_install_libobjc-dev()
2196 {
2197 cd ${SRCDIR}/build
2198 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
2199 if [[ ${ARCH} = x86_64 ]]
2200 then
2201 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
2202 fi
2203 delete_dev_package_libs 'libobjc.so.*' || die
2204 }
2205
2206 src_install_gcc-objc()
2207 {
2208 cd ${SRCDIR}/build
2209 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
2210 if [[ ${ARCH} = x86_64 ]]
2211 then
2212 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
2213 fi
2214 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2215 minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2216 }
2217
2218 if lang_enabled obj-c++
2219 then
2220 src_install_gcc-objc++()
2221 {
2222 cd ${SRCDIR}/build
2223 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2224 minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2225 }
2226 fi
2227 fi
2228
2229 if lang_enabled lto
2230 then
2231 src_install_lto-dump()
2232 {
2233 cd ${SRCDIR}/build
2234 mmake -C gcc DESTDIR=${BINDIR} lto.install-common || die
2235 mmake -C gcc DESTDIR=${BINDIR} lto.install-man || die
2236 mmake -C gcc DESTDIR=${BINDIR} lto.install-info || die
2237 }
2238 fi
2239
2240 if lang_enabled jit
2241 then
2242 src_install_libgccjit()
2243 {
2244 cd ${SRCDIR}/build
2245 mmake -C gcc DESTDIR=${BINDIR} jit.install-common || die
2246 mmake -C gcc DESTDIR=${BINDIR} jit.install-info || die
2247 }
2248 fi
2249
2250 if lang_enabled d
2251 then
2252 src_install_libphobos()
2253 {
2254 cd ${SRCDIR}/build
2255 make -C ${CHOST}/libphobos DESTDIR=${BINDIR} install || die
2256 if [[ ${ARCH} = x86_64 ]] && [[ ${MAGE_LIB32_SPLIT} != true ]]
2257 then
2258 make -C ${CHOST}/32/libphobos DESTDIR=${BINDIR} install || die
2259 fi
2260
2261 # remove specfile and includes, included in gcc-d package
2262 mdelete /usr/$(mlibdir)/libgphobos.spec || die
2263 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/d
2264 if [[ $(ARCH=i686 mlibdir) != lib ]] && [[ ${MAGE_LIB32_SPLIT} != true ]]
2265 then
2266 mdelete /usr/$(ARCH=i686 mlibdir)/libgphobos.spec || die
2267 mdelete -r /usr/$(ARCH=i686 mlibdir)/gcc/${CHOST}/${PVER}/include/d || die
2268 fi
2269 }
2270
2271 src_install_libphobos-lib32()
2272 {
2273 cd ${SRCDIR}/build
2274 make -C ${CHOST}/32/libphobos DESTDIR=${BINDIR} install || die
2275
2276 # remove specfile and includes, included in gcc-d package
2277 mdelete /usr/$(ARCH=i686 mlibdir)/libgphobos.spec || die
2278 mdelete -r /usr/$(ARCH=i686 mlibdir)/gcc/${CHOST}/${PVER}/include/d || die
2279 }
2280
2281 src_install_gcc-d()
2282 {
2283 cd ${SRCDIR}/build
2284
2285 mmake -C gcc DESTDIR=${BINDIR} d.install-common || die
2286 mmake -C gcc DESTDIR=${BINDIR} d.install-man || die
2287 mmake -C gcc DESTDIR=${BINDIR} d.install-info || die
2288
2289 # libphobos spec, includes and static libs
2290 mmake -C ${CHOST}/libphobos DESTDIR=${BINDIR} install || die
2291 mdelete /usr/$(mlibdir)/libgphobos.so\* || die
2292 mdelete /usr/$(mlibdir)/libgdruntime.so\* || die
2293 if [[ $(ARCH=i686 mlibdir) != lib ]]
2294 then
2295 mdelete /usr/$(ARCH=i686 mlibdir)/libgphobos.so\* || die
2296 mdelete /usr/$(ARCH=i686 mlibdir)/libgdruntime.so\* || die
2297 fi
2298
2299 # missing executables
2300 minstalldir /usr/bin || die
2301 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2302 minstallexec gcc/gdc || die
2303 minstallexec gcc/d21 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
2304
2305 # versionize all bins and symlink them
2306 versionize_all_bins || die
2307 }
2308 fi