From 2f5136e5f40d69bd0115d898fda48d0ed9159c40 Mon Sep 17 00:00:00 2001 From: David P Date: Mon, 9 Apr 2018 14:43:48 -0300 Subject: Add libre/sh-elf-{gcc,binutils,newlib} --- libre/aarch64-linux-gnu-gcc/PKGBUILD | 92 ++++++++++++++++++++++++++ libre/sh-elf-binutils/PKGBUILD | 64 ++++++++++++++++++ libre/sh-elf-gcc/PKGBUILD | 122 +++++++++++++++++++++++++++++++++++ libre/sh-elf-newlib/PKGBUILD | 73 +++++++++++++++++++++ 4 files changed, 351 insertions(+) create mode 100644 libre/aarch64-linux-gnu-gcc/PKGBUILD create mode 100644 libre/sh-elf-binutils/PKGBUILD create mode 100644 libre/sh-elf-gcc/PKGBUILD create mode 100644 libre/sh-elf-newlib/PKGBUILD (limited to 'libre') diff --git a/libre/aarch64-linux-gnu-gcc/PKGBUILD b/libre/aarch64-linux-gnu-gcc/PKGBUILD new file mode 100644 index 000000000..60c10c9c3 --- /dev/null +++ b/libre/aarch64-linux-gnu-gcc/PKGBUILD @@ -0,0 +1,92 @@ +# Maintainer: Anatol Pomozov + +_target=aarch64-linux-gnu +pkgname=$_target-gcc +pkgver=7.2.0 +_islver=0.18 +pkgrel=1 +_snapshot=7-20170907 +pkgdesc='The GNU Compiler Collection - cross compiler for ARM64 target' +arch=(i686 x86_64) +url='http://gcc.gnu.org/' +license=(GPL LGPL FDL) +depends=($_target-binutils $_target-glibc libmpc zlib) +makedepends=(gmp mpfr) +options=(!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.xz + http://isl.gforge.inria.fr/isl-$_islver.tar.bz2) +sha256sums=('af37950ac7fc4996b4bdf22cbaaf5d1db52ff6490bfe3d83bcae5d5097645bc9' + '6b8b0fd7f81d0a957beb3679c81bbb34ccc7568d5682844d8924424a0dadcb1b') + +if [ -n "$_snapshot" ]; then + _basedir=gcc-$_snapshot +else + _basedir=gcc-$pkgver +fi + +prepare() { + cd $_basedir + + # link isl for in-tree builds + ln -sf ../isl-$_islver isl + + echo $pkgver > gcc/BASE-VER + + # Do not run fixincludes + sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in + + # hack! - some configure tests for header files using "$CPP $CPPFLAGS" + sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" "$srcdir"/$_basedir/{libiberty,gcc}/configure + + rm -rf $srcdir/gcc-build + mkdir $srcdir/gcc-build +} + +build() { + cd gcc-build + + # using -pipe causes spurious test-suite failures + # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565 + CFLAGS=${CFLAGS/-pipe/} + CXXFLAGS=${CXXFLAGS/-pipe/} + + $srcdir/$_basedir/configure \ + --prefix=/usr \ + --program-prefix=$_target- \ + --with-local-prefix=/usr/$_target \ + --with-sysroot=/usr/$_target \ + --with-build-sysroot=/usr/$_target \ + --libdir=/usr/lib --libexecdir=/usr/lib \ + --target=$_target --host=$CHOST --build=$CHOST \ + --disable-nls \ + --enable-languages=c,c++ \ + --enable-shared --enable-threads=posix \ + --with-system-zlib --with-isl --enable-__cxa_atexit \ + --disable-libunwind-exceptions --enable-clocale=gnu \ + --disable-libstdcxx-pch --disable-libssp \ + --enable-gnu-unique-object --enable-linker-build-id \ + --enable-lto --enable-plugin --enable-install-libiberty \ + --with-linker-hash-style=gnu --enable-gnu-indirect-function \ + --disable-multilib --disable-werror \ + --enable-checking=release + + make +} + +package() { + cd gcc-build + + make DESTDIR="$pkgdir" install-gcc install-target-libgcc install-target-libstdc++-v3 + + # strip target binaries + find "$pkgdir"/usr/lib/gcc/$_target/ "$pkgdir"/usr/$_target/lib -type f -and \( -name \*.a -or -name \*.o \) -exec $_target-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc '{}' \; + + # strip host binaries + find "$pkgdir"/usr/bin/ "$pkgdir"/usr/lib/gcc/$_target/ -type f -and \( -executable \) -exec strip '{}' \; + + # Remove files that conflict with host gcc package + rm -r "$pkgdir"/usr/share/man/man7 + rm -r "$pkgdir"/usr/share/info + rm -r "$pkgdir"/usr/share/gcc-$pkgver +} diff --git a/libre/sh-elf-binutils/PKGBUILD b/libre/sh-elf-binutils/PKGBUILD new file mode 100644 index 000000000..c0d7d02a2 --- /dev/null +++ b/libre/sh-elf-binutils/PKGBUILD @@ -0,0 +1,64 @@ +# Maintainer: David P. + +_target=sh-elf +pkgname=$_target-binutils +pkgver=2.29.1 +pkgrel=1 +pkgdesc='A set of programs to assemble and manipulate binary and object files for the ARM GNU EABI target' +arch=('x86_64' 'i686' 'armv7h') +url='http://www.gnu.org/software/binutils/' +license=(GPL) +depends=(zlib) +source=(https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig}) +sha512sums=('4063d34555526922376ccceb3f14b43e287442e82a8038cf50f4f51ad97d438c672c0e310ca4b856c9aff5aa9911073e256e8298a7a3f1844eeb60b90d955592' + 'SKIP') +validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93' # Tristan Gingold + '3A24BC1E8FB409FA9F14371813FCEF89DD9E3C4F') # Nick Clifton (Chief Binutils Maintainer) + +prepare() { + cd binutils-$pkgver + sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure +} + +build() { + cd binutils-$pkgver + + if [ "${CARCH}" != "i686" ]; then + # enabling gold linker at i686 makes the install fail + enable_gold='--enable-gold' + fi + + ./configure --target=$_target \ + --with-sysroot=/usr/$_target \ + --prefix=/usr \ + --disable-multilib \ + --with-gnu-as \ + --with-gnu-ld \ + --disable-nls \ + --enable-ld=default \ + $enable_gold \ + --enable-plugins \ + --enable-deterministic-archives + + make +} + +check() { + cd binutils-$pkgver + + # unset LDFLAGS as testsuite makes assumptions about which ones are active + # do not abort on errors - manually check log files + make -k LDFLAGS="" check || true +} + +package() { + cd binutils-$pkgver + + make DESTDIR="$pkgdir" install + + # Remove file conflicting with host binutils and manpages for MS Windows tools + rm "$pkgdir"/usr/share/man/man1/$_target-{dlltool,nlmconv,windres,windmc}* + + # Remove info documents that conflict with host version + rm -r "$pkgdir"/usr/share/info +} diff --git a/libre/sh-elf-gcc/PKGBUILD b/libre/sh-elf-gcc/PKGBUILD new file mode 100644 index 000000000..fe43c3e3a --- /dev/null +++ b/libre/sh-elf-gcc/PKGBUILD @@ -0,0 +1,122 @@ +# Maintainer: David P. + +_target=sh-elf +pkgname=$_target-gcc +pkgver=7.3.1 +_islver=0.18 +pkgrel=2 +_snapshot=7-20180125 +pkgdesc="The GNU Compiler Collection - cross compiler for $_target target" +arch=('x86_64' 'i686' 'armv7h') +url='http://gcc.gnu.org/' +license=(GPL LGPL FDL) +depends=($_target-binutils libmpc zlib) +makedepends=(gmp mpfr $_target-newlib) +optdepends=("$_target-newlib: Standard C library ($_target target)") +options=(!emptydirs !strip) +source=(#https://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.bz2 + https://gcc.gnu.org/pub/gcc/snapshots/$_snapshot/gcc-$_snapshot.tar.xz + http://isl.gforge.inria.fr/isl-$_islver.tar.bz2) +sha512sums=('87558e9cf6d44df0c45e2bde8ef4d4a8b77716382ae0cd787b80bb4650a0a033d2b815a3b3eaa1798a16d66afca0d38c83a268bed0b26bdf013a483f04923298' + '85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94') + +if [ -n "$_snapshot" ]; then + _basedir=gcc-$_snapshot +else + _basedir=gcc-$pkgver +fi + +prepare() { + cd $_basedir + + # link isl for in-tree builds + ln -sf ../isl-$_islver isl + + echo $pkgver > gcc/BASE-VER + + # hack! - some configure tests for header files using "$CPP $CPPFLAGS" + sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" "$srcdir"/$_basedir/{libiberty,gcc}/configure + + mkdir $srcdir/build-{gcc,gcc-nano} +} + +_build_gcc() { + $srcdir/$_basedir/configure \ + --target=$_target \ + --prefix=/usr \ + --with-sysroot=/usr/$_target \ + --with-native-system-header-dir=/include \ + --libexecdir=/usr/lib \ + --enable-languages=c,c++ \ + --enable-plugins \ + --disable-decimal-float \ + --disable-libffi \ + --disable-libgomp \ + --disable-libmudflap \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libstdcxx-pch \ + --disable-nls \ + --disable-shared \ + --disable-threads \ + --disable-tls \ + --with-gnu-as \ + --with-gnu-ld \ + --with-system-zlib \ + --with-newlib \ + --with-headers=/usr/$_target/include \ + --with-python-dir=share/gcc-$_target \ + --with-gmp \ + --with-mpfr \ + --with-mpc \ + --with-isl \ + --with-libelf \ + --enable-gnu-indirect-function \ + --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' \ + --without-pkgversion \ + --with-bugurl='https://labs.parabola.nu/' \ + --with-multilib + + make INHIBIT_LIBC_CFLAGS='-DUSE_TM_CLONE_REGISTRY=0' +} + +build() { + cd $srcdir/build-gcc + export CFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections' + export CXXFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections' + _build_gcc + + # Build libstdc++ without exceptions support (the 'nano' variant) + cd $srcdir/build-gcc-nano + export CFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections -fno-exceptions' + export CXXFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections -fno-exceptions' + _build_gcc +} + +package() { + cd $srcdir/build-gcc + make DESTDIR="$pkgdir" install -j1 + + cd $srcdir/build-gcc-nano + make DESTDIR="$pkgdir.nano" install -j1 + # we need only libstdc nano files + multilibs=( $($pkgdir/usr/bin/$_target-gcc -print-multi-lib 2>/dev/null) ) + for multilib in "${multilibs[@]}"; do + dir="${multilib%%;*}" + from_dir=$pkgdir.nano/usr/$_target/lib/$dir + to_dir=$pkgdir/usr/$_target/lib/$dir + cp -f $from_dir/libstdc++.a $to_dir/libstdc++_nano.a + cp -f $from_dir/libsupc++.a $to_dir/libsupc++_nano.a + done + + # strip target binaries + find "$pkgdir"/usr/lib/gcc/$_target/$pkgver "$pkgdir"/usr/$_target/lib -type f -and \( -name \*.a -or -name \*.o \) -exec $_target-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc '{}' \; + + # strip host binaries + find "$pkgdir"/usr/bin/ "$pkgdir"/usr/lib/gcc/$_target/$pkgver -type f -and \( -executable \) -exec strip '{}' \; + + # Remove files that conflict with host gcc package + rm -r "$pkgdir"/usr/share/man/man7 + rm -r "$pkgdir"/usr/share/info + rm "$pkgdir"/usr/lib/libcc1.* +} diff --git a/libre/sh-elf-newlib/PKGBUILD b/libre/sh-elf-newlib/PKGBUILD new file mode 100644 index 000000000..a8467144b --- /dev/null +++ b/libre/sh-elf-newlib/PKGBUILD @@ -0,0 +1,73 @@ +# Maintainer: David P. + +_target=sh-elf +pkgname=$_target-newlib +pkgver=3.0.0 +pkgrel=1 +_upstream_ver=$pkgver +pkgdesc="A C standard library implementation intended for use on embedded systems ($_target target)" +arch=(any) +url='http://www.sourceware.org/newlib/' +license=(BSD) +makedepends=($_target-gcc) +options=(!emptydirs !strip) +source=(ftp://sourceware.org/pub/newlib/newlib-$_upstream_ver.tar.gz + fix_build1.patch::'https://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=patch;h=b8272e3b8df8337744423e4dd23e727cf963d528' + fix_build2.patch::'https://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=patch;h=b7e0f286a2ecab3b687ec9b3f95f5a88b9f85310') +sha256sums=('c8566335ee74e5fcaeb8595b4ebd0400c4b043d6acb3263ecb1314f8f5501332' + '2be98412600b8d62b4f1456e95ae4bc3b7a6810981d3fde49fad1f42df0c49da' + '641978987fcfc9fc5c529192f34771db44d3257f95bc682da16e8351356177cf') + +prepare() { + cd newlib-$_upstream_ver + patch -p1 < ../fix_build1.patch + patch -p1 < ../fix_build2.patch +} + +build() { + rm -rf build-{newlib,nano} + mkdir build-{newlib,nano} + + export CFLAGS_FOR_TARGET='-g -O2 -ffunction-sections -fdata-sections' + cd "$srcdir"/build-newlib + ../newlib-$_upstream_ver/configure \ + --target=$_target \ + --prefix=/usr \ + --disable-newlib-supplied-syscalls \ + --disable-nls \ + --enable-newlib-io-long-long \ + --enable-newlib-register-fini + make + + export CFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections' + cd "$srcdir"/build-nano + ../newlib-$_upstream_ver/configure \ + --target=$_target \ + --prefix=/usr \ + --disable-newlib-supplied-syscalls \ + --disable-nls \ + --enable-newlib-reent-small \ + --disable-newlib-fvwrite-in-streamio \ + --disable-newlib-fseek-optimization \ + --disable-newlib-wide-orient \ + --enable-newlib-nano-malloc \ + --disable-newlib-unbuf-stream-opt \ + --enable-lite-exit \ + --enable-newlib-global-atexit \ + --enable-newlib-nano-formatted-io + make +} + +package() { + cd "$srcdir"/build-nano + make DESTDIR="$pkgdir" install -j1 + find "$pkgdir" -regex ".*/lib\(c\|g\|rdimon\)\.a" -exec rename .a _nano.a '{}' \; + + cd "$srcdir"/build-newlib + make DESTDIR="$pkgdir" install -j1 + + find "$pkgdir"/usr/$_target/lib \( -name "*.a" -or -name "*.o" \) -exec $_target-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc '{}' \; + + install -d "$pkgdir"/usr/share/licenses/$pkgname/ + install -m644 -t "$pkgdir"/usr/share/licenses/$pkgname/ "$srcdir"/newlib-$_upstream_ver/COPYING* +} -- cgit v1.2.3