Magellan Linux

Contents of /branches/R11-stable/core/gcc/gcc-4.7.3-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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