|
1 |
| -{ |
2 |
| - lib, |
3 |
| - pkgs, |
4 |
| - buildArmTrustedFirmware, |
5 |
| - fetchgit, |
6 |
| - enable-tee, |
7 |
| -}: |
8 |
| -with pkgs; let |
9 |
| - opteedflag = |
10 |
| - if enable-tee |
11 |
| - then "SPD=opteed" |
12 |
| - else ""; |
| 1 | +{ lib, fetchgit, enable-tee, stdenv, buildPackages, pkgsCross, openssl, }: |
| 2 | +let |
| 3 | + opteedflag = if enable-tee then "SPD=opteed" else ""; |
13 | 4 | target-board = "imx8mq";
|
14 |
| -in |
15 |
| - buildArmTrustedFirmware rec { |
16 |
| - pname = "imx8mq-atf"; |
17 |
| - platform = target-board; |
18 |
| - enableParallelBuilding = true; |
19 |
| - extraMeta.platforms = ["aarch64-linux"]; |
20 |
| - |
21 |
| - src = fetchgit { |
22 |
| - url = "https://github.com/nxp-imx/imx-atf.git"; |
23 |
| - #lf6.1.55_2.2.0 |
24 |
| - rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02"; |
25 |
| - sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc="; |
26 |
| - }; |
27 |
| - |
28 |
| - extraMakeFlags = lib.concatLists [ |
29 |
| - (lib.optional (lib.versionAtLeast pkgs.binutils.version "2.39") "LDFLAGS=--no-warn-rwx-segments") |
30 |
| - ["PLAT=${platform}" "bl31" "${opteedflag}"] |
31 |
| - ]; |
32 |
| - |
33 |
| - filesToInstall = ["build/${target-board}/release/bl31.bin"]; |
34 |
| - } |
| 5 | +in stdenv.mkDerivation rec { |
| 6 | + pname = "imx8mq-atf"; |
| 7 | + version = "lf6.1.55_2.2.0"; |
| 8 | + platform = target-board; |
| 9 | + enableParallelBuilding = true; |
| 10 | + |
| 11 | + src = fetchgit { |
| 12 | + url = "https://github.com/nxp-imx/imx-atf.git"; |
| 13 | + rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02"; |
| 14 | + sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc="; |
| 15 | + }; |
| 16 | + |
| 17 | + depsBuildBuild = [ buildPackages.stdenv.cc ]; |
| 18 | + |
| 19 | + # For Cortex-M0 firmware in RK3399 |
| 20 | + nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ]; |
| 21 | + |
| 22 | + buildInputs = [ openssl ]; |
| 23 | + |
| 24 | + makeFlags = [ |
| 25 | + "HOSTCC=$(CC_FOR_BUILD)" |
| 26 | + "M0_CROSS_COMPILE=${pkgsCross.arm-embedded.stdenv.cc.targetPrefix}" |
| 27 | + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" |
| 28 | + # binutils 2.39 regression |
| 29 | + # `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions` |
| 30 | + # See also: https://developer.trustedfirmware.org/T996 |
| 31 | + "LDFLAGS=-no-warn-rwx-segments" |
| 32 | + "PLAT=${platform}" |
| 33 | + "bl31" |
| 34 | + "${opteedflag}" |
| 35 | + ]; |
| 36 | + |
| 37 | + installPhase = '' |
| 38 | + runHook preInstall |
| 39 | +
|
| 40 | + mkdir -p $out |
| 41 | + cp build/${target-board}/release/bl31.bin $out |
| 42 | +
|
| 43 | + runHook postInstall |
| 44 | + ''; |
| 45 | + |
| 46 | + hardeningDisable = [ "all" ]; |
| 47 | + dontStrip = true; |
| 48 | + |
| 49 | + meta = with lib; { |
| 50 | + homepage = "https://github.com/nxp-imx/imx-atf"; |
| 51 | + description = |
| 52 | + "Reference implementation of secure world software for ARMv8-A"; |
| 53 | + license = [ licenses.bsd3 ]; |
| 54 | + maintainers = with maintainers; [ gngram ]; |
| 55 | + platforms = [ "aarch64-linux" ]; |
| 56 | + }; |
| 57 | +} |
0 commit comments