Magellan Linux

Contents of /trunk/core/gcc/gcc-4.7.2-r6.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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