summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 15e0ee047abd3c6c21b8a5aa2c90c2b8f117ad6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Maintainer: Jaap Aarts <jaap.aarts1@gmail.com>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Alexander F. Rødseth <xyproto@archlinux.org>
# Contributor: Emil Renner Berthing <aur@esmil.dk>

_target=riscv64-linux-uclibc
pkgname=$_target-binutils
pkgver=2.39
pkgrel=1
pkgdesc='Assemble and manipulate binary and object files for 32-bit and 64-bit RISC-V'
arch=(x86_64)
url='https://gnu.org/software/binutils/'
license=(GPL)
groups=(risc-v)
depends=(libelf)
makedepends=(setconf)
source=("https://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.xz"
        "https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.xz"
        "git+https://github.com/floatious/elf2flt.git#commit=a8c9f650b82109abf7aa730f298ea5182ed62613")
sha512sums=("68e038f339a8c21faa19a57bbc447a51c817f47c2e06d740847c6e9cc3396c025d35d5369fa8c3f8b70414757c89f0e577939ddc0d70f283182504920f53b0a3"
            "b7a6767c6c7ca6b5cafa7080e6820b7bb3a53b7148348c438d99905defbdf0d30c9744a484ee01c9441a8153901808513366b15ba9533e20c9673c262ade36ac"
            "SKIP")

prepare() {
  setconf binutils-$pkgver/libiberty/configure ac_cpp "'\$CPP \$CPPFLAGS -O2'"
}

build() {
  cd "binutils-$pkgver"

  unset CPPFLAGS
  ./configure \
    --disable-nls \
    --enable-deterministic-archives \
    --enable-gold \
    --enable-ld=default \
    --enable-multilib \
    --enable-plugins \
    --prefix=/usr \
    --target=$_target \
    --with-gnu-as \
    --with-gnu-ld \
    --with-sysroot=/usr/$_target \
    --with-system-zlib
  make -O
  binutilsdir="binutils-2.33.1"
  cd ../"$binutilsdir"
  ./configure \
		--disable-werror \
		--disable-nls \
		--without-zlib \
		--disable-shared \
		--enable-static \
		--disable-plugins \
    --target=$_target
  make all-{libiberty,bfd}
  cd ../
  e2futils="binutils-elf2flt"
  mkdir -p "${e2futils}"/{bfd,include/elf,libiberty}
  cp "${binutilsdir}"/bfd/{bfd,bfd_stdint}.h "${binutilsdir}/bfd/libbfd.a" "${e2futils}"/bfd/
  cp "${binutilsdir}/libiberty/libiberty.a" "${e2futils}"/libiberty/
  cp "${binutilsdir}"/include/{ansidecl,filenames,hashtab,libiberty,symcat}.h "${e2futils}"/include/
  cp "${binutilsdir}"/include/diagnostics.h "${e2futils}"/include/
  cp "${binutilsdir}"/include/elf/{reloc-macros,riscv}.h "${e2futils}"/include/elf/

  cd elf2flt
  ./configure --target=$_target --with-binutils-build-dir=../"${e2futils}"
  make
}

#TODO: fix tests
# check() {
  # * Unset LDFLAGS as testsuite makes assumptions about which ones are active.
  # * Do not abort on errors - manually check log files.
  # make -O -C "binutils-$pkgver" LDFLAGS="" -k check
# }

package() {
  make -C "binutils-$pkgver" DESTDIR="$pkgdir" install

  # Remove info documents that conflict with host version
  rm -r "$pkgdir/usr/share/info"

  rm "$pkgdir"/usr/lib/bfd-plugins/libdep.so

  # Install elf2flt
  mv "$pkgdir/usr/$_target/bin/ld" "$pkgdir/usr/$_target/bin/ld.real"
  # mkdir "$pkgdir/usr/lib"
  cp "$srcdir/elf2flt/ld-elf2flt" "$pkgdir/usr/$_target/bin/ld"
  cp "$srcdir/elf2flt/elf2flt" "$pkgdir/usr/$_target/bin"
  cp "$srcdir/elf2flt/elf2flt.ld" "$pkgdir/usr/$_target/lib/"
}

# getver: gnu.org/software/binutils