Magellan Linux

Contents of /smage/trunk/core/gcc/gcc-5.1.0-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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