Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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