Magellan Linux

Contents of /smage/trunk/core/gcc/gcc-6.2.0-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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