blob: 74905c6ffae419105f376a28bfc6fdbd2876d900 (
plain) (
blame)
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
|
# Sourcery CodeBench Lite toolchain(s) (GCC) from Mentor Graphics
{ stdenv, fetchurl, patchelf, ncurses }:
let
buildToolchain =
{ name, src, description }:
stdenv.mkDerivation rec {
inherit name src;
buildInputs = [ patchelf ];
buildCommand = ''
# Unpack tarball
mkdir -p "$out"
tar --strip-components=1 -xjf "$src" -C "$out"
# Patch binaries
interpreter="$(cat "$NIX_CC"/nix-support/dynamic-linker)"
for file in "$out"/bin/* "$out"/libexec/gcc/*/*/* "$out"/*/bin/*; do
# Skip non-executable files
case "$file" in
*README.txt) echo "skipping $file"; continue;;
*liblto_plugin.so*) echo "skipping $file"; continue;;
esac
# Skip directories
test -d "$file" && continue
echo "patchelf'ing $file"
patchelf --set-interpreter "$interpreter" "$file"
# GDB needs ncurses
case "$file" in
*gdb) patchelf --set-rpath "${ncurses.out}/lib" "$file";;
esac
done
# Manpages
mkdir -p "$out/share/man"
ln -s "$out"/share/doc/*/man/man1 "$out/share/man/man1"
ln -s "$out"/share/doc/*/man/man7 "$out/share/man/man7"
'';
meta = with stdenv.lib; {
inherit description;
homepage = http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/;
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];
};
};
in
{
armLinuxGnuEabi = let version = "2013.05-24"; in buildToolchain rec {
name = "sourcery-codebench-lite-arm-linux-gnueabi-${version}";
description = "Sourcery CodeBench Lite toolchain (GCC) for ARM GNU/Linux, from Mentor Graphics";
src = fetchurl {
url = "http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-${version}-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2";
sha256 = "1xb075ia61c59cya2jl8zp4fvqpfnwkkc5330shvgdlg9981qprr";
};
};
armEabi = let version = "2013.05-23"; in buildToolchain rec {
name = "sourcery-codebench-lite-arm-eabi-${version}";
description = "Sourcery CodeBench Lite toolchain (GCC) for ARM EABI, from Mentor Graphics";
src = fetchurl {
url = "http://sourcery.mentor.com/public/gnu_toolchain/arm-none-eabi/arm-${version}-arm-none-eabi-i686-pc-linux-gnu.tar.bz2";
sha256 = "0nbvdwj3kcv9scx808gniqp0ncdiy2i7afmdvribgkz1lsfin923";
};
};
# TODO: Sourcery CodeBench is also available for MIPS, Power, SuperH,
# ColdFire (and more).
}
|