Magellan Linux

Contents of /trunk/core/gcc/gcc-5.3.0-r4.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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