From 77b5897fc3d7f3dabe54c23a0b830dae9d6593c6 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 24 Nov 2010 13:58:34 +0000 Subject: main/gcc: disable java by default, fix for x86_64 also: - initial support for crosscompile - cleanup ld-uClibc handling --- main/gcc/APKBUILD | 92 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 69 insertions(+), 23 deletions(-) (limited to 'main/gcc/APKBUILD') diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD index 930f60077..2855a8f76 100644 --- a/main/gcc/APKBUILD +++ b/main/gcc/APKBUILD @@ -6,23 +6,22 @@ _specs_ver=0.2.0 _specs_gcc_ver=4.4.3 _uclibc_abiver=0.9.32 -if [ "$ALPINE_LIBC" = "eglibc" ]; then - _chost="i686-pc-linux-gnu" - _with_arch="i686" -else - _chost="i486-alpine-linux-uclibc" - _dynamic_linker="--with-dynamic-linker=ld-uClibc.so.$_uclibc_abiver" - _with_arch="i486" -fi -pkgrel=8 +pkgrel=9 pkgdesc="The GNU Compiler Collection" url="http://gcc.gnu.org" license="GPL LGPL" depends="binutils libgcc libgomp libobjc" makedepends="bison flex gmp-dev mpfr-dev texinfo libmpc-dev gawk zlib-dev zip" -subpackages="$pkgname-doc libstdc++:libcxx g++:gpp libgcc libgomp libobjc - $pkgname-java libgcj" +subpackages="$pkgname-doc libstdc++:libcxx g++:gpp libgcc libgomp" + +if [ "$LANG_OBJC" != "off" ]; then + subpackages="$subpackages libobjc" +fi +if [ "$LANG_JAVA" = "on" ]; then + subpackages="$subpackages $pkgname-java libgcj" +fi + source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-core-$pkgver.tar.bz2 ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-g++-$pkgver.tar.bz2 ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-objc-$pkgver.tar.bz2 @@ -41,11 +40,20 @@ source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-core-$pkgver.tar.bz2 gcc-4.5-dynamic-linker.patch PR32219.patch boehem-gc-uclibc.patch + gcc-pure64.patch " +# we build out-of-tree _gccdir="$srcdir"/gcc-$pkgver +_builddir="$srcdir/build" + prepare() { cd "$_gccdir" + # verify we have set CHOST + if [ -z "$CHOST" ]; then + error "CHOST not set" + return 1 + fi # PIE patches from gentoo # thanks to Zorry for hard work on those patches @@ -80,20 +88,55 @@ prepare() { # see http://gcc.gnu.org/ml/java/2008-04/msg00027.html mv "$srcdir"/ecj-latest.jar ecj.jar + + echo ${pkgver} > gcc/BASE-VER } build() { + local _languages= _dynamic_linker= _arch=${CHOST%%-*} cd "$_gccdir" - echo ${pkgver} > gcc/BASE-VER export CFLAGS="-fno-stack-protector" - mkdir build - cd build - ../configure --prefix=/usr \ + [ -z "$CBUILD" ] && CBUILD="$CHOST" + [ -z "$CTARGET" ] && CTARGET="$CHOST" + + case "$CHOST" in + x86_64-*-uclibc) + _dynamic_linker="--with-dynamic-linker=ld64-uClibc.so.$_uclibc_abiver" + ;; + *-uclibc) + _dynamic_linker="--with-dynamic-linker=ld-uClibc.so.$_uclibc_abiver" + ;; + *) _dynamic_linker= + ;; + esac + + _languages=c,c++ + # we can disable OBJC with LANG_OBJC=off + if [ "$LANG_OBJC" != "off" ]; then + _languages=$_languages,objc + fi + # and enable java with LANG_JAVA=on + if [ "$LANG_JAVA" = "on" ]; then + _languages="$_languages,java" + fi + + msg "Building the following:" + echo "" + echo " CBUILD=$CBUILD" + echo " CHOST=$CHOST" + echo " CTARGET=$CTARGET" + echo " languages=$_languages" + echo " dynamic_linker=$_dynamic_linker" + echo "" + + mkdir -p "$_builddir" + cd "$_builddir" + "$_gccdir"/configure --prefix=/usr \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ - --build=${CBUILD:-$_chost} \ - --host=${CHOST:-$_chost} \ - --target=${CTARGET:-$_chost} \ + --build=${CBUILD} \ + --host=${CHOST} \ + --target=${CTARGET} \ --disable-altivec \ --disable-checking \ --disable-fixed-point \ @@ -105,12 +148,12 @@ build() { --enable-__cxa_atexit \ --enable-cld \ --enable-esp \ - --enable-languages=c,c++,objc,java \ + --enable-languages=$_languages \ --enable-shared \ --enable-target-optspace \ --enable-tls \ --enable-threads \ - --with-arch=$_with_arch \ + --with-arch=$_arch \ $_dynamic_linker \ --with-dynamic-linker-prefix=/lib \ --with-system-zlib \ @@ -120,7 +163,7 @@ build() { } package() { - cd "$srcdir"/gcc-$pkgver/build + cd "$_builddir" make -j1 DESTDIR="${pkgdir}" install || return 1 ln -s gcc "$pkgdir"/usr/bin/cc @@ -142,7 +185,9 @@ package() { -o -name libjavamath.a \ | xargs rm -f \ || return 1 - sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \ + + [ "$LANG_JAVA" = "on" ] && \ + sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \ "$pkdir"/usr/lib/libgcj.spec # remove ffi @@ -257,4 +302,5 @@ c4045bfa85d8be780affd465be9d8ca8 gcc-spec-env.patch 6cc2385c5bbd6d0da6eaedd53c8bf547 uclibc-getipinfo.patch 7f35da0f88f4d9c3d3839498bbda0eb3 gcc-4.5-dynamic-linker.patch 6c866c7fb8d56deb8f6d652bee64e228 PR32219.patch -2c6cb49bb9bfd8b6e690222e66ccc901 boehem-gc-uclibc.patch" +2c6cb49bb9bfd8b6e690222e66ccc901 boehem-gc-uclibc.patch +d1d3ad2b0c185b5548125a1b81bee154 gcc-pure64.patch" -- cgit v1.2.3