Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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