Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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