Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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