1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5}:
6
7let
8 inherit (lib) optionals;
9in
10stdenv.mkDerivation {
11 pname = "raspberrypi-armstubs";
12 version = "unstable-2022-07-11";
13
14 src = fetchFromGitHub {
15 owner = "raspberrypi";
16 repo = "tools";
17 rev = "439b6198a9b340de5998dd14a26a0d9d38a6bcac";
18 hash = "sha512-KMHgj73eXHT++IE8DbCsFeJ87ngc9R3XxMUJy4Z3s4/MtMeB9zblADHkyJqz9oyeugeJTrDtuVETPBRo7M4Y8A==";
19 };
20
21 env.NIX_CFLAGS_COMPILE = toString [
22 "-march=armv8-a+crc"
23 ];
24
25 preConfigure = ''
26 cd armstubs
27 '';
28
29 makeFlags = [
30 "CC8=${stdenv.cc.targetPrefix}cc"
31 "LD8=${stdenv.cc.targetPrefix}ld"
32 "OBJCOPY8=${stdenv.cc.targetPrefix}objcopy"
33 "OBJDUMP8=${stdenv.cc.targetPrefix}objdump"
34 "CC7=${stdenv.cc.targetPrefix}cc"
35 "LD7=${stdenv.cc.targetPrefix}ld"
36 "OBJCOPY7=${stdenv.cc.targetPrefix}objcopy"
37 "OBJDUMP7=${stdenv.cc.targetPrefix}objdump"
38 ]
39 ++ optionals (stdenv.hostPlatform.isAarch64) [
40 "armstub8.bin"
41 "armstub8-gic.bin"
42 ]
43 ++ optionals (stdenv.hostPlatform.isAarch32) [
44 "armstub7.bin"
45 "armstub8-32.bin"
46 "armstub8-32-gic.bin"
47 ];
48
49 installPhase = ''
50 runHook preInstall
51 mkdir -vp $out/
52 cp -v *.bin $out/
53 runHook postInstall
54 '';
55
56 meta = with lib; {
57 description = "Firmware related ARM stubs for the Raspberry Pi";
58 homepage = "https://github.com/raspberrypi/tools";
59 license = licenses.bsd3;
60 platforms = [
61 "armv6l-linux"
62 "armv7l-linux"
63 "aarch64-linux"
64 ];
65 maintainers = [ ];
66 };
67}