diff options
Diffstat (limited to 'pkgs/development/compilers/gcc-arm-embedded/default.nix')
-rw-r--r-- | pkgs/development/compilers/gcc-arm-embedded/default.nix | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pkgs/development/compilers/gcc-arm-embedded/default.nix b/pkgs/development/compilers/gcc-arm-embedded/default.nix new file mode 100644 index 00000000000..62e08d1fa7c --- /dev/null +++ b/pkgs/development/compilers/gcc-arm-embedded/default.nix @@ -0,0 +1,46 @@ +{ stdenv, bzip2, patchelf, glibc, gcc, fetchurl, version, releaseType, sha256 }: +with stdenv.lib; +let + versionParts = splitString "-" version; # 4.7 2013q3 20130916 + majorVersion = elemAt versionParts 0; # 4.7 + yearQuarter = elemAt versionParts 1; # 2013q3 + underscoreVersion = replaceChars ["."] ["_"] version; # 4_7-2013q3-20130916 + yearQuarterParts = splitString "q" yearQuarter; # 2013 3 + year = elemAt yearQuarterParts 0; # 2013 + quarter = elemAt yearQuarterParts 1; # 3 + subdirName = "${majorVersion}-${year}-q${quarter}-${releaseType}"; # 4.7-2013-q3-update +in +stdenv.mkDerivation { + name = "gcc-arm-embedded-${version}"; + + src = fetchurl { + url = "https://launchpad.net/gcc-arm-embedded/${majorVersion}/${subdirName}/+download/gcc-arm-none-eabi-${underscoreVersion}-linux.tar.bz2"; + sha256 = sha256; + }; + + buildInputs = [ bzip2 patchelf ]; + + dontPatchELF = true; + + phases = "unpackPhase patchPhase installPhase"; + + installPhase = '' + mkdir -pv $out + cp -r ./* $out + + for f in $(find $out); do + if [ -f "$f" ] && patchelf "$f" 2> /dev/null; then + patchelf --set-interpreter ${glibc}/lib/ld-linux.so.2 \ + --set-rpath $out/lib:${gcc}/lib \ + "$f" || true + fi + done + ''; + + meta = with stdenv.lib; { + description = "Pre-built GNU toolchain from ARM Cortex-M & Cortex-R processors (Cortex-M0/M0+/M3/M4, Cortex-R4/R5/R7)"; + homepage = "https://launchpad.net/gcc-arm-embedded"; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} |