Magellan Linux

Contents of /branches/magellan-next/core/gcc/gcc-4.6.2-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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