Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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