Magellan Linux

Contents of /trunk/core/gcc/gcc-4.8.0-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17037 - (show annotations) (download)
Sat Apr 6 19:52:17 2013 UTC (11 years, 2 months ago) by niro
File size: 27475 byte(s)
-fixed missing count var
1 # $Id$
2
3 PNAME="gcc"
4 PVER="4.8.0"
5 PBUILD="r1"
6
7 PCAT="sys-dev"
8 HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
9
10 # packages which needs rebuild: libtool java-gcj-compat llvm
11
12 # languages to build into gcc
13 # options are: c,c++,java,ada,fortran,go,objc,obj-c++,lto
14 # obj-c++ requires objc
15 #
16 # while toolchain boostrap, only build c,c++ and after that rebuild the whole toolchain:
17 # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
18 MyLanguages=c,c++,ada,java,fortran,go,objc,obj-c++,lto
19
20 # 1=bootsrap the whole gcc suite, using bootstrap-lean method
21 # 0=no bootstrap, use this only for quick builds to test something but never for release
22 GCC_BOOTSTRAP="1"
23
24 # 1=bootsrap ada, using precompiled gnat binaries
25 # 0=no bootstrap, build ada with system gnat - requires sys-dev/gcc-gnat
26 ADA_BOOTSTRAP="0"
27
28 SPLIT_PACKAGES="libgcc libssp libgomp libmudflap libquadmath libitm libatomic libstdc++ libasan"
29
30 # split solib names
31 SPLIT_SOLIBS="libgcc_s libssp libgomp libmudflap libquadmath libitm libatomic libstdc++ libasan"
32
33 # thread sanitizer is only available on x86_64
34 if [[ ${ARCH} = x86_64 ]]
35 then
36 SPLIT_PACKAGES+=" libtsan"
37 SPLIT_SOLIBS+=" libtsan"
38 fi
39
40 # always enable gcc
41 SPLIT_PACKAGES+=" gcc"
42
43 # helper functions
44 lang_enabled()
45 {
46 local lang="$1"
47
48 if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
49 then
50 return 0
51 else
52 return 1
53 fi
54 }
55
56 versionize_all_bins()
57 {
58 local bin
59
60 for bin in $(find ${BINDIR}/usr/bin -type f)
61 do
62 echo ${bin}
63 mv ${bin} ${bin}-${PVER} || die
64 ln -snf $(basename ${bin}-${PVER}) ${bin} || die
65 done
66 }
67
68 remove_split_solibs()
69 {
70 local libname
71
72 for libname in ${SPLIT_SOLIBS}
73 do
74 rm -f ${BINDIR}/usr/$(mlibdir)/${libname}*.* || die
75 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
76 then
77 rm -f ${BINDIR}/usr/$(mlibdir)/${libname}*.* || die
78 fi
79 done
80 }
81
82 # install_gcc_library TARGET LIBNAME
83 install_gcc_library()
84 {
85 local target="$1"
86 local argv=( $@ )
87 local libnames
88 local i
89 local count="${argv[*]}"
90
91 for ((i=1; i<count; i++))
92 do
93 libnames+=" ${argv[${i}]}"
94 done
95
96 [[ -n ${target} ]] || die "missing target"
97 # default to target
98 [[ -z ${libnames} ]] && libnames="${target}"
99
100 make DESTDIR=${BINDIR} install-target-${target} || die
101
102 # cleanup, only keep the libs, everything else get provided by the gcc-package
103 zapmost ${BINDIR}/usr/$(mlibdir) $(for i in ${libnames}; do echo -n " ${i}*.*"; done) || die
104
105 # multilib as well
106 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
107 then
108 zapmost ${BINDIR}/usr/lib $(for i in ${libnames}; do echo -n " ${i}*.*"; done) || die
109 fi
110 }
111
112 if lang_enabled java
113 then
114 SPLIT_PACKAGES+=" libgcj gcc-gcj"
115 JAVA_DEPEND=">= dev-java/eclipse-ecj-3.6
116 >= dev-java/fastjar-0.98
117 >= sys-apps/file-5
118 >= app-arch/unzip-6
119 >= app-arch/zip-3
120 >= media-libs/alsa-lib-1.0.26
121 >= x11-libs/libSM-1.2
122 >= x11-libs/libXtst-1.2
123 >= dev-libs/glib2-2.34
124 >= x11-libs/gtk2+-2.24
125 >= media-libs/libart_lgpl-2.3.21"
126
127 # provided java version
128 JAVA_PVER="1.5.0-gcj-1.5.0.0"
129
130 SPLIT_SOLIBS+=" libgcj libgij"
131 fi
132
133 if lang_enabled ada
134 then
135 SPLIT_PACKAGES+=" libgnat gcc-gnat"
136 ADA_DEPEND=""
137 if [[ ${ADA_BOOTSTRAP} = 1 ]]
138 then
139 GNAT_BIN_x86="gnatboot-4.3-i686.tar.bz2"
140 GNAT_BIN_x86_64="gnatboot-4.3-amd64.tar.bz2"
141 GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
142 GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
143 SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86} )
144 SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86_64} )
145 fi
146 fi
147
148 if lang_enabled fortran
149 then
150 SPLIT_PACKAGES+=" libgfortran gcc-gfortran"
151 FORTRAN_DEPEND=""
152
153 SPLIT_SOLIBS+=" libgfortran"
154 fi
155
156 if lang_enabled go
157 then
158 SPLIT_PACKAGES+=" libgo gcc-go"
159 GO_DEPEND=""
160
161 SPLIT_SOLIBS+=" libgo"
162 fi
163
164 if lang_enabled objc
165 then
166 SPLIT_PACKAGES+=" libobjc gcc-objc"
167 OBJC_DEPEND=""
168
169 SPLIT_SOLIBS+=" libobjc"
170
171 if lang_enabled obj-c++
172 then
173 SPLIT_PACKAGES+=" gcc-objc++"
174 OBJCPP_DEPEND=""
175 fi
176 fi
177
178 COMMON_DEPEND=">= virtual/glibc"
179 LIBGCC_DEPEND="${COMMON_DEPEND}"
180 LIBSSP_DEPEND="${COMMON_DEPEND}"
181 LIBGOMP_DEPEND="${COMMON_DEPEND}"
182 LIBMUDFLAP_DEPEND="${COMMON_DEPEND}"
183 LIBQUADMATH_DEPEND="${COMMON_DEPEND}"
184 LIBITM_DEPEND="${COMMON_DEPEND}"
185 LIBATOMIC_DEPEND="${COMMON_DEPEND}"
186 LIBASAN_DEPEND="${COMMON_DEPEND}"
187 LIBTSAN_DEPEND="${COMMON_DEPEND}"
188 LIBSTDCPP_DEPEND="${COMMON_DEPEND}"
189
190 GCC_DEPEND="${COMMON_DEPEND}
191 >= sys-dev/binutils-2.23
192 >= dev-libs/gmp-5.1
193 >= dev-libs/mpfr-3.1
194 >= dev-libs/mpc-1.0.1
195 >= dev-libs/ppl-1.0
196 >= dev-libs/cloog-0.18
197 >= dev-libs/elfutils-0.155"
198
199 SDEPEND="${LIBGCC_DEPEND}
200 ${LIBSSP_DEPEND}
201 ${LIBGOMP_DEPEND}
202 ${LIBMUDFLAP_DEPEND}
203 ${LIBQUADMATH_DEPEND}
204 ${LIBITM_DEPEND}
205 ${LIBATOMIC_DEPEND}
206 ${LIBASAN_DEPEND}
207 ${LIBTSAN_DEPEND}
208 ${LIBSTDCPP_DEPEND}
209 ${GCC_DEPEND}
210 ${JAVA_DEPEND}
211 ${ADA_DEPEND}
212 ${FORTRAN_DEPEND}
213 ${GO_DEPEND}
214 ${OBJC_DEPEND}
215 ${OBJCPP_DEPEND}
216 >= virtual/kernel-headers"
217
218 if [[ ${ADA_BOOTSTRAP} != 1 ]]
219 then
220 # add gnat to SDEPEND
221 SDEPEND="${SDEPEND}
222 >= sys-dev/gcc-gnat-4.8"
223 fi
224
225 SRCFILE="${PNAME}-${PVER}.tar.bz2"
226 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
227
228 # you better off when not using distcc to compile
229 # your new compiler :) maybe not all are the same
230 msetfeature "!distcc"
231
232 sminclude mtools cleanutils libtool
233
234 SRC_URI=(
235 ${SRC_URI[*]}
236 gnu://${PNAME}/${PNAME}-${PVER}/${SRCFILE}
237 mirror://${PNAME}/${SRCFILE}
238 mirror://${PNAME}/${PNAME}-4.5.1-no-fixincludes.patch
239 mirror://${PNAME}/${PNAME}-4.7.1-libada-pic.patch
240 )
241
242 UP2DATE="updatecmd 'http://ftp.gnu.org/gnu/${PNAME}/?C=M;O=A' | grep '\[DIR\]' | sed -n 's:.*${PNAME}-\(.*\)/.*:\1:;$ p'"
243
244 # gcc don't like strong CFLAGS
245 export CFLAGS="${CFLAGS//-O?} -O2"
246 export CXXFLAGS="${CFLAGS}"
247
248 # check for crosscompile or export default CHOST
249 if [[ -z ${CTARGET} ]]
250 then
251 # no crosscompile defined
252 export CTARGET=${CHOST}
253 else
254 # use crosscompile host
255 export CTARGET=${CTARGET}
256 fi
257
258 split_info_gcc()
259 {
260 DESCRIPTION="Modern C/C++ compiler written by the GNU people."
261
262 local mydeps
263 if [[ ${ARCH} = x86_64 ]]
264 then
265 mydeps="== sys-libs/libtsan-${PVER}"
266 fi
267
268 DEPEND="== sys-libs/libgcc-${PVER}
269 == sys-libs/libssp-${PVER}
270 == sys-libs/libgomp-${PVER}
271 == sys-libs/libmudflap-${PVER}
272 == sys-libs/libquadmath-${PVER}
273 == sys-libs/libitm-${PVER}
274 == sys-libs/libatomic-${PVER}
275 == sys-libs/libstdc++-${PVER}
276 == sys-libs/libasan-${PVER}
277 ${mydeps}
278 ${GCC_DEPEND}"
279 }
280
281 split_info_libgcc()
282 {
283 DESCRIPTION="GCC shared support library."
284 DEPEND="${LIBGCC_DEPEND}"
285 PCAT="sys-libs"
286 }
287
288 split_info_libssp()
289 {
290 DESCRIPTION="Stack Smashing Protection library from GCC."
291 DEPEND="${LIBSSP_DEPEND}"
292 PCAT="sys-libs"
293 }
294
295 split_info_libgomp()
296 {
297 DESCRIPTION="GNU OpenMP runtime library."
298 DEPEND="${LIBGOMP_DEPEND}"
299 PCAT="sys-libs"
300 }
301
302 split_info_libmudflap()
303 {
304 DESCRIPTION="GCC mudflap shared support library."
305 DEPEND="${LIBMUDFLAP_DEPEND}"
306 PCAT="sys-libs"
307 }
308
309 split_info_libquadmath()
310 {
311 DESCRIPTION="GCC __float128 shared support library."
312 DEPEND="${LIBQUADMATH_DEPEND}"
313 PCAT="sys-libs"
314 }
315
316 split_info_libitm()
317 {
318 DESCRIPTION="The GNU Transactional Memory library."
319 DEPEND="${LIBITM_DEPEND}"
320 PCAT="sys-libs"
321 }
322
323 split_info_libatomic()
324 {
325 DESCRIPTION="The GNU Atomic library."
326 DEPEND="${LIBATOMIC_DEPEND}"
327 PCAT="sys-libs"
328 }
329
330 split_info_libasan()
331 {
332 DESCRIPTION="The Address Sanitizer runtime library."
333 DEPEND="${LIBASAN_DEPEND}
334 == sys-libs/libgcc-${PVER}
335 == sys-libs/libstdc++-${PVER}"
336 PCAT="sys-libs"
337 }
338
339 split_info_libtsan()
340 {
341 DESCRIPTION="The Thread Sanitizer runtime library."
342 DEPEND="${LIBTSAN_DEPEND}
343 == sys-libs/libgcc-${PVER}"
344 PCAT="sys-libs"
345 }
346
347 split_info_libstdc++()
348 {
349 DESCRIPTION="Standard GNU C and C++ libraries."
350 DEPEND="== sys-libs/libgcc-${PVER}
351 ${LIBSTDCPP_DEPEND}"
352 PCAT="sys-libs"
353 }
354
355 if lang_enabled java
356 then
357 split_info_libgcj()
358 {
359 DESCRIPTION="Java runtime library for GCC."
360 DEPEND="== sys-libs/libgcc-${PVER}
361 ${JAVA_DEPEND}"
362 PCAT="sys-libs"
363 }
364
365 split_info_gcc-gcj()
366 {
367 DESCRIPTION="Java support for GCC."
368 DEPEND="== sys-libs/libgcc-${PVER}
369 == sys-libs/libstdc++-${PVER}
370 == sys-libs/libgcj-${PVER}
371 == sys-dev/gcc-${PVER}
372 ${JAVA_DEPEND}"
373 }
374 fi
375
376 if lang_enabled ada
377 then
378 split_info_libgnat()
379 {
380 DESCRIPTION="Gnu Ada 95 library which is needed to run Ada programs."
381 DEPEND="== sys-libs/libgcc-${PVER}
382 ${ADA_DEPEND}"
383 PCAT="sys-libs"
384 }
385
386 split_info_gcc-gnat()
387 {
388 DESCRIPTION="Ada 95 support for GCC."
389 DEPEND="== sys-libs/libgcc-${PVER}
390 == sys-libs/libstdc++-${PVER}
391 == sys-libs/libgnat-${PVER}
392 == sys-dev/gcc-${PVER}
393 ${ADA_DEPEND}"
394 }
395 fi
396
397 if lang_enabled fortran
398 then
399 split_info_libgfortran()
400 {
401 DESCRIPTION="Gnu Fortran library which is needed to run Fortran programs."
402 DEPEND="== sys-libs/libquadmath-${PVER}
403 ${FORTRAN_DEPEND}"
404 PCAT="sys-libs"
405 }
406
407 split_info_gcc-gfortran()
408 {
409 DESCRIPTION="Fortran support for GCC."
410 DEPEND="== sys-libs/libgcc-${PVER}
411 == sys-libs/libstdc++-${PVER}
412 == sys-libs/libgfortran-${PVER}
413 == sys-dev/gcc-${PVER}
414 ${FORTRAN_DEPEND}"
415 }
416 fi
417
418 if lang_enabled go
419 then
420 split_info_libgo()
421 {
422 DESCRIPTION="Go library which is needed to run Go programs."
423 DEPEND="== sys-libs/libgcc-${PVER}
424 ${GO_DEPEND}"
425 PCAT="sys-libs"
426 }
427
428 split_info_gcc-go()
429 {
430 DESCRIPTION="Go support for GCC."
431 DEPEND="== sys-libs/libgcc-${PVER}
432 == sys-libs/libstdc++-${PVER}
433 == sys-libs/libgo-${PVER}
434 == sys-dev/gcc-${PVER}
435 ${GO_DEPEND}"
436 }
437 fi
438
439 if lang_enabled objc
440 then
441 split_info_libobjc()
442 {
443 DESCRIPTION="Objective-C library which is needed to run Objective-C programs."
444 DEPEND="== sys-libs/libgcc-${PVER}
445 ${OBJC_DEPEND}"
446 PCAT="sys-libs"
447 }
448
449 split_info_gcc-objc()
450 {
451 DESCRIPTION="Objective-C support for GCC."
452 DEPEND="== sys-libs/libgcc-${PVER}
453 == sys-libs/libstdc++-${PVER}
454 == sys-libs/libobjc-${PVER}
455 == sys-dev/gcc-${PVER}
456 ${OBJC_DEPEND}"
457 }
458
459 if lang_enabled obj-c++
460 then
461 split_info_gcc-objc++()
462 {
463 DESCRIPTION="Objective-C++ support for GCC."
464 DEPEND="== sys-libs/libgcc-${PVER}
465 == sys-libs/libstdc++-${PVER}
466 == sys-libs/libobjc-${PVER}
467 == sys-dev/gcc-${PVER}
468 == sys-dev/gcc-objc-${PVER}
469 ${OBJCPP_DEPEND}"
470 }
471 fi
472 fi
473
474 src_prepare()
475 {
476 munpack ${SRCFILE} || die
477
478 if lang_enabled ada
479 then
480 if [[ ${ADA_BOOTSTRAP} = 1 ]]
481 then
482 # setup binary ada if boostrap is enabled
483 install -d ${GNAT_BIN_SRCDIR} || die
484 munpack ${GNAT_BIN} ${GNAT_BIN_SRCDIR} || die
485 # gnat wrapper has problems with quotation
486 sed -i \
487 -e "/-DREVISION/d" \
488 -e "/-DDEVPHASE/d" \
489 -e "s: -DDATESTAMP=\$(DATESTAMP_s)::" \
490 ${SRCDIR}/gcc/Makefile.in || die
491 sed -i \
492 -e "s: DATESTAMP DEVPHASE REVISION::" \
493 -e "s:PKGVERSION:\"\":" \
494 ${SRCDIR}/gcc/version.c || die
495 fi
496 cd ${SRCDIR}
497 fi
498
499 cd ${SRCDIR}
500
501 # generic fixes
502 mpatch ${PNAME}-4.5.1-no-fixincludes.patch || die
503
504 # fix pic issues
505 mpatch ${PNAME}-4.7.1-libada-pic.patch || die
506
507 # suppress installation of libffi, we're using libffi3 instead
508 sed -i 's/\(install.*:\) install-.*recursive/\1/' libffi/Makefile.in || die
509 sed -i 's/\(install-data-am:\).*/\1/' libffi/include/Makefile.in || die
510
511 install -d ${SRCDIR}/build || die
512 }
513
514 src_compile()
515 {
516 if lang_enabled ada
517 then
518 if [[ ${ADA_BOOTSTRAP} = 1 ]]
519 then
520 # export binary gnat pathes
521 export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
522 export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
523 # CPATH is supposed to be applied for any language, thus
524 # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
525 export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
526 export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
527 export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
528 export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
529 export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
530 export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
531
532 # prepare some tools
533 cd ${GNAT_BIN_SRCDIR}
534 cp ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
535 cp ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
536 cp ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
537 cp ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
538 cp ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
539 cp ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
540 cp ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
541 gnatmake xtreeprs || die
542 gnatmake xsinfo || die
543 gnatmake xeinfo || die
544 gnatmake xnmake || die
545 fi
546 fi
547
548 cd ${SRCDIR}/build
549 local myconf
550
551 # Straight from the GCC install doc:
552 # "GCC has code to correctly determine the correct value for target
553 # for nearly all native systems. Therefore, we highly recommend you
554 # not provide a configure target when configuring a native compiler."
555 if [[ ${CHOST} != ${CTARGET} ]]
556 then
557 myconf+=" --target=${CTARGET}"
558 fi
559
560 if lang_enabled java
561 then
562 myconf+=" --enable-java-awt=gtk
563 --enable-gtk-cairo
564 --enable-libgcj-multifile
565 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
566 --with-fastjar=/usr/bin/fastjar
567 --enable-hash-synchronization"
568 # disable mutilib for java
569 myconf+=" --disable-libjava-multilib"
570 # java home, must be the same of java-gcj-compat
571 myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
572 fi
573
574 # # support ppl >= 1.0
575 # myconf+=" --disable-ppl-version-check"
576 # # and ignore version check for cloog too
577 # myconf+=" --disable-cloog-version-check"
578 # # use isl backend
579 # myconf+=" --enable-cloog-backend=isl"
580
581 # suppress installation of libiberty, as we will be
582 # using the one from binutils
583 myconf+=" --disable-install-libiberty"
584
585 # gcc >= 4.3 has now configure flags for uri and version - yeah!
586 AR=ar \
587 ../configure \
588 --with-bugurl="http://bugs.magellan-linux.de/" \
589 --with-pkgversion="Magellan-Linux" \
590 --build=${CHOST} \
591 --host=${CHOST} \
592 --prefix=/usr \
593 --sbindir=/usr/bin \
594 --mandir=/usr/share/man \
595 --infodir=/usr/share/info \
596 --libdir=/usr/$(mlibdir) \
597 --libexecdir=/usr/$(mlibdir) \
598 --enable-shared \
599 --enable-threads=posix \
600 --enable-__cxa_atexit \
601 --enable-clocale=gnu \
602 --disable-checking \
603 --with-system-zlib \
604 --enable-long-long \
605 --enable-cstdio=stdio \
606 --enable-languages=${MyLanguages} \
607 --disable-libstdcxx-pch \
608 --enable-gnu-unique-object \
609 --enable-lto \
610 --enable-plugin \
611 --enable-gold \
612 --enable-linker-build-id \
613 --disable-install-libiberty \
614 ${myconf} \
615 || die
616
617 # parallel builds seems to break sometimes on x86_64
618 local myopts
619 [[ ${ARCH} = x86_64 ]] && myopts=-j1
620
621 # enable bootstrap if requested
622 local target
623 [[ ${GCC_BOOTSTRAP} = 1 ]] && target="bootstrap-lean"
624
625 mmake ${myopts} ${target} || die
626 }
627
628 src_install_gcc()
629 {
630 local i
631 local bin
632
633 cd ${SRCDIR}/build
634 minstalldir /$(mlibdir) || die
635
636 # install all targets
637 make DESTDIR=${BINDIR} install || die
638
639 # deletes libstdc++ && libgcc_s && libssp && libgomp libmudflap && libquadmath && libitm && libatomic && libasan
640 # rm ${BINDIR}/usr/$(mlibdir)/{libgcc_s,libstdc++,libssp,libgomp,libmudflap,libquadmath,libitm,libatomic,libasan}*.* || die
641 # if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
642 # then
643 # rm ${BINDIR}/usr/lib/{libgcc_s,libstdc++,libssp,libgomp,libmudflap,libquadmath,libitm,libatomic,libasan}*.* || die
644 # fi
645 remove_split_solibs || die
646
647 # # thread sanitizer are only available on x86_64
648 # if [[ ${ARCH} = x86_64 ]]
649 # then
650 # rm ${BINDIR}/usr/$(mlibdir)/libtsan*.* || die
651 # fi
652
653 # deletes all java specific
654 if lang_enabled java
655 then
656 rm -r ${BINDIR}/usr/include/c++/${PVER}/{gcj,gnu,java{,x},org,sun} || die
657 # rm ${BINDIR}/usr/$(mlibdir)/{libgcj,libgij}*.* || die
658 rm -r ${BINDIR}/usr/$(mlibdir)/gcj* || die
659 rm ${BINDIR}/usr/$(mlibdir)/logging.properties || die
660 rm ${BINDIR}/usr/$(mlibdir)/pkgconfig/libgcj*.pc || die
661 rm -r ${BINDIR}/usr/$(mlibdir)/security || die
662 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ecj1 || die
663 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jc1 || die
664 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jvgenmain || die
665 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/gcj || die
666 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/{{jawt,jni}{,_md},jvmpi}.h || die
667 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
668 then
669 # rm ${BINDIR}/usr/lib/{libgcj,libgij}*.* || die
670 rm -r ${BINDIR}/usr/lib/gcj* || die
671 rm ${BINDIR}/usr/lib/logging.properties || die
672 rm -r ${BINDIR}/usr/lib/security || die
673 fi
674 rm ${BINDIR}/usr/share/info/cp-tools.info || die
675 rm -r ${BINDIR}/usr/share/java || die
676 rm -r ${BINDIR}/usr/share/gcc-${PVER}/python/libjava || die
677 for i in aot-compile gappletviewer gc-analyze gcj gcj-dbtool gcjh gij gjar \
678 gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry \
679 gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db ${CHOST}-gcj
680 do
681 if [ -f ${BINDIR}/usr/bin/${i} ]
682 then
683 rm ${BINDIR}/usr/bin/${i} || die
684 fi
685 if [ -f ${BINDIR}/usr/share/man/man1/${i}.1 ]
686 then
687 rm ${BINDIR}/usr/share/man/man1/${i}.1 || die
688 fi
689 done
690 fi
691
692 # deletes all ada specific
693 if lang_enabled ada
694 then
695 rm ${BINDIR}/usr/bin/gnat* || die
696 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib || die
697 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
698 if [[ $(mlibdir) != lib ]]
699 then
700 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib || die
701 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
702 fi
703 rm ${BINDIR}/usr/share/info/gnat*.info || die
704 fi
705
706 # deletes all fortran specific
707 if lang_enabled fortran
708 then
709 rm ${BINDIR}/usr/bin/gfortran || die
710 rm ${BINDIR}/usr/bin/${CHOST}-gfortran || die
711 # rm ${BINDIR}/usr/$(mlibdir)/libgfortran*.* || die
712 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
713 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/libgfortran*.* || die
714 if [[ $(mlibdir) != lib ]]
715 then
716 # rm ${BINDIR}/usr/lib/libgfortran*.* || die
717 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/libgfortran*.* || die
718 fi
719 rm ${BINDIR}/usr/share/info/gfortran.info || die
720 rm ${BINDIR}/usr/share/man/man1/gfortran.1 || die
721 fi
722
723 # deletes all go specific
724 if lang_enabled go
725 then
726 rm ${BINDIR}/usr/bin/gccgo || die
727 rm ${BINDIR}/usr/bin/${CHOST}-gccgo || die
728 # rm ${BINDIR}/usr/$(mlibdir)/libgo*.* || die
729 rm -r ${BINDIR}/usr/$(mlibdir)/go || die
730 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/go1 || die
731 if [[ $(mlibdir) != lib ]]
732 then
733 # rm ${BINDIR}/usr/lib/libgo*.* || die
734 rm -r ${BINDIR}/usr/lib/go || die
735 fi
736 rm ${BINDIR}/usr/share/info/gccgo.info || die
737 rm ${BINDIR}/usr/share/man/man1/gccgo.1 || die
738 fi
739
740 # deletes all objc + obj-c++
741 if lang_enabled objc
742 then
743 # rm ${BINDIR}/usr/$(mlibdir)/libobjc*.* || die
744 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1obj || die
745 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/objc || die
746 # if [[ $(mlibdir) != lib ]]
747 # then
748 # rm ${BINDIR}/usr/lib/libobjc*.* || die
749 # fi
750
751 if lang_enabled obj-c++
752 then
753 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1objplus || die
754 fi
755 fi
756
757 # versionize all bins and symlink them
758 versionize_all_bins || die
759
760 mlink ../usr/bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
761 # this one is needed on multilib systems.
762 # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
763 if [[ $(mlibdir) != lib ]]
764 then
765 minstalldir /usr/lib || die
766 mlink ../usr/bin/cpp-${PVER} /usr/lib/cpp || die
767 fi
768 mlink gcc-${PVER} /usr/bin/cc || die
769
770 # fix all .la files
771 # they may contain invalid libpathes which are not needed
772 local la
773 for la in $(find ${BINDIR} -name \*.la)
774 do
775 fix_la_file ${la} || die ${la}
776 done
777 }
778
779 src_install_libgcc()
780 {
781 cd ${SRCDIR}/build
782 install_gcc_library libgcc libgcc_s || die
783 }
784
785 src_install_libssp()
786 {
787 cd ${SRCDIR}/build
788 install_gcc_library libssp || die
789 }
790
791 src_install_libgomp()
792 {
793 cd ${SRCDIR}/build
794 install_gcc_library libgomp || die
795 }
796
797 src_install_libmudflap()
798 {
799 cd ${SRCDIR}/build
800 install_gcc_library libmudflap || die
801 }
802
803 src_install_libquadmath()
804 {
805 cd ${SRCDIR}/build
806 install_gcc_library libquadmath || die
807 }
808
809 src_install_libitm()
810 {
811 cd ${SRCDIR}/build
812 install_gcc_library libitm
813 }
814
815 src_install_libatomic()
816 {
817 cd ${SRCDIR}/build
818 install_gcc_library libatomic || die
819 }
820
821 src_install_libasan()
822 {
823 cd ${SRCDIR}/build
824 install_gcc_library libsanitizer libasan || die
825 }
826
827 src_install_libtsan()
828 {
829 cd ${SRCDIR}/build
830 install_gcc_library libsanitizer libtsan || die
831 }
832
833 src_install_libstdc++()
834 {
835 cd ${SRCDIR}/build
836 install_gcc_library libstdc++-v3 libstdc++ || die
837
838 # move gdb scripts to a proper location and to pretty-print ldconfig
839 minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
840 mv ${BINDIR}/usr/$(mlibdir)/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
841 # multilib as well
842 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
843 then
844 minstalldir /usr/share/gdb/auto-load/usr/lib || die
845 mv ${BINDIR}/usr/lib/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/lib/ || die
846 fi
847
848 # clean up everything else
849 zapmost ${BINDIR} usr/share/gdb/auto-load usr/$(mlibdir) $([[ $(mlibdir) != lib ]] && echo "usr/lib") || die
850 }
851
852 if lang_enabled java
853 then
854 src_install_libgcj()
855 {
856 cd ${SRCDIR}/build
857 install_gcc_library libjava libgcj libgij || die
858
859 # other stuff
860 rm -r ${BINDIR}/usr/{bin,include,share} || die
861 }
862
863 src_install_gcc-gcj()
864 {
865 cd ${SRCDIR}/build
866
867 # install only java targets
868 make DESTDIR=${BINDIR} install-target-libjava || die
869 make -C gcc DESTDIR=${BINDIR} java.install-common || die
870 make -C gcc DESTDIR=${BINDIR} java.install-man || die
871
872 # missing bins
873 minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
874 minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
875
876 # remove libraries already included elsewhere
877 remove_split_solibs || die
878 # rm ${BINDIR}/usr/$(mlibdir)/libgcj*.* || die
879 # rm ${BINDIR}/usr/$(mlibdir)/libgij*.* || die
880 #
881 # if [[ $(mlibdir) != lib ]]
882 # then
883 # rm ${BINDIR}/usr/lib/libgcj*.* || die
884 # rm ${BINDIR}/usr/lib/libgij*.* || die
885 # fi
886
887 # versionize all bins and symlink them
888 versionize_all_bins || die
889 }
890 fi
891
892 if lang_enabled ada
893 then
894 src_install_libgnat()
895 {
896 cd ${SRCDIR}/build
897 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
898 if [[ $(mlibdir) != lib ]]
899 then
900 # install 32bit libgnat
901 # make tries to execute the libs, which fails
902 # we override the INSTALL commands to *not* do that
903 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
904 fi
905 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
906
907 # remove other
908 rm -r ${BINDIR}/usr/bin || die
909
910 # move so-libs to the right location
911 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so /usr/$(mlibdir) || die
912 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so /usr/$(mlibdir) || die
913 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/lib{gnarl,gnat}.so || die
914 mlink libgnarl-${PVER%.*}.so /usr/$(mlibdir)/libgnarl.so || die
915 mlink libgnat-${PVER%.*}.so /usr/$(mlibdir)/libgnat.so || die
916 mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so || die
917 mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so || die
918 mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
919 mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
920 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
921 then
922 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
923
924 # move so-libs to the right location
925 minstalldir /usr/lib || die
926 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so /usr/lib || die
927 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so /usr/lib || die
928 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/lib{gnarl,gnat}.so || die
929 mlink libgnarl-${PVER%.*}.so /usr/lib/libgnarl.so || die
930 mlink libgnat-${PVER%.*}.so /usr/lib/libgnat.so || die
931 mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so || die
932 mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so || die
933 mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
934 mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
935 fi
936 }
937
938 src_install_gcc-gnat()
939 {
940 cd ${SRCDIR}/build
941 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
942 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
943 minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
944
945 # remove libraries already included elsewhere
946 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl*.* || die
947 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat*.* || die
948
949 # versionize all bins and symlink them
950 versionize_all_bins || die
951 }
952 fi
953
954 if lang_enabled fortran
955 then
956 src_install_libgfortran()
957 {
958 cd ${SRCDIR}/build
959 install_gcc_library libgfortran || die
960 }
961
962 src_install_gcc-gfortran()
963 {
964 cd ${SRCDIR}/build
965 mmake DESTDIR=${BINDIR} install-target-libgfortran || die
966
967 # omp headers needed by fortran
968 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
969 mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
970 mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
971 mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
972 # missing binary
973 minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
974
975 # remove libraries already included elsewhere
976 remove_split_solibs || die
977 # rm ${BINDIR}/usr/$(mlibdir)/libgfortran*.* || die
978 # if [[ $(mlibdir) != lib ]]
979 # then
980 # rm ${BINDIR}/usr/lib/libgfortran*.* || die
981 # fi
982
983 # versionize all bins and symlink them
984 versionize_all_bins || die
985 }
986 fi
987
988 if lang_enabled go
989 then
990 src_install_libgo()
991 {
992 cd ${SRCDIR}/build
993 install_gcc_library libgo || die
994 }
995
996 src_install_gcc-go()
997 {
998 cd ${SRCDIR}/build
999 mmake DESTDIR=${BINDIR} install-target-libgo || die
1000 mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
1001 mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
1002 mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
1003 minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1004
1005 # remove libraries already included elsewhere
1006 remove_split_solibs || die
1007 # rm ${BINDIR}/usr/$(mlibdir)/libgo*.* || die
1008 # if [[ $(mlibdir) != lib ]]
1009 # then
1010 # rm ${BINDIR}/usr/lib/libgo*.* || die
1011 # fi
1012
1013 # versionize all bins and symlink them
1014 versionize_all_bins || die
1015 }
1016 fi
1017
1018 if lang_enabled objc
1019 then
1020 src_install_libobjc()
1021 {
1022 cd ${SRCDIR}/build
1023 install_gcc_library libobjc || die
1024 }
1025
1026 src_install_gcc-objc()
1027 {
1028 cd ${SRCDIR}/build
1029 # only needed for install, gets removed later on
1030 mmake DESTDIR=${BINDIR} install-target-libobjc || die
1031
1032 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1033 minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1034
1035 # remove libraries already included elsewhere
1036 remove_split_solibs || die
1037 # rm ${BINDIR}/usr/$(mlibdir)/libobjc*.* || die
1038 # if [[ $(mlibdir) != lib ]]
1039 # then
1040 # rm ${BINDIR}/usr/lib/libobjc*.* || die
1041 # fi
1042 }
1043
1044 if lang_enabled obj-c++
1045 then
1046 src_install_gcc-objc++()
1047 {
1048 cd ${SRCDIR}/build
1049 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1050 minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
1051 }
1052 fi
1053 fi