Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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