Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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