Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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