Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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