Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7549 - (show annotations) (download)
Mon Sep 21 10:43:38 2015 UTC (8 years, 8 months ago) by niro
File size: 44777 byte(s)
-toolchain binutils-2.25.1, glibc-2.22, gcc-5.2.0 rebuild, stage2
1 # $Id$
2
3 PNAME="gcc"
4 PVER="5.2.0"
5 PBUILD="r2"
6
7 # in-tree isl
8 ISL_PVER="0.14.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
38 # dev packages
39 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
40 then
41 SPLIT_PACKAGES+=" libgcc-dev libgomp-dev libquadmath-dev libitm-dev libatomic-dev libstdc++-dev libasan-dev libubsan-dev libcilkrts-dev libvtv-dev libmpx-dev"
42 fi
43
44 # thread/leak sanitizer is only available on x86_64
45 if [[ ${ARCH} = x86_64 ]]
46 then
47 SPLIT_PACKAGES+=" libtsan liblsan"
48 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
49 then
50 SPLIT_PACKAGES+=" libtsan-dev liblsan-dev"
51 fi
52 fi
53
54 # always enable gcc
55 SPLIT_PACKAGES+=" gcc"
56
57 # helper functions
58 lang_enabled()
59 {
60 local lang="$1"
61
62 if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
63 then
64 return 0
65 else
66 return 1
67 fi
68 }
69
70 install_gcc_library()
71 {
72 local library="$1"
73
74 cd ${SRCDIR}/build
75 mmake -C ${CHOST}/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
76 if [[ $(mlibdir) != lib ]]
77 then
78 if [ -d ${CHOST}/32/${library} ]
79 then
80 mmake -C ${CHOST}/32/${library} DESTDIR=${BINDIR} install-toolexeclibLTLIBRARIES || die
81 fi
82 fi
83 }
84
85 versionize_all_bins()
86 {
87 local bin
88
89 for bin in $(find ${BINDIR}/usr/bin -type f)
90 do
91 # only rename unversionized bins
92 if [[ ${bin//${PVER}} = ${bin} ]] && [[ ! -e ${bin}-${PVER} ]]
93 then
94 echo ${bin}
95 mv ${bin} ${bin}-${PVER} || die
96 ln -snf $(basename ${bin}-${PVER}) ${bin} || die
97 fi
98 done
99 }
100
101 keep_dev_package_libs()
102 {
103 local libs="$@"
104
105 # cleanup, only keep the libs, everything else get provided by the dev-package
106 zapmost ${BINDIR}/usr/$(mlibdir) "${libs}" || die
107 # multilib as well
108 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
109 then
110 zapmost ${BINDIR}/usr/lib "${libs}" || die
111 fi
112
113 # cleanup the rest, keep only libs
114 zapmost ${BINDIR} /usr/$(mlibdir) $([[ $(mlibdir) != lib ]] && echo "/usr/lib") || die
115 }
116
117 delete_dev_package_libs()
118 {
119 local libs="$@"
120 local i
121
122 # cleanup, the solibs are provided by the non-dev package
123 for i in ${libs}
124 do
125 rm ${BINDIR}/usr/$(mlibdir)/${i} || die
126 # multilib as well
127 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
128 then
129 rm ${BINDIR}/usr/lib/${i} || die
130 fi
131 done
132 }
133
134 GLIBC_DEPEND=">= virtual/glibc"
135 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
136 then
137 GLIBCDEV_DEPEND=">= virtual/glibc-dev"
138 fi
139 ZLIB_DEPEND=">= sys-libs/zlib-1.2.8"
140 COMMON_DEPEND="${GLIBC_DEPEND}
141 ${ZLIB_DEPEND}
142 >= dev-libs/gmp-6.0
143 >= dev-libs/mpfr-3.1.3
144 >= dev-libs/mpc-1.0.3"
145 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
146 then
147 COMMON_DEPEND="${COMMON_DEPEND}
148 >= dev-libs/gmp-dev-6.0"
149 fi
150 LIBGCC_DEPEND="${GLIBC_DEPEND}"
151 LIBGOMP_DEPEND="${GLIBC_DEPEND}"
152 LIBQUADMATH_DEPEND="${GLIBC_DEPEND}"
153 LIBITM_DEPEND="${GLIBC_DEPEND}"
154 LIBATOMIC_DEPEND="${GLIBC_DEPEND}"
155 LIBASAN_DEPEND="${GLIBC_DEPEND}"
156 LIBLSAN_DEPEND="${GLIBC_DEPEND}"
157 LIBUBSAN_DEPEND="${GLIBC_DEPEND}"
158 LIBTSAN_DEPEND="${GLIBC_DEPEND}"
159 LIBCILKRTS_DEPEND="${GLIBC_DEPEND}"
160 LIBVTV_DEPEND="${GLIBC_DEPEND}"
161 LIBMPX_DEPEND="${GLIBC_DEPEND}"
162 LIBSTDCPP_DEPEND="${GLIBC_DEPEND}"
163
164 GCC_DEPEND="${COMMON_DEPEND}
165 >= sys-dev/binutils-2.25.1
166 >= dev-libs/elfutils-0.163"
167 # >= dev-libs/isl-0.12
168 # >= dev-libs/cloog-0.18
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.0.29
204 >= x11-libs/libSM-1.2
205 >= x11-libs/libXtst-1.2
206 >= dev-libs/glib2-2.44
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}-${PVER}-gfortran-ice-segfault.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 # upstream gfortran regression fixes
819 # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66035
820 mpatch ${PNAME}-${PVER}-gfortran-ice-segfault.patch || die
821
822 # generic fixes
823 mpatch ${PNAME}-4.5.1-no-fixincludes.patch || die
824
825 # suppress installation of libffi, we're using libffi3 instead
826 sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
827 sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
828
829 install -d ${SRCDIR}/build || die
830 }
831
832 src_compile()
833 {
834 if lang_enabled ada
835 then
836 if [[ ${ADA_BOOTSTRAP} = 1 ]]
837 then
838 # export binary gnat pathes
839 export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
840 export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
841 # CPATH is supposed to be applied for any language, thus
842 # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
843 export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
844 export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
845 export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
846 export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
847 export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
848 export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
849
850 # prepare some tools
851 cd ${GNAT_BIN_SRCDIR}
852 cp -v ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
853 cp -v ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
854 cp -v ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
855 cp -v ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
856 cp -v ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
857 cp -v ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
858 cp -v ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
859 gnatmake xtreeprs || die
860 gnatmake xsinfo || die
861 gnatmake xeinfo || die
862 gnatmake xnmake || die
863 fi
864 fi
865
866 cd ${SRCDIR}/build
867 local myconf
868
869 # Straight from the GCC install doc:
870 # "GCC has code to correctly determine the correct value for target
871 # for nearly all native systems. Therefore, we highly recommend you
872 # not provide a configure target when configuring a native compiler."
873 if [[ ${CHOST} != ${CTARGET} ]]
874 then
875 myconf+=" --target=${CTARGET}"
876 fi
877
878 if lang_enabled java
879 then
880 myconf+=" --enable-java-awt=gtk
881 --enable-gtk-cairo
882 --enable-libgcj-multifile
883 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
884 --with-fastjar=/usr/bin/fastjar
885 --enable-hash-synchronization"
886 # disable mutilib for java
887 myconf+=" --disable-libjava-multilib"
888 # java home, must be the same of java-gcj-compat
889 myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
890 fi
891
892 # use isl backend
893 myconf+=" --with-isl"
894
895 # install libiberty, as we will NOT using the one from binutils
896 myconf+=" --enable-install-libiberty"
897
898 # enable memory protections extension
899 myconf+=" --enable-libmpx"
900
901 # no ssp, we use mpx
902 myconf+=" --disable-libssp"
903
904 # enable gold but use default linker as default
905 #myconf+=" --enable-gold"
906 #myconf+=" --with-plugin-ld=ld.gold"
907 #myconf+=" --enable-ld=default"
908
909 # use the old default c++ abi until LLVM is fixed
910 # later we switch to c++11
911 # see: http://allanmcrae.com/2015/06/the-case-of-gcc-5-1-and-the-two-c-abis/
912 myconf+=" --with-default-libstdcxx-abi=gcc4-compatible"
913
914 # gcc >= 4.3 has now configure flags for uri and version - yeah!
915 AR=ar \
916 ../configure \
917 --with-bugurl="http://bugs.magellan-linux.de/" \
918 --with-pkgversion="Magellan-Linux" \
919 --build=${CHOST} \
920 --host=${CHOST} \
921 --prefix=/usr \
922 --sbindir=/usr/bin \
923 --mandir=/usr/share/man \
924 --infodir=/usr/share/info \
925 --libdir=/usr/$(mlibdir) \
926 --libexecdir=/usr/$(mlibdir) \
927 --enable-shared \
928 --enable-threads=posix \
929 --enable-__cxa_atexit \
930 --enable-clocale=gnu \
931 --enable-checking=release \
932 --disable-libunwind-exceptions \
933 --with-linker-hash-style=gnu \
934 --with-system-zlib \
935 --enable-languages=${MyLanguages} \
936 --disable-libstdcxx-pch \
937 --enable-gnu-unique-object \
938 --enable-gnu-indirect-function \
939 --enable-lto \
940 --enable-plugin \
941 --enable-linker-build-id \
942 --disable-werror \
943 ${myconf} \
944 || die
945
946 # parallel builds seems to break sometimes on x86_64
947 local myopts
948 [[ ${ARCH} = x86_64 ]] && myopts=-j1
949
950 # enable bootstrap if requested
951 local target
952 [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
953
954 mmake ${myopts} ${target} || die
955 }
956
957 src_check()
958 {
959 cd ${SRCDIR}/build
960
961 # increase stack size to prevent test failures
962 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827
963 ulimit -s 32768
964
965 # do not abort on error as some are "expected"
966 mmake -k check || true
967 # list all
968 ${SRCDIR}/contrib/test_summary
969 # only summary
970 #${SRCDIR}/contrib/test_summary | grep -A7 "Summ"
971 }
972
973 src_install_gcc()
974 {
975 cd ${SRCDIR}/build
976
977 mmake -C gcc DESTDIR=${BINDIR} install-driver || die
978 mmake -C gcc DESTDIR=${BINDIR} install-cpp || die
979 mmake -C gcc DESTDIR=${BINDIR} install-gcc-ar || die
980 mmake -C gcc DESTDIR=${BINDIR} c++.install-common || die
981 mmake -C gcc DESTDIR=${BINDIR} install-headers || die
982 mmake -C gcc DESTDIR=${BINDIR} install-plugin || die
983
984 # missing bins
985 minstallexec gcc/gcov || die
986 minstallexec gcc/gcov-tool || die
987 minstallexec gcc/cc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
988 minstallexec gcc/cc1plus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
989 minstallexec gcc/collect2 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
990
991 # lto wrapper
992 if lang_enabled lto
993 then
994 mmake -C gcc DESTDIR=${BINDIR} install-lto-wrapper || die
995 minstallexec gcc/lto1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
996 fi
997
998 # install only libgcc crts
999 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install || die
1000 mdelete /usr/$(mlibdir)/libgcc_s.so\* || die
1001 if [[ $(mlibdir) != lib ]]
1002 then
1003 mmake -C ${CHOST}/32/libgcc DESTDIR=${BINDIR} install || die
1004 mdelete /usr/lib/libgcc_s.so\* || die
1005 fi
1006
1007 # install libstdc++ files
1008 mmake -C ${CHOST}/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1009 mmake -C ${CHOST}/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1010 mmake -C ${CHOST}/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1011 mmake -C ${CHOST}/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1012 if [[ $(mlibdir) != lib ]]
1013 then
1014 mmake -C ${CHOST}/32/libstdc++-v3/src DESTDIR=${BINDIR} install || die
1015 mmake -C ${CHOST}/32/libstdc++-v3/include DESTDIR=${BINDIR} install || die
1016 mmake -C ${CHOST}/32/libstdc++-v3/libsupc++ DESTDIR=${BINDIR} install || die
1017 mmake -C ${CHOST}/32/libstdc++-v3/python DESTDIR=${BINDIR} install || die
1018 fi
1019 # install libcc1 + gdb-plugins
1020 mmake DESTDIR=${BINDIR} install-libcc1 || die
1021 # move gdb scripts to a proper location and to pretty-print ldconfig
1022 minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
1023 mmove ${BINDIR}/usr/$(mlibdir)/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
1024 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
1025 then
1026 minstalldir /usr/share/gdb/auto-load/usr/lib || die
1027 mmove ${BINDIR}/usr/lib/libstdc++\*gdb.py\* /usr/share/gdb/auto-load/usr/lib/ || die
1028 fi
1029 # only keep static libstdcc++ lib
1030 mdelete /usr/$(mlibdir)/libstdc++.so\* || die
1031 if [[ $(mlibdir) != lib ]]
1032 then
1033 mdelete /usr/lib/libstdc++.so\* || die
1034 fi
1035
1036 # fixinclude header + scripts
1037 mmake DESTDIR=${BINDIR} install-fixincludes || die
1038 mmake -C gcc DESTDIR=${BINDIR} install-mkheaders || die
1039
1040 # lto plugin
1041 if lang_enabled lto
1042 then
1043 mmake -C lto-plugin DESTDIR=${BINDIR} install || die
1044 minstalldir /usr/$(mlibdir)/bfd-plugins || die
1045 mlink /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/liblto_plugin.so /usr/$(mlibdir)/bfd-plugins/ || die
1046 fi
1047
1048 # library headers: libcilkrts, libgomp, libitm, libsanitizer, libasan, libmpx
1049 mmake -C ${CHOST}/libcilkrts DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1050 mmake -C ${CHOST}/libcilkrts DESTDIR=${BINDIR} install-nodist_cilkincludeHEADERS || die
1051 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1052 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1053 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1054 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-nodist_libsubincludeHEADERS || die
1055 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1056 mmake -C ${CHOST}/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1057 mmake -C ${CHOST}/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1058 mmake -C ${CHOST}/libmpx DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1059 if [[ $(mlibdir) != lib ]]
1060 then
1061 mmake -C ${CHOST}/32/libcilkrts DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1062 mmake -C ${CHOST}/32/libgomp DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1063 mmake -C ${CHOST}/32/libitm DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1064 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_sanincludeHEADERS || die
1065 mmake -C ${CHOST}/32/libsanitizer DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1066 mmake -C ${CHOST}/32/libsanitizer/asan DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1067 mmake -C ${CHOST}/32/libmpx DESTDIR=${BINDIR} install-nodist_toolexeclibHEADERS || die
1068 fi
1069
1070 # install libiberty
1071 mmake -C libiberty DESTDIR=${BINDIR} install || die
1072 # install PIC version of libiberty
1073 minstallfile libiberty/pic/libiberty.a /usr/$(mlibdir) || die
1074
1075 # man and info pages
1076 mmake -C gcc DESTDIR=${BINDIR} install-man || die
1077 mmake -C gcc DESTDIR=${BINDIR} install-info || die
1078 # provided by split-packages
1079 if lang_enabled go
1080 then
1081 mdelete /usr/share/man/man1/gccgo.1 || die
1082 mdelete /usr/share/info/gccgo.info || die
1083 fi
1084 if lang_enabled fortran
1085 then
1086 mdelete /usr/share/man/man1/gfortran.1 || die
1087 mdelete /usr/share/info/gfortran.info || die
1088 fi
1089 if lang_enabled ada
1090 then
1091 mdelete /usr/share/info/gnat-style.info || die
1092 mdelete /usr/share/info/gnat_rm.info || die
1093 mdelete /usr/share/info/gnat_ugn.info || die
1094 fi
1095
1096 # install libcpp locales
1097 mmake -C libcpp DESTDIR=${BINDIR} install || die
1098 # install gcc locales
1099 mmake -C gcc DESTDIR=${BINDIR} install-po || die
1100
1101 # install posix conformance launcher scripts for c89 and c99
1102 cat > ${BINDIR}/usr/bin/c89 <<"EOF"
1103 #!/bin/sh
1104 fl="-std=c89"
1105 for opt
1106 do
1107 case "$opt" in
1108 -ansi|-std=c89|-std=iso9899:1990)
1109 fl=""
1110 ;;
1111 -std=*)
1112 echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
1113 exit 1
1114 ;;
1115 esac
1116 done
1117 exec gcc $fl ${1+"$@"}
1118 EOF
1119 cat > ${BINDIR}/usr/bin/c99 <<"EOF"
1120 #!/bin/sh
1121 fl="-std=c99"
1122 for opt
1123 do
1124 case "$opt" in
1125 -std=c99|-std=iso9899:1999)
1126 fl=""
1127 ;;
1128 -std=*)
1129 echo "`basename $0` called with non ISO C99 option $opt" >&2
1130 exit 1
1131 ;;
1132 esac
1133 done
1134 exec gcc $fl ${1+"$@"}
1135 EOF
1136 mchmod 0755 /usr/bin/c89 || die
1137 mchmod 0755 /usr/bin/c99 || die
1138
1139 # versionize all bins and symlink them
1140 versionize_all_bins || die
1141
1142 mlink ../bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
1143 # this one is needed on multilib systems.
1144 # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
1145 if [[ $(mlibdir) != lib ]]
1146 then
1147 minstalldir /usr/lib || die
1148 mlink ../bin/cpp-${PVER} /usr/lib/cpp || die
1149 fi
1150 mlink gcc-${PVER} /usr/bin/cc || die
1151
1152 # fix all .la files
1153 # they may contain invalid libpathes which are not needed
1154 local la
1155 for la in $(find ${BINDIR} -name \*.la)
1156 do
1157 fix_la_file ${la} || die ${la}
1158 done
1159
1160 # remove /lib dirs to be usr-move compat
1161 if [[ -d ${BINDIR}/$(mlibdir) ]]
1162 then
1163 mdelete -r /$(mlibdir) || die
1164 fi
1165 if [[ $(mlibdir) != lib ]]
1166 then
1167 if [[ -d ${BINDIR}/lib ]]
1168 then
1169 mdelete -r /lib || die
1170 fi
1171 fi
1172 }
1173
1174 src_install_libgcc-common()
1175 {
1176 cd ${SRCDIR}/build
1177 mmake -C ${CHOST}/libgcc DESTDIR=${BINDIR} install-shared || die
1178 if [[ $(mlibdir) != lib ]]
1179 then
1180 mmake -C${CHOST}/32/libgcc DESTDIR=${BINDIR} install-shared || die
1181 fi
1182 mdelete -r /usr/$(mlibdir)/gcc || die
1183 }
1184
1185 src_install_libgcc()
1186 {
1187 src_install_libgcc-common || die
1188 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1189 then
1190 keep_dev_package_libs 'libgcc_s.so.*' || die
1191 fi
1192 }
1193
1194 src_install_libgcc-dev()
1195 {
1196 src_install_libgcc-common || die
1197 delete_dev_package_libs 'libgcc_s.so.*' || die
1198 }
1199
1200 src_install_libgomp-common()
1201 {
1202 install_gcc_library "libgomp" || die
1203 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-info || die
1204 }
1205
1206 src_install_libgomp()
1207 {
1208 src_install_libgomp-common || die
1209 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1210 then
1211 keep_dev_package_libs 'libgomp.so.*' || die
1212 fi
1213 }
1214
1215 src_install_libgomp-dev()
1216 {
1217 src_install_libgomp-common || die
1218 delete_dev_package_libs 'libgomp.so.*' || die
1219 }
1220
1221 src_install_libquadmath-common()
1222 {
1223 install_gcc_library "libquadmath" || die
1224 mmake -C ${CHOST}/libquadmath DESTDIR=${BINDIR} install-info || die
1225 }
1226
1227 src_install_libquadmath()
1228 {
1229 src_install_libquadmath-common || die
1230 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1231 then
1232 keep_dev_package_libs 'libquadmath.so.*' || die
1233 fi
1234 }
1235
1236 src_install_libquadmath-dev()
1237 {
1238 src_install_libquadmath-common || die
1239 delete_dev_package_libs 'libquadmath.so.*' || die
1240 }
1241
1242 src_install_libitm-common()
1243 {
1244 install_gcc_library "libitm"
1245 mmake -C ${CHOST}/libitm DESTDIR=${BINDIR} install-info || die
1246 }
1247
1248 src_install_libitm()
1249 {
1250 src_install_libitm-common || die
1251 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1252 then
1253 keep_dev_package_libs 'libitm.so.*' || die
1254 fi
1255 }
1256
1257 src_install_libitm-dev()
1258 {
1259 src_install_libitm-common || die
1260 delete_dev_package_libs 'libitm.so.*' || die
1261 }
1262
1263 src_install_libatomic-common()
1264 {
1265 install_gcc_library "libatomic" || die
1266 }
1267
1268 src_install_libatomic()
1269 {
1270 src_install_libatomic-common || die
1271 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1272 then
1273 keep_dev_package_libs 'libatomic.so.*' || die
1274 fi
1275 }
1276
1277 src_install_libatomic-dev()
1278 {
1279 src_install_libatomic-common || die
1280 delete_dev_package_libs 'libatomic.so.*' || die
1281 }
1282
1283 src_install_libasan-common()
1284 {
1285 install_gcc_library "libsanitizer/asan" || die
1286 }
1287
1288 src_install_libasan()
1289 {
1290 src_install_libasan-common || die
1291 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1292 then
1293 keep_dev_package_libs 'libasan.so.*' || die
1294 fi
1295 }
1296
1297 src_install_libasan-dev()
1298 {
1299 src_install_libasan-common || die
1300 delete_dev_package_libs 'libasan.so.*' || die
1301 }
1302
1303 src_install_liblsan-common()
1304 {
1305 install_gcc_library "libsanitizer/lsan" || die
1306 }
1307
1308 src_install_liblsan()
1309 {
1310 src_install_liblsan-common || die
1311 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1312 then
1313 keep_dev_package_libs 'liblsan.so.*' || die
1314 fi
1315 }
1316
1317 src_install_liblsan-dev()
1318 {
1319 src_install_liblsan-common || die
1320 delete_dev_package_libs 'liblsan.so.*' || die
1321 }
1322
1323 src_install_libubsan-common()
1324 {
1325 install_gcc_library "libsanitizer/ubsan" || die
1326 }
1327
1328 src_install_libubsan()
1329 {
1330 src_install_libubsan-common || die
1331 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1332 then
1333 keep_dev_package_libs 'libubsan.so.*' || die
1334 fi
1335 }
1336
1337 src_install_libubsan-dev()
1338 {
1339 src_install_libubsan-common || die
1340 delete_dev_package_libs 'libubsan.so.*' || die
1341 }
1342
1343 src_install_libtsan-common()
1344 {
1345 install_gcc_library "libsanitizer/tsan" || die
1346 }
1347
1348 src_install_libtsan()
1349 {
1350 src_install_libtsan-common || die
1351 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1352 then
1353 keep_dev_package_libs 'libtsan.so.*' || die
1354 fi
1355 }
1356 src_install_libtsan-dev()
1357 {
1358 src_install_libtsan-common || die
1359 delete_dev_package_libs 'libtsan.so.*' || die
1360 }
1361
1362 src_install_libcilkrts-common()
1363 {
1364 install_gcc_library "libcilkrts" || die
1365 }
1366
1367 src_install_libcilkrts()
1368 {
1369 src_install_libcilkrts-common || die
1370 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1371 then
1372 keep_dev_package_libs 'libcilkrts.so.*' || die
1373 fi
1374 }
1375
1376 src_install_libcilkrts-dev()
1377 {
1378 src_install_libcilkrts-common || die
1379 delete_dev_package_libs 'libcilkrts.so.*' || die
1380 }
1381
1382 src_install_libvtv-common()
1383 {
1384 install_gcc_library "libvtv" || die
1385 }
1386
1387 src_install_libvtv()
1388 {
1389 src_install_libvtv-common || die
1390 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1391 then
1392 keep_dev_package_libs 'libvtv.so.*' || die
1393 fi
1394 }
1395
1396 src_install_libvtv-dev()
1397 {
1398 src_install_libvtv-common || die
1399 delete_dev_package_libs 'libvtv.so.*' || die
1400 }
1401
1402 src_install_libmpx-common()
1403 {
1404 cd ${SRCDIR}/build
1405
1406 # does not support install-toolexeclibLTLIBRARIES
1407 mmake -C ${CHOST}/libmpx DESTDIR=${BINDIR} install || die
1408 mdelete /usr/$(mlibdir)/libmpx.spec || die
1409 if [[ $(mlibdir) != lib ]]
1410 then
1411 mmake -C ${CHOST}/32/libmpx DESTDIR=${BINDIR} install || die
1412 mdelete /usr/lib/libmpx.spec || die
1413 fi
1414 }
1415
1416 src_install_libmpx()
1417 {
1418 src_install_libmpx-common || die
1419 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1420 then
1421 keep_dev_package_libs 'libmpx.so.*' || die
1422 fi
1423 }
1424
1425 src_install_libmpx-dev()
1426 {
1427 src_install_libmpx-common || die
1428 delete_dev_package_libs 'libmpx.so.*' || die
1429 }
1430
1431 src_install_libstdc++-common()
1432 {
1433 install_gcc_library "libstdc++-v3/src" || die
1434 mmake -C ${CHOST}/libstdc++-v3/po DESTDIR=${BINDIR} install || die
1435 }
1436
1437 src_install_libstdc++()
1438 {
1439 src_install_libstdc++-common || die
1440 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1441 then
1442 keep_dev_package_libs 'libstdc++.so.*' || die
1443 fi
1444 }
1445
1446 src_install_libstdc++-dev()
1447 {
1448 src_install_libstdc++-common || die
1449 delete_dev_package_libs 'libstdc++.so.*' || die
1450 }
1451
1452 if lang_enabled java
1453 then
1454 src_install_libgcj-common()
1455 {
1456 install_gcc_library "libjava"
1457 }
1458
1459 src_install_libgcj()
1460 {
1461 src_install_libgcj-common || die
1462 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1463 then
1464 keep_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1465 fi
1466 }
1467
1468 src_install_libgcj-dev()
1469 {
1470 src_install_libgcj-common || die
1471 delete_dev_package_libs 'libgcj_bc.so.* libgcj-tools.so.* libgcj.so.* libgij.so.*' || die
1472 }
1473
1474 src_install_gcc-gcj()
1475 {
1476 cd ${SRCDIR}/build
1477
1478 # install only java targets
1479 make -C ${CHOST}/libjava DESTDIR=${BINDIR} install || die
1480 make -C gcc DESTDIR=${BINDIR} java.install-common || die
1481 make -C gcc DESTDIR=${BINDIR} java.install-man || die
1482
1483 # missing bins
1484 minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1485 minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1486
1487 # remove libraries and files already included elsewhere
1488 mmake -C ${CHOST}/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1489 mdelete /usr/$(mlibdir)/libgcj_bc.so\* || die
1490 if [[ $(mlibdir) != lib ]]
1491 then
1492 mmake -C ${CHOST}/32/libjava DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1493 mdelete /usr/lib/libgcj_bc.so\* || die
1494 fi
1495
1496 # versionize all bins and symlink them
1497 versionize_all_bins || die
1498 }
1499 fi
1500
1501 if lang_enabled ada
1502 then
1503 # gnat so-lib version
1504 solib_ver="$(echo ${PVER} | cut -d'.' -f1)"
1505
1506 src_install_libgnat-common()
1507 {
1508 cd ${SRCDIR}/build
1509 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1510 if [[ $(mlibdir) != lib ]]
1511 then
1512 # install 32bit libgnat
1513 # make tries to execute the libs, which fails
1514 # we override the INSTALL commands to *not* do that
1515 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1516 fi
1517 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
1518
1519 # move so-libs to the right location
1520 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so /usr/$(mlibdir) || die
1521 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so /usr/$(mlibdir) || die
1522 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1523 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1524 mlink libgnarl-${solib_ver}.so /usr/$(mlibdir)/libgnarl.so || die
1525 mlink libgnat-${solib_ver}.so /usr/$(mlibdir)/libgnat.so || die
1526 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${solib_ver}.so || die
1527 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${solib_ver}.so || die
1528 mlink ../../../../libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
1529 mlink ../../../../libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
1530
1531 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
1532
1533 if [[ $(mlibdir) != lib ]]
1534 then
1535 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
1536
1537 # move so-libs to the right location
1538 minstalldir /usr/lib || die
1539 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so /usr/lib || die
1540 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so /usr/lib || die
1541 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1542 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1543 mlink libgnarl-${solib_ver}.so /usr/lib/libgnarl.so || die
1544 mlink libgnat-${solib_ver}.so /usr/lib/libgnat.so || die
1545 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${solib_ver}.so || die
1546 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${solib_ver}.so || die
1547 mlink ../../../../../../lib/libgnarl-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
1548 mlink ../../../../../../lib/libgnat-${solib_ver}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
1549
1550 mdelete -r /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
1551 fi
1552
1553 # remove other
1554 mdelete -r /usr/bin || die
1555 }
1556
1557 src_install_libgnat()
1558 {
1559 src_install_libgnat-common || die
1560 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1561 then
1562 keep_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1563 fi
1564 }
1565
1566 src_install_libgnat-dev()
1567 {
1568 src_install_libgnat-common || die
1569 delete_dev_package_libs "libgnarl-${solib_ver}.so libgnarl.so libgnat-${solib_ver}.so libgnat.so" || die
1570 }
1571
1572 src_install_gcc-gnat()
1573 {
1574 cd ${SRCDIR}/build
1575 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
1576 if [[ $(mlibdir) != lib ]]
1577 then
1578 # install 32bit libgnat
1579 # make tries to execute the libs, which fails
1580 # we override the INSTALL commands to *not* do that
1581 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
1582 fi
1583 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
1584 minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
1585
1586 # remove libraries already included elsewhere
1587 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl\*.\* || die
1588 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat\*.\* || die
1589 if [[ $(mlibdir) != lib ]]
1590 then
1591 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl\*.\* || die
1592 mdelete /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat\*.\* || die
1593 fi
1594
1595 # versionize all bins and symlink them
1596 versionize_all_bins || die
1597 }
1598 fi
1599
1600 if lang_enabled fortran
1601 then
1602 src_install_libgfortran-common()
1603 {
1604 install_gcc_library "libgfortran"
1605 }
1606
1607 src_install_libgfortran()
1608 {
1609 src_install_libgfortran-common || die
1610 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1611 then
1612 keep_dev_package_libs 'libgfortran.so.*' || die
1613 fi
1614 }
1615
1616 src_install_libgfortran-dev()
1617 {
1618 src_install_libgfortran-common || die
1619 delete_dev_package_libs 'libgfortran.so.*' || die
1620 }
1621
1622 src_install_gcc-gfortran()
1623 {
1624 cd ${SRCDIR}/build
1625
1626 # omp headers needed by fortran
1627 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1628 # libcafsingle
1629 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1630 if [[ $(mlibdir) != lib ]]
1631 then
1632 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-cafexeclibLTLIBRARIES || die
1633 fi
1634 #libgfortranbegin
1635 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1636 if [[ $(mlibdir) != lib ]]
1637 then
1638 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-myexeclibLTLIBRARIES || die
1639 fi
1640 # spec file
1641 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1642 if [[ $(mlibdir) != lib ]]
1643 then
1644 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-toolexeclibDATA || die
1645 fi
1646 # finclude headers
1647 mmake -C ${CHOST}/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1648 if [[ $(mlibdir) != lib ]]
1649 then
1650 mmake -C ${CHOST}/32/libgfortran DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
1651 fi
1652 # binaries
1653 mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
1654 mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
1655 mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
1656 # missing binaries
1657 minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
1658 mlink gfortran /usr/bin/f95 || die
1659
1660 # versionize all bins and symlink them
1661 versionize_all_bins || die
1662 }
1663 fi
1664
1665 if lang_enabled go
1666 then
1667 src_install_libgo-common()
1668 {
1669 install_gcc_library "libgo" || die
1670 }
1671
1672 src_install_libgo()
1673 {
1674 src_install_libgo-common || die
1675 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1676 then
1677 keep_dev_package_libs 'libgo.so.*' || die
1678 fi
1679 }
1680
1681 src_install_libgo-dev()
1682 {
1683 src_install_libgo-common || die
1684 delete_dev_package_libs 'libgo.so.*' || die
1685 }
1686
1687 src_install_gcc-go()
1688 {
1689 cd ${SRCDIR}/build
1690 mmake DESTDIR=${BINDIR} install-target-libgo || die
1691 mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
1692 mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
1693 mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
1694 minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1695
1696 # remove libraries already included elsewhere
1697 mmake -C ${CHOST}/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1698 mmake -C ${CHOST}/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1699 if [[ $(mlibdir) != lib ]]
1700 then
1701 mmake -C ${CHOST}/32/libgo DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1702 mmake -C ${CHOST}/32/libatomic DESTDIR=${BINDIR} uninstall-toolexeclibLTLIBRARIES || die
1703 fi
1704
1705 # versionize all bins and symlink them
1706 versionize_all_bins || die
1707 }
1708 fi
1709
1710 if lang_enabled objc
1711 then
1712 src_install_libobjc-common()
1713 {
1714 install_gcc_library "libobjc" || die
1715 }
1716
1717 src_install_libobjc()
1718 {
1719 cd ${SRCDIR}/build
1720 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1721 if [[ $(mlibdir) != lib ]]
1722 then
1723 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1724 fi
1725
1726 if [[ ${ENABLE_DEV_PACKAGES} = 1 ]]
1727 then
1728 keep_dev_package_libs 'libobjc.so.*' || die
1729 fi
1730 }
1731
1732 src_install_libobjc-dev()
1733 {
1734 cd ${SRCDIR}/build
1735 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-libs || die
1736 if [[ $(mlibdir) != lib ]]
1737 then
1738 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-libs || die
1739 fi
1740 delete_dev_package_libs 'libobjc.so.*' || die
1741 }
1742
1743 src_install_gcc-objc()
1744 {
1745 cd ${SRCDIR}/build
1746 mmake -C ${CHOST}/libobjc DESTDIR=${BINDIR} install-headers || die
1747 if [[ $(mlibdir) != lib ]]
1748 then
1749 mmake -C ${CHOST}/32/libobjc DESTDIR=${BINDIR} install-headers || die
1750 fi
1751 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1752 minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1753 }
1754
1755 if lang_enabled obj-c++
1756 then
1757 src_install_gcc-objc++()
1758 {
1759 cd ${SRCDIR}/build
1760 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1761 minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1762 }
1763 fi
1764 fi