Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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