Magellan Linux

Contents of /trunk/core/gcc/gcc-5.2.0-r3.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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