Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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