diff options
Diffstat (limited to 'nixpkgs/pkgs/misc/arm-trusted-firmware')
-rw-r--r-- | nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix b/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix new file mode 100644 index 000000000000..73e2a96d0cde --- /dev/null +++ b/nixpkgs/pkgs/misc/arm-trusted-firmware/default.nix @@ -0,0 +1,96 @@ +{ stdenv, fetchFromGitHub, pkgsCross, buildPackages }: + +let + buildArmTrustedFirmware = { filesToInstall + , installDir ? "$out" + , platform + , extraMakeFlags ? [] + , extraMeta ? {} + , version ? "2.0" + , ... } @ args: + stdenv.mkDerivation (rec { + + name = "arm-trusted-firmware-${platform}-${version}"; + inherit version; + + src = fetchFromGitHub { + owner = "ARM-software"; + repo = "arm-trusted-firmware"; + rev = "refs/tags/v${version}"; + sha256 = "087pkwa6slxff0aiz3v42gww007nww97bl1p96fvvs7rr1y14gjx"; + }; + + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + # For Cortex-M0 firmware in RK3399 + nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ]; + + makeFlags = [ + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + "PLAT=${platform}" + ] ++ extraMakeFlags; + + installPhase = '' + runHook preInstall + + mkdir -p ${installDir} + cp ${stdenv.lib.concatStringsSep " " filesToInstall} ${installDir} + + runHook postInstall + ''; + + hardeningDisable = [ "all" ]; + dontStrip = true; + + # Fatal error: can't create build/sun50iw1p1/release/bl31/sunxi_clocks.o: No such file or directory + enableParallelBuilding = false; + + meta = with stdenv.lib; { + homepage = https://github.com/ARM-software/arm-trusted-firmware; + description = "A reference implementation of secure world software for ARMv8-A"; + license = licenses.bsd3; + maintainers = [ maintainers.lopsided98 ]; + } // extraMeta; + } // builtins.removeAttrs args [ "extraMeta" ]); + +in rec { + inherit buildArmTrustedFirmware; + + armTrustedFirmwareAllwinner = buildArmTrustedFirmware rec { + version = "1.0"; + src = fetchFromGitHub { + owner = "apritzel"; + repo = "arm-trusted-firmware"; + # Branch: `allwinner` + rev = "91f2402d941036a0db092d5375d0535c270b9121"; + sha256 = "0lbipkxb01w97r6ah8wdbwxir3013rp249fcqhlzh2gjwhp5l1ys"; + }; + platform = "sun50iw1p1"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = ["build/${platform}/release/bl31.bin"]; + }; + + armTrustedFirmwareQemu = buildArmTrustedFirmware rec { + platform = "qemu"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ + "build/${platform}/release/bl1.bin" + "build/${platform}/release/bl2.bin" + "build/${platform}/release/bl31.bin" + ]; + }; + + armTrustedFirmwareRK3328 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "rk3328"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; + }; + + armTrustedFirmwareRK3399 = buildArmTrustedFirmware rec { + extraMakeFlags = [ "bl31" ]; + platform = "rk3399"; + extraMeta.platforms = ["aarch64-linux"]; + filesToInstall = [ "build/${platform}/release/bl31/bl31.elf"]; + }; +} |