Magellan Linux

Contents of /smage/trunk/core/gcc/gcc-6.2.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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