Magellan Linux

Contents of /smage/trunk/core/gcc/gcc-4.7.1-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3598 - (show annotations) (download)
Tue Jul 10 07:54:53 2012 UTC (11 years, 11 months ago) by niro
File size: 25555 byte(s)
auto added: ver bump to 4.7.1-r1
1 # $Id$
2
3 PNAME="gcc"
4 PVER="4.7.1"
5 PBUILD="r1"
6
7 PCAT="sys-dev"
8 HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
9
10 # languages to build into gcc
11 # options are: c,c++,java,ada,fortran,go,objc,obj-c++
12 # obj-c++ requires objc
13 #
14 # while toochain boostrap, only build c,c++ and after that rebuild the whole toolchain:
15 # linux-libc-headers -> binutils -> libc -> gcc -> binutils -> gcc -> libc
16 MyLanguages=c,c++
17
18 # 1=bootsrap ada, using precompiled gnat binaries
19 # 0=no bootstrap, build ada with system gnat - needs sys-dev/gnat
20 ADA_BOOTSTRAP="0"
21
22 SPLIT_PACKAGES="libgcc libssp libgomp libquadmath libstdc++ gcc"
23
24 # helper functions
25 lang_enabled()
26 {
27 local lang="$1"
28
29 if [[ ${MyLanguages//${lang}} != ${MyLanguages} ]]
30 then
31 return 0
32 else
33 return 1
34 fi
35 }
36
37 versionize_all_bins()
38 {
39 local bin
40
41 for bin in $(find ${BINDIR}/usr/bin -type f)
42 do
43 echo ${bin}
44 mv ${bin} ${bin}-${PVER} || die
45 ln -snf $(basename ${bin}-${PVER}) ${bin} || die
46 done
47 }
48
49 if lang_enabled java
50 then
51 SPLIT_PACKAGES+=" libgcj gcc-gcj"
52 JAVA_DEPEND=">= dev-java/eclipse-ecj-3.6
53 >= dev-java/fastjar-0.98
54 >= sys-apps/file-5
55 >= app-arch/unzip-6
56 >= app-arch/zip-3
57 >= media-libs/alsa-lib-1.0.25
58 >= x11-libs/libSM-1.2
59 >= x11-libs/libXtst-1.2
60 >= dev-libs/glib2-2.32
61 >= x11-libs/gtk2+-2.24
62 >= media-libs/libart_lgpl-2.3.21"
63
64 # provided java version
65 JAVA_PVER="1.5.0-gcj-1.5.0.0"
66 fi
67
68 if lang_enabled ada
69 then
70 SPLIT_PACKAGES+=" libgnat gcc-gnat"
71 ADA_DEPEND=""
72 if [[ ${ADA_BOOTSTRAP} = 1 ]]
73 then
74 GNAT_BIN_x86="gnatboot-4.3-i686.tar.bz2"
75 GNAT_BIN_x86_64="gnatboot-4.3-amd64.tar.bz2"
76 GNAT_BIN="$(eval echo \$GNAT_BIN_${ARCH/i*86/x86})"
77 GNAT_BIN_SRCDIR="${BUILDDIR}/gnat"
78 SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86} )
79 SRC_URI+=( mirror://${PNAME}/${GNAT_BIN_x86_64} )
80 fi
81 fi
82
83 if lang_enabled fortran
84 then
85 SPLIT_PACKAGES+=" libgfortran gcc-gfortran"
86 FORTRAN_DEPEND=""
87 fi
88
89 if lang_enabled go
90 then
91 SPLIT_PACKAGES+=" libgo gcc-go"
92 GO_DEPEND=""
93 fi
94
95 if lang_enabled objc
96 then
97 SPLIT_PACKAGES+=" libobjc gcc-objc"
98 OBJC_DEPEND=""
99
100 if lang_enabled obj-c++
101 then
102 SPLIT_PACKAGES+=" gcc-objc++"
103 OBJCPP_DEPEND=""
104 fi
105 fi
106
107 LIBGCC_DEPEND=">= virtual/glibc"
108 LIBSSP_DEPEND=">= virtual/glibc"
109 LIBGOMP_DEPEND=">= virtual/glibc"
110 LIBQUADMATH_DEPEND=">= virtual/glibc"
111 LIBSTDCPP_DEPEND=">= virtual/glibc"
112
113 GCC_DEPEND=">= sys-dev/binutils-2.22
114 >= virtual/glibc
115 >= dev-libs/gmp-5.0.5
116 >= dev-libs/mpfr-3.1
117 >= dev-libs/mpc-0.9
118 >= dev-libs/ppl-0.12.1
119 >= dev-libs/cloog-ppl-0.17.0
120 >= dev-libs/elfutils-0.153"
121
122 SDEPEND="${LIBGCC_DEPEND}
123 ${LIBSSP_DEPEND}
124 ${LIBGOMP_DEPEND}
125 ${LIBQUADMATH_DEPEND}
126 ${LIBSTDCPP_DEPEND}
127 ${GCC_DEPEND}
128 ${JAVA_DEPEND}
129 ${ADA_DEPEND}
130 ${FORTRAN_DEPEND}
131 ${GO_DEPEND}
132 ${OBJC_DEPEND}
133 ${OBJCPP_DEPEND}
134 >= virtual/kernel-headers"
135
136 if [[ ${ADA_BOOTSTRAP} != 1 ]]
137 then
138 # add gnat to SDEPEND
139 SDEPEND="${SDEPEND}
140 >= sys-dev/gcc-gnat-4.6"
141 fi
142
143 SRCFILE="${PNAME}-${PVER}.tar.bz2"
144 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
145
146 # you better off when not using distcc to compile
147 # your new compiler :) maybe not all are the same
148 msetfeature "!distcc"
149
150 sminclude mtools cleanutils libtool
151
152 SRC_URI=(
153 ${SRC_URI[*]}
154 gnu://${PNAME}/${PNAME}-${PVER}/${SRCFILE}
155 mirror://${PNAME}/${SRCFILE}
156 mirror://${PNAME}/${PNAME}-4.5.1-no-fixincludes.patch
157 mirror://${PNAME}/${PNAME}-4.7.0-cloog017.patch
158 mirror://${PNAME}/${PNAME}-4.7.1-libada-pic.patch
159 mirror://${PNAME}/${PNAME}-4.7.1-libgo-write.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}-4.7.0-cloog017.patch || die
376
377 # fix pic issues
378 mpatch ${PNAME}-4.7.1-libada-pic.patch || die
379
380 # fix compile issues
381 # see: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53679
382 mpatch ${PNAME}-4.7.1-libgo-write.patch || die
383
384 # suppress installation of libiberty, as we will be
385 # using the one from binutils
386 sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die
387
388 install -d ${SRCDIR}/build || die
389 }
390
391 src_compile()
392 {
393 if lang_enabled ada
394 then
395 if [[ ${ADA_BOOTSTRAP} = 1 ]]
396 then
397 # export binary gnat pathes
398 export PATH="${GNAT_BIN_SRCDIR}/usr/bin:${PATH}"
399 export CC="${GNAT_BIN_SRCDIR}/usr/bin/gnatgcc"
400 # CPATH is supposed to be applied for any language, thus
401 # superseding either of C/CPLUS/OBJC_INCLUDE_PATHs
402 export CPATH="${GNAT_BIN_SRCDIR}/usr/lib/include"
403 export LIB_DIR="${GNAT_BIN_SRCDIR}/usr/lib"
404 export LDFLAGS="-L${GNAT_BIN_SRCDIR}/usr/lib"
405 export LIBRARY_PATH="${GNAT_BIN_SRCDIR}/usr/lib"
406 export ADA_OBJECTS_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adalib"
407 export ADA_INCLUDE_PATH="${GNAT_BIN_SRCDIR}/usr/lib/adainclude"
408
409 # prepare some tools
410 cd ${GNAT_BIN_SRCDIR}
411 cp ${SRCDIR}/gcc/ada/xtreeprs.adb ${GNAT_BIN_SRCDIR} || die
412 cp ${SRCDIR}/gcc/ada/csinfo.adb ${GNAT_BIN_SRCDIR} || die
413 cp ${SRCDIR}/gcc/ada/ceinfo.adb ${GNAT_BIN_SRCDIR} || die
414 cp ${SRCDIR}/gcc/ada/xsinfo.adb ${GNAT_BIN_SRCDIR} || die
415 cp ${SRCDIR}/gcc/ada/xeinfo.adb ${GNAT_BIN_SRCDIR} || die
416 cp ${SRCDIR}/gcc/ada/xnmake.adb ${GNAT_BIN_SRCDIR} || die
417 cp ${SRCDIR}/gcc/ada/xutil.ad{s,b} ${GNAT_BIN_SRCDIR} || die
418 gnatmake xtreeprs || die
419 gnatmake xsinfo || die
420 gnatmake xeinfo || die
421 gnatmake xnmake || die
422 fi
423 fi
424
425 cd ${SRCDIR}/build
426 local myconf
427
428 # Straight from the GCC install doc:
429 # "GCC has code to correctly determine the correct value for target
430 # for nearly all native systems. Therefore, we highly recommend you
431 # not provide a configure target when configuring a native compiler."
432 if [[ ${CHOST} != ${CTARGET} ]]
433 then
434 myconf+=" --target=${CTARGET}"
435 fi
436
437 if lang_enabled java
438 then
439 myconf+=" --enable-java-awt=gtk
440 --enable-gtk-cairo
441 --enable-libgcj-multifile
442 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
443 --with-fastjar=/usr/bin/fastjar
444 --enable-hash-synchronization"
445 # disable mutilib for java
446 myconf+=" --disable-libjava-multilib"
447 # java home, must be the same of java-gcj-compat
448 myconf+=" --with-java-home=/usr/$(mlibdir)/jvm/java-${JAVA_PVER}/jre"
449 fi
450
451 # gcc >= 4.3 has now configure flags for uri and version - yeah!
452 AR=ar \
453 ../configure \
454 --with-bugurl="http://bugs.magellan-linux.de/" \
455 --with-pkgversion="Magellan-Linux" \
456 --build=${CHOST} \
457 --host=${CHOST} \
458 --prefix=/usr \
459 --sbindir=/usr/bin \
460 --mandir=/usr/share/man \
461 --infodir=/usr/share/info \
462 --libdir=/usr/$(mlibdir) \
463 --libexecdir=/usr/$(mlibdir) \
464 --enable-shared \
465 --enable-threads=posix \
466 --enable-__cxa_atexit \
467 --enable-clocale=gnu \
468 --disable-checking \
469 --with-system-zlib \
470 --enable-long-long \
471 --enable-cstdio=stdio \
472 --enable-languages=${MyLanguages} \
473 --disable-libstdcxx-pch \
474 --enable-gnu-unique-object \
475 --enable-lto \
476 --enable-plugin \
477 --enable-gold \
478 ${myconf} \
479 || die
480
481 # parallel builds seems to break sometimes on x86_64
482 local myopts
483 [[ ${ARCH} = x86_64 ]] && myopts=-j1
484
485 mmake ${myopts} bootstrap-lean || die
486 }
487
488 src_install_gcc()
489 {
490 local i
491 local bin
492
493 cd ${SRCDIR}/build
494 minstalldir /$(mlibdir) || die
495
496 # install all targets
497 make DESTDIR=${BINDIR} install || die
498
499 # deletes libstdc++ && libgcc_s && libssp && libgomp && libquadmath
500 rm ${BINDIR}/usr/$(mlibdir)/{libgcc_s*.*,libstdc++*.*,libssp*.*,libgomp*.*,libquadmath*.*} || die
501 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
502 then
503 rm ${BINDIR}/usr/lib/{libgcc_s*.*,libstdc++*.*,libssp*.*,libgomp*.*,libquadmath*.*} || die
504 fi
505
506 # deletes all java specific
507 if lang_enabled java
508 then
509 rm -r ${BINDIR}/usr/include/c++/${PVER}/{gcj,gnu,java{,x},org,sun} || die
510 rm ${BINDIR}/usr/$(mlibdir)/{libgcj*.*,libgij*.*} || die
511 rm -r ${BINDIR}/usr/$(mlibdir)/gcj* || die
512 rm ${BINDIR}/usr/$(mlibdir)/logging.properties || die
513 rm ${BINDIR}/usr/$(mlibdir)/pkgconfig/libgcj*.pc || die
514 rm -r ${BINDIR}/usr/$(mlibdir)/security || die
515 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ecj1 || die
516 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jc1 || die
517 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/jvgenmain || die
518 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/gcj || die
519 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/{{jawt,jni}{,_md},jvmpi}.h || die
520 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
521 then
522 rm ${BINDIR}/usr/lib/{libgcj*.*,libgij*.*} || die
523 rm -r ${BINDIR}/usr/lib/gcj* || die
524 rm ${BINDIR}/usr/lib/logging.properties || die
525 rm -r ${BINDIR}/usr/lib/security || die
526 fi
527 rm ${BINDIR}/usr/share/info/cp-tools.info || die
528 rm -r ${BINDIR}/usr/share/java || die
529 rm -r ${BINDIR}/usr/share/gcc-${PVER}/python/libjava || die
530 for i in aot-compile gappletviewer gc-analyze gcj gcj-dbtool gcjh gij gjar \
531 gjarsigner gjavah gjdoc gkeytool gnative2ascii gorbd grmic grmid grmiregistry \
532 gserialver gtnameserv jcf-dump jv-convert rebuild-gcj-db ${CHOST}-gcj
533 do
534 if [ -f ${BINDIR}/usr/bin/${i} ]
535 then
536 rm ${BINDIR}/usr/bin/${i} || die
537 fi
538 if [ -f ${BINDIR}/usr/share/man/man1/${i}.1 ]
539 then
540 rm ${BINDIR}/usr/share/man/man1/${i}.1 || die
541 fi
542 done
543 fi
544
545 # deletes all ada specific
546 if lang_enabled ada
547 then
548 rm ${BINDIR}/usr/bin/gnat* || die
549 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib || die
550 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adainclude || die
551 if [[ $(mlibdir) != lib ]]
552 then
553 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib || die
554 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adainclude || die
555 fi
556 rm ${BINDIR}/usr/share/info/gnat*.info || die
557 fi
558
559 # deletes all fortran specific
560 if lang_enabled fortran
561 then
562 rm ${BINDIR}/usr/bin/gfortran || die
563 rm ${BINDIR}/usr/bin/${CHOST}-gfortran || die
564 rm ${BINDIR}/usr/$(mlibdir)/libgfortran*.* || die
565 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
566 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/libgfortran*.* || die
567 if [[ $(mlibdir) != lib ]]
568 then
569 rm ${BINDIR}/usr/lib/libgfortran*.* || die
570 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/libgfortran*.* || die
571 fi
572 rm ${BINDIR}/usr/share/info/gfortran.info || die
573 rm ${BINDIR}/usr/share/man/man1/gfortran.1 || die
574 fi
575
576 # deletes all go specific
577 if lang_enabled go
578 then
579 rm ${BINDIR}/usr/bin/gccgo || die
580 rm ${BINDIR}/usr/bin/${CHOST}-gccgo || die
581 rm ${BINDIR}/usr/$(mlibdir)/libgo*.* || die
582 rm -r ${BINDIR}/usr/$(mlibdir)/go || die
583 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/go1 || die
584 if [[ $(mlibdir) != lib ]]
585 then
586 rm ${BINDIR}/usr/lib/libgo*.* || die
587 rm -r ${BINDIR}/usr/lib/go || die
588 fi
589 rm ${BINDIR}/usr/share/info/gccgo.info || die
590 rm ${BINDIR}/usr/share/man/man1/gccgo.1 || die
591 fi
592
593 # deletes all objc + obj-c++
594 if lang_enabled objc
595 then
596 rm ${BINDIR}/usr/$(mlibdir)/libobjc*.* || die
597 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1obj || die
598 rm -r ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/include/objc || die
599 if [[ $(mlibdir) != lib ]]
600 then
601 rm ${BINDIR}/usr/lib/libobjc*.* || die
602 fi
603
604 if lang_enabled obj-c++
605 then
606 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/cc1objplus || die
607 fi
608 fi
609
610 # versionize all bins and symlink them
611 versionize_all_bins || die
612
613 mlink ../usr/bin/cpp-${PVER} /usr/$(mlibdir)/cpp || die
614 # this one is needed on multilib systems.
615 # rpcgen may not find the cpp compiler correctly if not in /lib/cpp
616 if [[ $(mlibdir) != lib ]]
617 then
618 minstalldir /usr/lib || die
619 mlink ../usr/bin/cpp-${PVER} /usr/lib/cpp || die
620 fi
621 mlink gcc-${PVER} /usr/bin/cc || die
622
623 # fix all .la files
624 # they may contain invalid libpathes which are not needed
625 local la
626 for la in $(find ${BINDIR} -name \*.la)
627 do
628 fix_la_file ${la} || die ${la}
629 done
630 }
631
632 src_install_libgcc()
633 {
634 cd ${SRCDIR}/build
635 make DESTDIR=${BINDIR} install-target-libgcc || die
636
637 # cleanup, only keep the libs, everything else get provided by the gcc-package
638 zapmost ${BINDIR}/usr/$(mlibdir) libgcc_s*.* || die
639 # multilib as well
640 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
641 then
642 zapmost ${BINDIR}/usr/lib libgcc_s*.* || die
643 fi
644 }
645
646 src_install_libssp()
647 {
648 cd ${SRCDIR}/build
649 make DESTDIR=${BINDIR} install-target-libssp || die
650
651 # cleanup, only keep the libs, everything else get provided by the gcc-package
652 zapmost ${BINDIR}/usr/$(mlibdir) libssp*.* || die
653 # multilib as well
654 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
655 then
656 zapmost ${BINDIR}/usr/lib libssp*.* || die
657 fi
658 }
659
660 src_install_libgomp()
661 {
662 cd ${SRCDIR}/build
663 make DESTDIR=${BINDIR} install-target-libgomp || die
664
665 # cleanup, only keep the libs, everything else get provided by the gcc-package
666 zapmost ${BINDIR}/usr/$(mlibdir) libgomp*.* || die
667 # multilib as well
668 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
669 then
670 zapmost ${BINDIR}/usr/lib libgomp*.* || die
671 fi
672 }
673
674 src_install_libquadmath()
675 {
676 cd ${SRCDIR}/build
677 make DESTDIR=${BINDIR} install-target-libquadmath || die
678
679 # cleanup, only keep the libs, everything else get provided by the gcc-package
680 zapmost ${BINDIR}/usr/$(mlibdir) libquadmath*.* || die
681 # multilib as well
682 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
683 then
684 zapmost ${BINDIR}/usr/lib libquadmath*.* || die
685 fi
686 }
687
688 src_install_libstdc++()
689 {
690 cd ${SRCDIR}/build
691 make DESTDIR=${BINDIR} install-target-libstdc++-v3 || die
692
693 # move gdb scripts to a proper location and to pretty-print ldconfig
694 minstalldir /usr/share/gdb/auto-load/usr/$(mlibdir) || die
695 mv ${BINDIR}/usr/$(mlibdir)/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/$(mlibdir)/ || die
696 # multilib as well
697 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
698 then
699 minstalldir /usr/share/gdb/auto-load/usr/lib || die
700 mv ${BINDIR}/usr/lib/libstdc++*gdb.py* ${BINDIR}/usr/share/gdb/auto-load/usr/lib/ || die
701 fi
702
703 # cleanup, only keep the libs, everything else get provided by the gcc-package
704 zapmost ${BINDIR}/usr/$(mlibdir) libstdc++*.* || die
705 # multilib as well
706 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
707 then
708 zapmost ${BINDIR}/usr/lib libstdc++*.* || die
709 fi
710
711 # clean up everything else
712 zapmost ${BINDIR} /usr/share/gdb/autload usr/$(mlibdir) $([[ $(mlibdir) != lib ]] && echo "usr/lib") || die
713 }
714
715 if lang_enabled java
716 then
717 src_install_libgcj()
718 {
719 cd ${SRCDIR}/build
720 mmake DESTDIR=${BINDIR} install-target-libjava || die
721
722 zapmost ${BINDIR}/usr/$(mlibdir) libgcj*.* libgij*.* || die
723 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
724 then
725 zapmost ${BINDIR}/usr/lib libgcj*.* libgij*.* || die
726 fi
727 # other stuff
728 rm -r ${BINDIR}/usr/{bin,include,share} || die
729 }
730
731 src_install_gcc-gcj()
732 {
733 cd ${SRCDIR}/build
734
735 # install only java targets
736 make DESTDIR=${BINDIR} install-target-libjava || die
737 make -C gcc DESTDIR=${BINDIR} java.install-common || die
738 make -C gcc DESTDIR=${BINDIR} java.install-man || die
739
740 # missing bins
741 minstallexec gcc/jc1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
742 minstallexec gcc/jvgenmain /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
743
744 # remove libraries already included elsewhere
745 rm ${BINDIR}/usr/$(mlibdir)/libgcj*.* || die
746 rm ${BINDIR}/usr/$(mlibdir)/libgij*.* || die
747 if [[ $(mlibdir) != lib ]]
748 then
749 rm ${BINDIR}/usr/lib/libgcj*.* || die
750 rm ${BINDIR}/usr/lib/libgij*.* || die
751 fi
752
753 # versionize all bins and symlink them
754 versionize_all_bins || die
755 }
756 fi
757
758 if lang_enabled ada
759 then
760 src_install_libgnat()
761 {
762 cd ${SRCDIR}/build
763 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
764 if [[ $(mlibdir) != lib ]]
765 then
766 # install 32bit libgnat
767 # make tries to execute the libs, which fails
768 # we override the INSTALL commands to *not* do that
769 mmake -C ${CHOST}/32/libada DESTDIR=${BINDIR} INSTALL="install" INSTALL_DATA="install -m0644" install-gnatlib || die
770 fi
771 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib libgnarl*.* libgnat*.* || die
772
773 # remove other
774 rm -r ${BINDIR}/usr/bin || die
775
776 # move so-libs to the right location
777 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so /usr/$(mlibdir) || die
778 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so /usr/$(mlibdir) || die
779 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/lib{gnarl,gnat}.so || die
780 mlink libgnarl-${PVER%.*}.so /usr/$(mlibdir)/libgnarl.so || die
781 mlink libgnat-${PVER%.*}.so /usr/$(mlibdir)/libgnat.so || die
782 mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl-${PVER%.*}.so || die
783 mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat-${PVER%.*}.so || die
784 mlink ../../../../libgnarl-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl.so || die
785 mlink ../../../../libgnat-${PVER%.*}.so /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat.so || die
786 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
787 then
788 zapmost ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib libgnarl*.* libgnat*.* || die
789
790 # move so-libs to the right location
791 minstalldir /usr/lib || die
792 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so /usr/lib || die
793 mmove ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so /usr/lib || die
794 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/32/adalib/lib{gnarl,gnat}.so || die
795 mlink libgnarl-${PVER%.*}.so /usr/lib/libgnarl.so || die
796 mlink libgnat-${PVER%.*}.so /usr/lib/libgnat.so || die
797 mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnarl-${PVER%.*}.so || die
798 mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnat-${PVER%.*}.so || die
799 mlink ../../../../../../lib/libgnarl-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnarl.so || die
800 mlink ../../../../../../lib/libgnat-${PVER%.*}.so /usr/lib/gcc/${CHOST}/${PVER}/32/adalib/libgnat.so || die
801 fi
802 }
803
804 src_install_gcc-gnat()
805 {
806 cd ${SRCDIR}/build
807 mmake -C gcc DESTDIR=${BINDIR} ada.install-common || die
808 mmake -C gcc DESTDIR=${BINDIR} ada.install-info || die
809 minstallexec gcc/gnat1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER} || die
810
811 # remove libraries already included elsewhere
812 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnarl*.* || die
813 rm ${BINDIR}/usr/$(mlibdir)/gcc/${CHOST}/${PVER}/adalib/libgnat*.* || die
814
815 # versionize all bins and symlink them
816 versionize_all_bins || die
817 }
818 fi
819
820 if lang_enabled fortran
821 then
822 src_install_libgfortran()
823 {
824 cd ${SRCDIR}/build
825 mmake DESTDIR=${BINDIR} install-target-libgfortran || die
826
827 zapmost ${BINDIR}/usr/$(mlibdir) libgfortran*.* || die
828 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
829 then
830 zapmost ${BINDIR}/usr/lib libgfortran*.* || die
831 fi
832 }
833
834 src_install_gcc-gfortran()
835 {
836 cd ${SRCDIR}/build
837 mmake DESTDIR=${BINDIR} install-target-libgfortran || die
838
839 # omp headers needed by fortran
840 mmake -C ${CHOST}/libgomp DESTDIR=${BINDIR} install-nodist_fincludeHEADERS || die
841 mmake -C gcc DESTDIR=${BINDIR} fortran.install-common || die
842 mmake -C gcc DESTDIR=${BINDIR} fortran.install-man || die
843 mmake -C gcc DESTDIR=${BINDIR} fortran.install-info || die
844 # missing binary
845 minstallexec gcc/f951 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/f951 || die
846
847 # remove libraries already included elsewhere
848 rm ${BINDIR}/usr/$(mlibdir)/libgfortran*.* || die
849 if [[ $(mlibdir) != lib ]]
850 then
851 rm ${BINDIR}/usr/lib/libgfortran*.* || die
852 fi
853
854 # versionize all bins and symlink them
855 versionize_all_bins || die
856 }
857 fi
858
859 if lang_enabled go
860 then
861 src_install_libgo()
862 {
863 cd ${SRCDIR}/build
864 mmake DESTDIR=${BINDIR} install-target-libgo || die
865
866 zapmost ${BINDIR}/usr/$(mlibdir) libgo*.* || die
867 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
868 then
869 zapmost ${BINDIR}/usr/lib libgo*.* || die
870 fi
871 }
872
873 src_install_gcc-go()
874 {
875 cd ${SRCDIR}/build
876 mmake DESTDIR=${BINDIR} install-target-libgo || die
877 mmake -C gcc DESTDIR=${BINDIR} go.install-common || die
878 mmake -C gcc DESTDIR=${BINDIR} go.install-man || die
879 mmake -C gcc DESTDIR=${BINDIR} go.install-info || die
880 minstallexec gcc/go1 /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
881
882 # remove libraries already included elsewhere
883 rm ${BINDIR}/usr/$(mlibdir)/libgo*.* || die
884 if [[ $(mlibdir) != lib ]]
885 then
886 rm ${BINDIR}/usr/lib/libgo*.* || die
887 fi
888
889 # versionize all bins and symlink them
890 versionize_all_bins || die
891 }
892 fi
893
894 if lang_enabled objc
895 then
896 src_install_libobjc()
897 {
898 cd ${SRCDIR}/build
899 mmake DESTDIR=${BINDIR} install-target-libobjc || die
900
901 zapmost ${BINDIR}/usr/$(mlibdir) libobjc*.* || die
902 if [[ $(mlibdir) != lib ]] && [[ -d ${BINDIR}/usr/lib ]]
903 then
904 zapmost ${BINDIR}/usr/lib libobjc*.* || die
905 fi
906 }
907
908 src_install_gcc-objc()
909 {
910 cd ${SRCDIR}/build
911 # only needed for install, gets removed later on
912 mmake DESTDIR=${BINDIR} install-target-libobjc || die
913
914 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
915 minstallexec gcc/cc1obj /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
916
917 # remove libraries already included elsewhere
918 rm ${BINDIR}/usr/$(mlibdir)/libobjc*.* || die
919 if [[ $(mlibdir) != lib ]]
920 then
921 rm ${BINDIR}/usr/lib/libobjc*.* || die
922 fi
923 }
924
925 if lang_enabled obj-c++
926 then
927 src_install_gcc-objc++()
928 {
929 cd ${SRCDIR}/build
930 minstalldir /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
931 minstallexec gcc/cc1objplus /usr/$(mlibdir)/gcc/${CHOST}/${PVER}/ || die
932 }
933 fi
934 fi