summary refs log tree commit diff
path: root/pkgs/misc/uboot/default.nix
blob: 74379880706f9739ddc123624578ca418e9cd105 (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
{stdenv, fetchurl, unzip}:

let
  platform = stdenv.platform;
  configureFun = ubootConfig :
    ''
      make mrproper
      make ${ubootConfig} NBOOT=1 LE=1
    '';

  buildFun = kernelArch :
    ''
      unset src
      if test -z "$crossConfig"; then
          make clean all
      else
          make clean all ARCH=${kernelArch} CROSS_COMPILE=$crossConfig-
      fi
    '';
in

stdenv.mkDerivation {
  name = "uboot-2009.11";
   
  src = fetchurl {
    url = "ftp://ftp.denx.de/pub/u-boot/u-boot-2009.11.tar.bz2";
    sha256 = "1rld7q3ww89si84g80hqskd1z995lni5r5xc4d4322n99wqiarh6";
  };

  nativeBuildInputs = [ unzip ];

  dontStrip = true;

  installPhase = ''
    mkdir -p $out
    cp u-boot.bin $out
    cp u-boot u-boot.map $out

    mkdir -p $out/bin
    cp tools/{envcrc,mkimage} $out/bin
  '';

  configurePhase =
    assert platform ? uboot && platform.uboot != null;
    assert (platform ? ubootConfig);
      configureFun platform.ubootConfig;

  buildPhase = assert (platform ? kernelArch);
    buildFun platform.kernelArch;

  crossAttrs = let
      cp = stdenv.cross.platform;
    in
    assert cp ? uboot && cp.uboot != null;
    {
      configurePhase = assert (cp ? ubootConfig);
        configureFun cp.ubootConfig;

      buildPhase = assert (cp ? kernelArch);
        buildFun cp.kernelArch;
    };
}