diff --git a/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix b/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix new file mode 100644 index 00000000000..2f2d0081fff --- /dev/null +++ b/pkgs/os-specific/linux/firmware/raspberrypi/armstubs.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig }: + +let + inherit (stdenv.lib) optionals; +in +stdenv.mkDerivation { + pname = "raspberrypi-armstubs"; + version = "2020-10-08"; + + src = fetchFromGitHub { + owner = "raspberrypi"; + repo = "tools"; + rev = "fc0e73c13865450e95edd046200e42a6e52d8256"; + sha256 = "1g6ikpjcrm5x0rk5aiwjdd8grf997qkvgamcrdxy6k9ln746h25s"; + }; + + NIX_CFLAGS_COMPILE = [ + "-march=armv8-a+crc" + ]; + + preConfigure = '' + cd armstubs + ''; + + makeFlags = [ + "CC8=${stdenv.cc.targetPrefix}cc" + "LD8=${stdenv.cc.targetPrefix}ld" + "OBJCOPY8=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP8=${stdenv.cc.targetPrefix}objdump" + "CC=${stdenv.cc.targetPrefix}cc" + "LD=${stdenv.cc.targetPrefix}ld" + "OBJCOPY=${stdenv.cc.targetPrefix}objcopy" + "OBJDUMP=${stdenv.cc.targetPrefix}objdump" + ] + ++ optionals (stdenv.isAarch64) [ "armstub8.bin" "armstub8-gic.bin" ] + ++ optionals (stdenv.isAarch32) [ "armstub7.bin" "armstub8-32.bin" "armstub8-32-gic.bin" ] + ; + + installPhase = '' + mkdir -vp $out/ + cp -v *.bin $out/ + ''; + + meta = with stdenv.lib; { + description = "Firmware related ARM stubs for the Raspberry Pi"; + homepage = https://github.com/raspberrypi/tools; + license = licenses.bsd3; + platforms = [ "armv6l-linux" "armv7l-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ samueldr ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 13c7aede4b2..0074f70d0da 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19211,6 +19211,8 @@ in raspberrypi-eeprom = callPackage ../os-specific/linux/raspberrypi-eeprom {}; + raspberrypi-armstubs = callPackage ../os-specific/linux/firmware/raspberrypi/armstubs.nix {}; + regionset = callPackage ../os-specific/linux/regionset { }; rfkill_udev = callPackage ../os-specific/linux/rfkill/udev.nix { };