avr-*: split avr-gcc-libc into separate packages

- avr-gcc 5.3.0 -> 5.4.0

closes #28220

Since the packages do not share a common prefix anymore, you need
to define the current store paths in your project's Makefile.

Example for an atmega644 build:

CFLAGS += -I /nix/store/9rffxzds5crcpm76g3nr03jx0aa657cf-avr-libc-2.0.0/avr/include
CFLAGS += -B /nix/store/9rffxzds5crcpm76g3nr03jx0aa657cf-avr-libc-2.0.0/avr/lib/avr5
CFLAGS += -L /nix/store/9rffxzds5crcpm76g3nr03jx0aa657cf-avr-libc-2.0.0/avr/lib/avr5
CFLAGS += -L /nix/store/8409dj9js4i5901i63275wxdm783l0p6-avr-gcc-5.4.0/lib/gcc/avr/5.4.0/avr5
This commit is contained in:
Maximilian Güntner 2017-09-05 04:42:26 +02:00
parent c23654b2ed
commit 6a458c169b
No known key found for this signature in database
GPG key ID: 5D667E0FD0397CFF
5 changed files with 117 additions and 77 deletions

View file

@ -1,76 +0,0 @@
{ stdenv, fetchurl, texinfo, gmp, mpfr, libmpc, zlib }:
stdenv.mkDerivation {
name = "avr-gcc-libc";
srcs = [
(fetchurl {
url = "mirror://gnu/binutils/binutils-2.26.tar.bz2";
sha256 = "1ngc2h3knhiw8s22l8y6afycfaxr5grviqy7mwvm4bsl14cf9b62";
})
(fetchurl {
url = "mirror://gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2";
sha256 = "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq";
})
(fetchurl {
url = http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2;
sha256 = "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj";
})
];
sourceRoot = ".";
nativeBuildInputs = [ texinfo ];
buildInputs = [ gmp mpfr libmpc zlib ];
hardeningDisable = [ "format" ];
# 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
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
# 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
# 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 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 ..
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,22 @@
{ stdenv, fetchurl }:
let
version = "2.26";
in
stdenv.mkDerivation {
name = "avr-binutils-${version}";
src = fetchurl {
url = "mirror://gnu/binutils/binutils-${version}.tar.bz2";
sha256 = "1ngc2h3knhiw8s22l8y6afycfaxr5grviqy7mwvm4bsl14cf9b62";
};
configureFlags = "--target=avr --enable-languages=c,c++";
meta = with stdenv.lib; {
description = "the GNU Binutils for AVR microcontrollers";
homepage = http://www.gnu.org/software/binutils/;
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ mguentner ];
};
}

View file

@ -0,0 +1,50 @@
{ stdenv, fetchurl, gmp, mpfr, libmpc, zlib, avrbinutils, texinfo }:
let
version = "5.4.0";
in
stdenv.mkDerivation {
name = "avr-gcc-${version}";
src = fetchurl {
url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.bz2";
sha256 = "0fihlcy5hnksdxk0sn6bvgnyq8gfrgs8m794b1jxwd1dxinzg3b0";
};
buildInputs = [ gmp mpfr libmpc zlib avrbinutils ];
nativeBuildInputs = [ texinfo ];
hardeningDisable = [ "format" ];
stripDebugList= [ "bin" "libexec" ];
enableParallelBuilding = true;
configurePhase = ''
mkdir gcc-build
cd gcc-build
../configure \
--prefix=$out \
--host=$CHOST \
--build=$CHOST \
--target=avr \
--with-as=${avrbinutils}/bin/avr-as \
--with-gnu-as \
--with-gnu-ld \
--with-ld=${avrbinutils}/bin/avr-ld \
--with-system-zlib \
--disable-install-libiberty \
--disable-nls \
--disable-libssp \
--with-dwarf2 \
--enable-languages=c,c++'';
meta = with stdenv.lib; {
description = "GNU Compiler Collection, version ${version} for AVR microcontrollers";
homepage = http://gcc.gnu.org;
license = licenses.gpl3Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ mguentner ];
};
}

View file

@ -0,0 +1,38 @@
{ stdenv, fetchurl, avrgcc, avrbinutils, automake, autoconf }:
let
version = "2.0.0";
in
stdenv.mkDerivation {
name = "avr-libc-${version}";
src = fetchurl {
url = http://download.savannah.gnu.org/releases/avr-libc/avr-libc-2.0.0.tar.bz2;
sha256 = "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj";
};
buildInputs = [ avrgcc avrbinutils automake autoconf ];
configurePhase = ''
unset LD
unset AS
unset AR
unset CC
unset CXX
unset RANLIB
unset STRIP
./configure --prefix=$out --build=$(./config.guess) --host=avr
'';
# Make sure we don't strip the libraries in lib/gcc/avr.
stripDebugList= "bin";
dontPatchELF = true;
meta = with stdenv.lib; {
description = "a C runtime library for AVR microcontrollers";
homepage = http://savannah.nongnu.org/projects/avr-libc/;
license = licenses.bsd3;
platforms = platforms.unix;
maintainers = with maintainers; [ mguentner ];
};
}

View file

@ -6587,7 +6587,13 @@ with pkgs;
samples = true;
};
avrgcclibc = callPackage ../development/misc/avr-gcc-with-avr-libc {};
avrgcclibc = throw "avrgcclibs are now separate packages, install avrbinutils, avrgcc and avrlibc";
avrbinutils = callPackage ../development/misc/avr/binutils {};
avrgcc = callPackage ../development/misc/avr/gcc {};
avrlibc = callPackage ../development/misc/avr/libc {};
avr8burnomat = callPackage ../development/misc/avr8-burn-omat { };