Magellan Linux

Contents of /branches/R11-stable/core/gcc/gcc-4.7.2-r4.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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