Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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