diff options
Diffstat (limited to 'cross')
15 files changed, 618 insertions, 9 deletions
diff --git a/cross/README b/cross/README new file mode 100644 index 000000000..004f01114 --- /dev/null +++ b/cross/README @@ -0,0 +1,20 @@ +# Build order + +* $target-binutils +* cross-$target-gcc-core +* $target-linux-api-headers +* cross-$target-glibc-headers +* cross-$target-gcc-core-shared +* $target-glibc +* $target-gcc + +cross-* packages are used to bootstrap the full toolchain for the first time, +you'll only need binutils, linux-api-headers, glibc and gcc once you're done. + + +# Create a new toolchain + +Copy the base PKGBUILDS from mips64el-unknown-linux-gnu and change this part of +the names to your target. At the header of each PKGBUILD there're several +variables to configure the target system. Take note some require other manual +changes, like final gcc. diff --git a/cross/cross-mips64el-unknown-linux-gnu-gcc-core-shared/PKGBUILD b/cross/cross-mips64el-unknown-linux-gnu-gcc-core-shared/PKGBUILD index 3c61dbfca..ca0ca775e 100644 --- a/cross/cross-mips64el-unknown-linux-gnu-gcc-core-shared/PKGBUILD +++ b/cross/cross-mips64el-unknown-linux-gnu-gcc-core-shared/PKGBUILD @@ -16,7 +16,7 @@ pkgdesc="The GNU Compiler Collection for the MIPS/Loongson2f architecture (share url="http://www.gnu.org/software/binutils/" arch=('i686' 'x86_64') license=('GPL') -depends=('libmpc' 'sh' "cross-${_target}-binutils" 'cloog' 'ppl') +depends=('libmpc' 'sh' "${_target}-binutils" 'cloog' 'ppl') makedepends=("cross-${_target}-glibc-headers" "cross-${_target}-gcc-core") options=('!ccache' '!distcc' '!emptydirs' '!libtool' '!strip') @@ -28,7 +28,7 @@ build() { mkdir gcc-build && cd gcc-build mkdir ${_target} - Copy headers for libgcc2 +# Copy headers for libgcc2 cp -av /usr/${_target}/usr/include ${_target}/include CC_FOR_BUILD=${CHOST}-gcc \ diff --git a/cross/cross-mips64el-unknown-linux-gnu-gcc-core/PKGBUILD b/cross/cross-mips64el-unknown-linux-gnu-gcc-core/PKGBUILD index da49a903f..831236d42 100644 --- a/cross/cross-mips64el-unknown-linux-gnu-gcc-core/PKGBUILD +++ b/cross/cross-mips64el-unknown-linux-gnu-gcc-core/PKGBUILD @@ -16,7 +16,7 @@ pkgdesc="The GNU Compiler Collection for the MIPS/Loongson2f architecture (stati url="http://www.gnu.org/software/binutils/" arch=('i686' 'x86_64') license=('GPL') -depends=('libmpc' 'sh' "cross-${_target}-binutils" 'cloog' 'ppl') +depends=('libmpc' 'sh' "${_target}-binutils" 'cloog' 'ppl') options=('!ccache' '!distcc' '!emptydirs' '!libtool' '!strip') source=("ftp://ftp.gnu.org/gnu/gcc/gcc-${pkgver}/${_pkgname}-${pkgver}.tar.bz2") md5sums=('028115c4fbfb6cfd75d6369f4a90d87e') diff --git a/cross/cross-mips64el-unknown-linux-gnu-glibc-headers/PKGBUILD b/cross/cross-mips64el-unknown-linux-gnu-glibc-headers/PKGBUILD index a83a1238a..7fed7839a 100644 --- a/cross/cross-mips64el-unknown-linux-gnu-glibc-headers/PKGBUILD +++ b/cross/cross-mips64el-unknown-linux-gnu-glibc-headers/PKGBUILD @@ -21,7 +21,7 @@ url="http://www.gnu.org/software/libc" license=('GPL' 'LGPL') groups=("${_target}-devel") depends=("${_target}-linux-api-headers>=3.1.6" 'tzdata') -makedepends=("cross-${_target}-binutils" +makedepends=("${_target}-binutils" "cross-${_target}-gcc-core") options=('!strip') install=glibc.install @@ -187,8 +187,12 @@ package() { # This will help gcc-shared to find headers for libgcc2 msg2 "Symlinking headers" - rm -r ${pkgdir}${_sysroot}/include +# rm -r ${pkgdir}${_sysroot}/include ln -s ${_sysroot}/usr/include ${pkgdir}${_sysroot}/include + ln -s ${_sysroot}/usr/lib/crt1.o ${pkgdir}${_sysroot}/lib/ + ln -s ${_sysroot}/usr/lib/crti.o ${pkgdir}${_sysroot}/lib/ + ln -s ${_sysroot}/usr/lib/crtn.o ${pkgdir}${_sysroot}/lib/ + ln -s ${_sysroot}/usr/lib/libc.so ${pkgdir}${_sysroot}/lib/ } md5sums=('6ffdf5832192b92f98bdd125317c0dfc' diff --git a/cross/cross-mips64el-unknown-linux-gnu-binutils/PKGBUILD b/cross/mips64el-unknown-linux-gnu-binutils/PKGBUILD index d4d3afe38..0349036ec 100644 --- a/cross/cross-mips64el-unknown-linux-gnu-binutils/PKGBUILD +++ b/cross/mips64el-unknown-linux-gnu-binutils/PKGBUILD @@ -6,14 +6,15 @@ _sysroot="/usr/${_target}" unset CFLAGS CXXFLAGS LDFLAGS -pkgname=cross-${_target}-binutils +pkgname=${_target}-binutils pkgver=2.22 -pkgrel=11 +pkgrel=1 pkgdesc="A set of programs to assemble and manipulate binary and object files for the MIPS architecture" url="http://www.gnu.org/software/binutils/" arch=('i686' 'x86_64') license=('GPL') depends=('zlib') +provices=("cross-${pkgname}") source=("ftp://ftp.gnu.org/gnu/binutils/${_pkgname}-${pkgver}.tar.bz2") md5sums=('ee0f10756c84979622b992a4a61ea3f5') @@ -37,9 +38,16 @@ build() { } package() { + cd ${srcdir}/${_pkgname}-${pkgver} +# Compat symlinks + ln -s ${_sysroot}/usr/lib ${pkgdir}${_sysroot}/lib + ln -s ${_sysroot}/lib ${pkgdir}${_sysroot}/lib32 make DESTDIR=${pkgdir} install rm -r ${pkgdir}/usr/{lib,share} + +# Create include dir so gcc-core doesn't complain + mkdir -p ${pkgdir}${_sysroot}/usr/include } diff --git a/cross/mips64el-unknown-linux-gnu-gcc/PKGBUILD b/cross/mips64el-unknown-linux-gnu-gcc/PKGBUILD new file mode 100644 index 000000000..975db9f9d --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/PKGBUILD @@ -0,0 +1,292 @@ +# $Id: PKGBUILD 145914 2012-01-04 01:24:56Z allan $ +# Maintainer: Allan McRae <allan@archlinux.org> + +# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc +# NOTE: libtool requires rebuilt with each new gcc version +_pkgname=gcc +_target="mips64el-unknown-linux-gnu" +_sysroot="/usr/${_target}" +_ARCH=mips + +unset LDFLAGS CFLAGS CXXFLAGS + +# Split package names must be changed manually +pkgname=("${_target}-gcc" "${_target}-gcc-libs" "${_target}-gcc-fortran" "${_target}-gcc-objc") # "gcc-ada" "gcc-go") +pkgver=4.6.2 +pkgrel=5 +_snapshot=4.6-20111223 +_libstdcppmanver=20111215 # Note: check source directory name when updating this +pkgdesc="The GNU Compiler Collection for MIPS/Loongson2f processors" +arch=('i686' 'x86_64') +license=('GPL' 'LGPL' 'FDL' 'custom') +url="http://gcc.gnu.org" +makedepends=("${_target}-binutils>=2.22" "libmpc" "cloog" "ppl" + "cross-${_target}-gcc-core-shared" + "${_target}-glibc") +checkdepends=('dejagnu') +options=('!libtool' '!emptydirs' '!strip') +source=(#ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 + ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 + ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-man.${_libstdcppmanver}.tar.bz2 + gcc_pure64.patch + gcc_mips64el_lib.patch + gcc-hash-style-both.patch) + +if [ -n "${_snapshot}" ]; then + _basedir="${srcdir}/gcc-${_snapshot}" +else + _basedir="${srcdir}/gcc-${pkgver}" +fi + +build() { + if [ ${NOEXTRACT} -eq 0 ]; then + cd ${_basedir} + + # Do not install libiberty + sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in + + # Do not run fixincludes + sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in + + if [ "${CARCH}" = "x86_64" ]; then + patch -Np1 -i ${srcdir}/gcc_pure64.patch + fi + patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch + patch -Np0 -i ${srcdir}/gcc_mips64el_lib.patch + + echo ${pkgver} > gcc/BASE-VER + + mkdir ${srcdir}/gcc-build + fi + + cd ${srcdir}/gcc-build + + CC_FOR_BUILD=${CHOST}-gcc \ + CFLAGS=" -pipe " \ + LDFLAGS= \ + CFLAGS_FOR_TARGET=" -EL -march=loongson2f -mabi=n32 " \ + CXXFLAGS_FOR_TARGET=" -EL -march=loongson2f -mabi=n32 " \ + LDFLAGS_FOR_TARGET=" -EL " \ + ${_basedir}/configure --prefix=/usr \ + --build=${CHOST} \ + --host=${CHOST} \ + --target=${_target} \ + --libexecdir=/usr/lib \ + --with-sysroot=${_sysroot} \ + --with-arch=loongson2f \ + --with-abi=n32 \ + --with-bugurl=https://bugs.parabolagnulinux.org/ \ + --enable-languages=c,c++,fortran,lto,objc,obj-c++ \ + --enable-shared \ + --enable-threads=posix \ + --with-system-zlib \ + --enable-__cxa_atexit \ + --disable-libunwind-exceptions \ + --enable-clocale=gnu \ + --enable-gnu-unique-object \ + --enable-linker-build-id \ + --with-ppl \ + --enable-cloog-backend=isl \ + --enable-lto \ + --enable-gold \ + --enable-ld=default \ + --enable-plugin \ + --with-plugin-ld=ld.gold \ + --disable-multilib \ + --disable-libssp \ + --disable-libstdcxx-pch \ + --enable-checking=release + + make +} + +check() { + cd gcc-build + + # increase stack size to prevent test failures + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827 + ulimit -s 32768 + + # do not abort on error as some are "expected" + make -k check || true + ${_basedir}/contrib/test_summary +} + + +package_mips64el-unknown-linux-gnu-gcc-libs() +{ + pkgdesc="Runtime libraries shipped by GCC" + groups=("${_target}-devel") + depends=("${_target}-glibc>=2.14") + install=gcc-libs.install + + cd gcc-build + make -j1 -C ${_target}/libgcc DESTDIR=${pkgdir} install-shared + for lib in libmudflap libgomp libstdc++-v3/src; do + make -j1 -C $_target/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES + done + make -j1 -C $_target/libstdc++-v3/po DESTDIR=${pkgdir} install + make -j1 -C $_target/libgomp DESTDIR=${pkgdir} install-info + + make -j1 DESTDIR=${pkgdir} install-target-libquadmath + make -j1 DESTDIR=${pkgdir} install-target-libgfortran + make -j1 DESTDIR=${pkgdir} install-target-libobjc + + # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} + rm -rf ${pkgdir}${_sysroot}/usr/lib{,32}/{gcc/,libgfortran.spec} + + rm -rf ${pkgdir}/usr/share + + # remove static libraries + find ${pkgdir} -name *.a -delete + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/${_target}-gcc-libs/RUNTIME.LIBRARY.EXCEPTION +} + +package_mips64el-unknown-linux-gnu-gcc() +{ + pkgdesc="The GNU Compiler Collection - C and C++ frontends" + depends=("${_target}-gcc-libs=$pkgver-$pkgrel" "${_target}-binutils>=2.22" 'libmpc' 'cloog' 'ppl') + groups=("${_target}-devel") + replaces=("cross-${_target}-gcc-core" + "cross-${_target}-gcc-core-shared") + install=gcc.install + + cd gcc-build + + # unfortunately it is much, much easier to install the lot and clean-up the mess... + make -j1 DESTDIR=${pkgdir} install + + rm -rf ${pkgdir}/usr/share + + rm -f $pkgdir/usr/bin/{{$_target-,}gfortran,{$_target-,}gccgo,gnat*} + rm -f $pkgdir${_sysroot}/lib{,32}/*.so* + rm -f $pkgdir${_sysroot}/lib{,32}/lib{ffi,gfortran,go{,begin},objc,quadmath}.a + rm -f $pkgdir${_sysroot}/lib{,32}/libgfortran.spec + rm -rf $pkgdir/usr/lib{,32}/gcc/$_target/${pkgver}/{ada{include,lib},finclude,include/objc} + rm -f $pkgdir/usr/lib{,32}/gcc/$_target/${pkgver}/include/{ffi{,target}.h,quadmath{,_weak}.h} + rm -f $pkgdir/usr/lib{,32}/gcc/$_target/${pkgver}/{cc1obj{,plus},f951,gnat1,go1,libgfortranbegin.a} + rm -rf $pkgdir/usr/lib{,32}/go + + # many packages require these symlinks + install -dm755 ${pkgdir}/lib + + ln -sf /usr/bin/cpp ${pkgdir}/lib/${_target}-cpp + ln -sf ${_target}-gcc ${pkgdir}/usr/bin/${_target}-cc + ln -sf ${_target}-g++ ${pkgdir}/usr/bin/${_target}-c++ + + # install gengtype for plugin support + install -m755 gcc/build/gengtype $pkgdir/usr/lib/gcc/$_target/${pkgver}/ + install -m644 gcc/gtype.state $pkgdir/usr/lib/gcc/$_target/${pkgver}/ + + # POSIX conformance launcher scripts for c89 and c99 + cat > $pkgdir/usr/bin/${_target}-c89 <<"EOF" +#!/bin/sh +fl="-std=c89" +for opt; do + case "$opt" in + -ansi|-std=c89|-std=iso9899:1990) fl="";; + -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 + exit 1;; + esac +done +exec mips64el-unknown-linux-gnu-gcc $fl ${1+"$@"} +EOF + + cat > $pkgdir/usr/bin/${_target}-c99 <<"EOF" +#!/bin/sh +fl="-std=c99" +for opt; do + case "$opt" in + -std=c99|-std=iso9899:1999) fl="";; + -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 + exit 1;; + esac +done +exec mips64el-unknown-linux-gnu-gcc $fl ${1+"$@"} +EOF + + chmod 755 $pkgdir/usr/bin/${_target}-c{8,9}9 + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/${_target}-gcc/RUNTIME.LIBRARY.EXCEPTION +} + +package_mips64el-unknown-linux-gnu-gcc-fortran() +{ + pkgdesc="Fortran front-end for GCC" + depends=("${_target}-gcc=$pkgver-$pkgrel") + install=gcc-fortran.install + + cd gcc-build + make -j1 DESTDIR=${pkgdir} install-target-libquadmath + make -j1 DESTDIR=$pkgdir install-target-libgfortran + make -j1 -C $_target/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS + make -j1 -C gcc DESTDIR=$pkgdir fortran.install-{common,man,info} + install -Dm755 gcc/f951 $pkgdir/usr/lib/gcc/$_target/$pkgver/f951 + + # remove libraries included in gcc-libs + rm -f ${pkgdir}${_sysroot}/lib{,32}/lib{gfortran,quadmath}.so* + rm -fr ${pkgdir}/usr/share + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/${_target}-gcc-fortran/RUNTIME.LIBRARY.EXCEPTION +} + +package_mips64el-unknown-linux-gnu-gcc-objc() +{ + pkgdesc="Objective-C front-end for GCC" + depends=("${_target}-gcc=$pkgver-$pkgrel") + + cd gcc-build + make -j1 DESTDIR=$pkgdir install-target-libobjc + install -dm755 $pkgdir/usr/lib/gcc/$_target/$pkgver/ + install -m755 gcc/cc1obj{,plus} $pkgdir/usr/lib/gcc/$_target/$pkgver/ + + # remove libraries included in gcc-libs + rm -f ${pkgdir}${_sysroot}/lib{,32}/libobjc.so* + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/${_target}-gcc-objc/RUNTIME.LIBRARY.EXCEPTION +} + +package_gcc-ada() +{ + pkgdesc="Ada front-end for GCC (GNAT)" + depends=("${_target}-gcc=$pkgver-$pkgrel") + install=gcc-ada.install + + cd gcc-build/gcc + make -j1 DESTDIR=$pkgdir ada.install-{common,info} + install -m755 gnat1 $pkgdir/usr/lib/gcc/$_target/$pkgver + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/gcc-ada/RUNTIME.LIBRARY.EXCEPTION +} + +package_gcc-go() +{ + pkgdesc="Go front-end for GCC" + depends=("${_target}-gcc=$pkgver-$pkgrel") + install=gcc-go.install + + cd gcc-build + make -j1 DESTDIR=$pkgdir install-target-libgo + make -j1 -C gcc DESTDIR=$pkgdir go.install-{common,man,info} + install -Dm755 gcc/go1 $pkgdir/usr/lib/gcc/$_target/$pkgver/go1 + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/gcc-go/RUNTIME.LIBRARY.EXCEPTION +} +md5sums=('4755b9f6ac0abecbaa2097ed9738406a' + '450772ce32daed97d7383199f8797f33' + '4030ee1c08dd1e843c0225b772360e76' + '67e337993d821d72fccacbed52d48c34' + '4df25b623799b148a0703eaeec8fdf3f') diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc-ada.install b/cross/mips64el-unknown-linux-gnu-gcc/gcc-ada.install new file mode 100644 index 000000000..df0553a4f --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc-ada.install @@ -0,0 +1,20 @@ +infodir=usr/share/info +filelist=(gnat-style.info gnat_rm.info gnat_ugn.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc-fortran.install b/cross/mips64el-unknown-linux-gnu-gcc/gcc-fortran.install new file mode 100644 index 000000000..b15d89a97 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc-fortran.install @@ -0,0 +1,16 @@ +infodir=usr/share/info +file="gfortran.info" + +post_install() { + [ -x usr/bin/install-info ] || return 0 + install-info $infodir/$file.gz $infodir/dir 2> /dev/null +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null +} diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc-go.install b/cross/mips64el-unknown-linux-gnu-gcc/gcc-go.install new file mode 100644 index 000000000..7dc50dee5 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc-go.install @@ -0,0 +1,20 @@ +infodir=usr/share/info +filelist=(gccgo.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc-hash-style-both.patch b/cross/mips64el-unknown-linux-gnu-gcc/gcc-hash-style-both.patch new file mode 100644 index 000000000..8b59f4535 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc-hash-style-both.patch @@ -0,0 +1,122 @@ +--- gcc/config/alpha/linux-elf.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/alpha/linux-elf.h 2011-03-11 10:01:47.770000457 +1000 +@@ -41,7 +41,7 @@ + + #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- gcc/config/i386/linux64.h.orig 2011-03-03 08:35:36.000000000 +1000 ++++ gcc/config/i386/linux64.h 2011-03-11 10:01:47.770000457 +1000 +@@ -78,7 +78,7 @@ + %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2011-01-15 04:45:06.000000000 +1000 ++++ gcc/config/i386/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -104,7 +104,7 @@ + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- gcc/config/ia64/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/ia64/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -64,7 +64,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/linux64.h.orig 2011-02-11 03:30:10.000000000 +1000 ++++ gcc/config/rs6000/linux64.h 2011-03-11 10:03:34.280000457 +1000 +@@ -389,11 +389,11 @@ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}" + +--- gcc/config/rs6000/sysv4.h.orig 2011-01-28 04:36:03.000000000 +1000 ++++ gcc/config/rs6000/sysv4.h 2011-03-11 10:01:47.773333792 +1000 +@@ -830,7 +830,7 @@ + #define LINUX_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER "}}" + +--- gcc/config/s390/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/s390/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -77,7 +77,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux64.h.orig 2011-02-17 23:57:21.000000000 +1000 ++++ gcc/config/sparc/linux64.h 2011-03-11 10:01:47.770000457 +1000 +@@ -113,7 +113,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,%R/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,%R/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -121,7 +121,7 @@ + %{static:-static}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -193,7 +193,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- gcc/config/sparc/linux.h.orig 2011-01-27 06:30:12.000000000 +1000 ++++ gcc/config/sparc/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -74,7 +74,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc-libs.install b/cross/mips64el-unknown-linux-gnu-gcc/gcc-libs.install new file mode 100644 index 000000000..23553b8f0 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc-libs.install @@ -0,0 +1,16 @@ +infodir=usr/share/info +filelist=(libgomp.info libquadmath.info) + +post_upgrade() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc.install b/cross/mips64el-unknown-linux-gnu-gcc/gcc.install new file mode 100644 index 000000000..3407a5e1f --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc.install @@ -0,0 +1,20 @@ +infodir=usr/share/info +filelist=(cpp.info cppinternals.info gcc.info gccinstall.info gccint.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc_mips64el_lib.patch b/cross/mips64el-unknown-linux-gnu-gcc/gcc_mips64el_lib.patch new file mode 100644 index 000000000..425758e88 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc_mips64el_lib.patch @@ -0,0 +1,25 @@ +--- gcc/config/mips/t-linux64.orig 2011-04-09 20:28:51.729723495 -0300 ++++ gcc/config/mips/t-linux64 2011-04-09 20:29:06.913724013 -0300 +@@ -18,7 +18,7 @@ + + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 + MULTILIB_DIRNAMES = n32 32 64 +-MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64 ++MULTILIB_OSDIRNAMES = ../lib ../lib32 ../lib64 + + EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o + +--- gcc/config/mips/linux64.h.orig 2011-04-09 20:27:06.909723735 -0300 ++++ gcc/config/mips/linux64.h 2011-04-09 20:28:16.033723803 -0300 +@@ -35,9 +35,9 @@ + %{!shared: \ + %{profile:-lc_p} %{!profile:-lc}}" + +-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" ++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld.so.1" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1" +-#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1" ++#define GLIBC_DYNAMIC_LINKERN32 "/lib/ld.so.1" + #define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0" + #define LINUX_DYNAMIC_LINKERN32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32) diff --git a/cross/mips64el-unknown-linux-gnu-gcc/gcc_pure64.patch b/cross/mips64el-unknown-linux-gnu-gcc/gcc_pure64.patch new file mode 100644 index 000000000..8c0baf8e2 --- /dev/null +++ b/cross/mips64el-unknown-linux-gnu-gcc/gcc_pure64.patch @@ -0,0 +1,26 @@ +diff -Naur gcc-4.2.0.orig/gcc/config/i386/linux64.h gcc-4.2.0/gcc/config/i386/linux64.h +--- gcc-4.2.0.orig/gcc/config/i386/linux64.h 2007-05-16 19:21:19.000000000 -0400 ++++ gcc-4.2.0/gcc/config/i386/linux64.h 2007-05-18 17:04:05.000000000 -0400 +@@ -49,8 +49,8 @@ + When the -shared link option is used a final link is not being + done. */ + +-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" +-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" ++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2" ++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2" + + #undef LINK_SPEC + #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ +diff -Naur gcc-4.2.0.orig/gcc/config/i386/t-linux64 gcc-4.2.0/gcc/config/i386/t-linux64 +--- gcc-4.2.0.orig/gcc/config/i386/t-linux64 2007-05-16 19:21:19.000000000 -0400 ++++ gcc-4.2.0/gcc/config/i386/t-linux64 2007-05-18 17:04:36.000000000 -0400 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_OSDIRNAMES = ../lib ../lib32 + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff --git a/cross/mips64el-unknown-linux-gnu-glibc/PKGBUILD b/cross/mips64el-unknown-linux-gnu-glibc/PKGBUILD index e5e37beee..18de66776 100644 --- a/cross/mips64el-unknown-linux-gnu-glibc/PKGBUILD +++ b/cross/mips64el-unknown-linux-gnu-glibc/PKGBUILD @@ -4,11 +4,21 @@ # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc # NOTE: valgrind requires rebuilt with each major glibc version +# NOTE: I had to run this after installing target-glibc to build target-gcc: +# for lib in /usr/${_target}/usr/lib/*; do +# ln -s ${lib} /usr/${_target}/lib/$(basename ${lib} +# done +# gcc build should probably add a -B flag to usr/lib instead + _pkgname=glibc _target="mips64el-unknown-linux-gnu" _sysroot="/usr/${_target}" _ARCH=mips +# Disable this after building final gcc +# Otherwise you'll get ld: missing libc.so errors +BOOTSTRAPING=true + unset CFLAGS CXXFLAGS LDFLAGS pkgname=${_target}-glibc @@ -21,7 +31,7 @@ url="http://www.gnu.org/software/libc" license=('GPL' 'LGPL') groups=("${_target}-devel") depends=("${_target}-linux-api-headers>=3.1.6" 'tzdata') -makedepends=("cross-${_target}-binutils" +makedepends=("${_target}-binutils" "cross-${_target}-gcc-core-shared" "cross-${_target}-glibc-headers") backup=(etc/gai.conf @@ -174,7 +184,7 @@ build() { # --libdir=${_sysroot}/usr/lib \ # --libexecdir=${_sysroot}/usr/lib \ - + # build libraries with hardening disabled echo "build-programs=no" >> configparms make @@ -202,6 +212,16 @@ package() { rm -f ${pkgdir}${_sysroot}/etc/ld.so.{cache,conf} +# Compat symlinks + ln -s ${_sysroot}/usr/lib ${pkgdir}${_sysroot}/lib + ln -s ${_sysroot}/lib ${pkgdir}${_sysroot}/lib32 + +# Fix libc.so to find correct libraries + if ${BOOTSTRAPING}; then + sed -i "s|/lib|${_sysroot}&|g" ${pkgdir}${_sysroot}/usr/lib/libc.so + sed -i "s|/lib|${_sysroot}&|g" ${pkgdir}${_sysroot}/usr/lib/libpthreads.so + fi + install -dm755 ${pkgdir}${_sysroot}/etc/rc.d install -dm755 ${pkgdir}${_sysroot}/usr/sbin install -dm755 ${pkgdir}${_sysroot}/usr/lib/locale |