summary refs log tree commit diff
path: root/pkgs/development/misc/avr-gcc-with-avr-libc/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/misc/avr-gcc-with-avr-libc/default.nix')
-rw-r--r--pkgs/development/misc/avr-gcc-with-avr-libc/default.nix135
1 files changed, 61 insertions, 74 deletions
diff --git a/pkgs/development/misc/avr-gcc-with-avr-libc/default.nix b/pkgs/development/misc/avr-gcc-with-avr-libc/default.nix
index 1f54d132dcc..cbd38903aac 100644
--- a/pkgs/development/misc/avr-gcc-with-avr-libc/default.nix
+++ b/pkgs/development/misc/avr-gcc-with-avr-libc/default.nix
@@ -1,88 +1,75 @@
-{ stdenv, fetchurl, writeTextFile, coreutils, gnumake, gcc, gnutar, bzip2
-  , gnugrep, gnused, gawk, diffutils, patch
-  , gmp, mpfr, mpc }:
+{ stdenv, fetchurl, texinfo, gmp, mpfr, libmpc, zlib }:
 
 stdenv.mkDerivation {
   name = "avr-gcc-libc";
 
-  srcBinutils = fetchurl {
-    url = "mirror://gnu/binutils/binutils-2.21.1.tar.bz2";
-    sha256 = "0m7nmd7gc9d9md43wbrv65hz6lbi2crqwryzpigv19ray1lzmv6d";
-  };
-
-  srcGCC = fetchurl {
-    url = "mirror://gcc/releases/gcc-4.6.3/gcc-core-4.6.3.tar.bz2";
-    sha256 = "1hai090f0svf886nyhn4glmfw54v9lz88w2izkx5iqhd3j400gi8";
-  };
+  srcs = [
+    (fetchurl {
+        url = "mirror://gnu/binutils/binutils-2.25.tar.bz2";
+        sha256 = "08r9i26b05zcwb9zxb6zllpfdiiicdfsgbpsjlrjmvx3rxjzrpi2";
+    })
 
-  srcGCCGPP = fetchurl {
-    url = "mirror://gcc/releases/gcc-4.6.3/gcc-g++-4.6.3.tar.bz2";
-    sha256 = "1s199gb6p65r5k69cdfqqcz5hgifw9bhyj65n2b91s80x4rwgq5k";
-  };
-
-  srcAVRLibc = fetchurl {
-    url = http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.7.1.tar.bz2;
-    sha256 = "1b1s4cf787izlm3r094vvkzrzb3w3bg6bwiz2wz71cg7q07kzzn6";
-  };
+    (fetchurl {
+        url = "mirror://gcc/releases/gcc-4.8.4/gcc-4.8.4.tar.bz2";
+        sha256 = "4a80aa23798b8e9b5793494b8c976b39b8d9aa2e53cd5ed5534aff662a7f8695";
+    })
 
-  phases = "doAll";
-
-  # don't call any wired $buildInputs/nix-support/* scripts or such. This makes the build fail 
-  builder = writeTextFile {
-    name = "avrbinutilsgccavrlibc-builder-script";
-    text =  ''
-    PATH=${coreutils}/bin:${gnumake}/bin:${gcc}/bin:${gnutar}/bin:${bzip2}/bin:${gnugrep}/bin:${gnused}/bin:${gawk}/bin:${diffutils}/bin:${patch}/bin
-    # that's all a bit too hacky...!
-    for i in `cat ${gcc}/nix-support/propagated-user-env-packages`; do
-      echo adding $i
-      PATH=$PATH:$i/bin
-    done
-    mkdir -p "$out"
-    export > env-vars
-
-    for i in "${gmp}" "${mpfr}" "${mpc}"; do
-      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$i/include "
-      export NIX_LDFLAGS="$NIX_LDFLAGS -L$i/lib "
-    done
+    (fetchurl {
+        url = http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.1.tar.bz2;
+        sha256 = "0sd9qkvhmk9av4g1f8dsjwc309hf1g0731bhvicnjb3b3d42l1n3";
+    })
+  ];
+  
+  sourceRoot = ".";
 
+  nativeBuildInputs = [ texinfo ];
+  
+  buildInputs = [ gmp mpfr libmpc zlib ];
+  
+  # Make sure we don't strip the libraries in lib/gcc/avr.
+  stripDebugList= [ "bin" "avr/bin" "libexec" ];
+  
+  installPhase = ''
     # important, without this gcc won't find the binutils executables
-    PATH=$PATH:$out/bin
-
-    prefix=$out
+    export PATH=$PATH:$out/bin
+    
+    # Binutils.
+    pushd binutils-*/
+    mkdir obj-avr
+    cd obj-avr
+    ../configure --target=avr --prefix="$out" --disable-nls --disable-debug --disable-dependency-tracking
+    make $MAKE_FLAGS
+    make install
+    popd
 
-    tar jxf $srcBinutils
-      cd binutils-*/
-      mkdir obj-avr
-      cd obj-avr
-      ../configure --target=avr --prefix="$prefix" --disable-nls --prefix=$prefix
-      make $MAKE_FLAGS
-      make install
+    # GCC.
+    pushd gcc-*
+    mkdir obj-avr
+    cd obj-avr
+    ../configure --target=avr --prefix="$out" --disable-nls --disable-libssp --with-dwarf2 --disable-install-libiberty --with-system-zlib --enable-languages=c,c++
+    make $MAKE_FLAGS
+    make install
+    popd
 
-    cd $TMP
-    tar jxf $srcGCC
-    tar jxf $srcGCCGPP
-      cd gcc-*
-      mkdir obj-avr
-      cd obj-avr
-      ../configure --target=avr --prefix="$prefix" --disable-nls --enable-languages=c,c++ --disable-libssp --with-dwarf2
-      make $MAKE_FLAGS
-      make install
-
-    cd $TMP
-      tar jxf $srcAVRLibc
-      cd avr-libc-*
-      patch -Np1 -i ${./avr-libc-fix-gcc-4.6.0.patch}
-      ./configure --prefix="$prefix" --build=`./config.guess` --host=avr
-      make $MAKE_FLAGS
-      make install
-    '';
-  };
+    # We don't want avr-libc to use the native compiler.
+    export BUILD_CC=$CC
+    export BUILD_CXX=$CXX
+    unset CC
+    unset CXX
 
+    # AVR-libc.
+    pushd avr-libc-*
+    ./configure --prefix="$out" --build=`./config.guess` --host=avr
+    make $MAKE_FLAGS
+    make install
+    popd
+  '';
+  
   meta = with stdenv.lib; {
-      description = "AVR developement environment including binutils, avr-gcc and avr-libc";
-      # I've tried compiling the packages separately.. too much hassle. This just works. Fine.
-      license =  ["GPL" "LGPL"]; # see single packages ..
-      homepage = []; # dito
-      platforms = platforms.linux;
+    description = "AVR development environment including binutils, avr-gcc and avr-libc";
+    # I've tried compiling the packages separately.. too much hassle. This just works. Fine.
+    license =  ["GPL" "LGPL"]; # see single packages ..
+    homepage = []; # dito
+    platforms = platforms.linux;
   };
 }