Merge pull request #1445 from gngram/pr__imx8_atf_build_issues

Pr  imx8 atf build issues
This commit is contained in:
Jörg Thalheim
2025-04-14 14:24:20 +02:00
committed by GitHub
4 changed files with 106 additions and 68 deletions

View File

@@ -1,40 +1,57 @@
{
lib,
pkgs,
buildArmTrustedFirmware,
fetchgit,
enable-tee,
}:
with pkgs; let
opteedflag =
if enable-tee
then "SPD=opteed"
else "";
{ lib, fetchgit, enable-tee, stdenv, buildPackages, pkgsCross, openssl, }:
let
opteedflag = if enable-tee then "SPD=opteed" else "";
target-board = "imx8mp";
in
buildArmTrustedFirmware rec {
pname = "imx8mp-atf";
platform = target-board;
enableParallelBuilding = true;
extraMeta.platforms = ["aarch64-linux"];
in stdenv.mkDerivation rec {
pname = "imx8mp-atf";
version = "lf6.1.55_2.2.0";
platform = target-board;
enableParallelBuilding = true;
src = fetchgit {
url = "https://github.com/nxp-imx/imx-atf.git";
#lf6.1.55_2.2.0
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
};
src = fetchgit {
url = "https://github.com/nxp-imx/imx-atf.git";
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
};
makeFlags = [
"HOSTCC=$(CC_FOR_BUILD)"
"M0_CROSS_COMPILE=arm-none-eabi-"
"CROSS_COMPILE=aarch64-unknown-linux-gnu-"
# binutils 2.39 regression
# `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions`
# See also: https://developer.trustedfirmware.org/T996
"LDFLAGS=-no-warn-rwx-segments"
"PLAT=${platform}" "bl31" "${opteedflag}"
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
filesToInstall = ["build/${target-board}/release/bl31.bin"];
}
# For Cortex-M0 firmware in RK3399
nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ];
buildInputs = [ openssl ];
makeFlags = [
"HOSTCC=$(CC_FOR_BUILD)"
"M0_CROSS_COMPILE=${pkgsCross.arm-embedded.stdenv.cc.targetPrefix}"
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
# binutils 2.39 regression
# `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions`
# See also: https://developer.trustedfirmware.org/T996
"LDFLAGS=-no-warn-rwx-segments"
"PLAT=${platform}"
"bl31"
"${opteedflag}"
];
installPhase = ''
runHook preInstall
mkdir -p $out
cp build/${target-board}/release/bl31.bin $out
runHook postInstall
'';
hardeningDisable = [ "all" ];
dontStrip = true;
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-atf";
description =
"Reference implementation of secure world software for ARMv8-A";
license = [ licenses.bsd3 ];
maintainers = with maintainers; [ gngram ];
platforms = [ "aarch64-linux" ];
};
}

View File

@@ -10,7 +10,6 @@ with pkgs; let
else "";
imx8mp-atf = pkgs.callPackage ./imx8mp-atf.nix {
inherit (pkgs) buildArmTrustedFirmware;
inherit enable-tee;
};
imx8mp-firmware = pkgs.callPackage ./imx8mp-firmware.nix {};

View File

@@ -1,34 +1,57 @@
{
lib,
pkgs,
buildArmTrustedFirmware,
fetchgit,
enable-tee,
}:
with pkgs; let
opteedflag =
if enable-tee
then "SPD=opteed"
else "";
{ lib, fetchgit, enable-tee, stdenv, buildPackages, pkgsCross, openssl, }:
let
opteedflag = if enable-tee then "SPD=opteed" else "";
target-board = "imx8mq";
in
buildArmTrustedFirmware rec {
pname = "imx8mq-atf";
platform = target-board;
enableParallelBuilding = true;
extraMeta.platforms = ["aarch64-linux"];
in stdenv.mkDerivation rec {
pname = "imx8mq-atf";
version = "lf6.1.55_2.2.0";
platform = target-board;
enableParallelBuilding = true;
src = fetchgit {
url = "https://github.com/nxp-imx/imx-atf.git";
#lf6.1.55_2.2.0
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
};
src = fetchgit {
url = "https://github.com/nxp-imx/imx-atf.git";
rev = "08e9d4eef2262c0dd072b4325e8919e06d349e02";
sha256 = "sha256-96EddJXlFEkP/LIGVgNBvUP4IDI3BbDE/c9Yub22gnc=";
};
extraMakeFlags = lib.concatLists [
(lib.optional (lib.versionAtLeast pkgs.binutils.version "2.39") "LDFLAGS=--no-warn-rwx-segments")
["PLAT=${platform}" "bl31" "${opteedflag}"]
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
filesToInstall = ["build/${target-board}/release/bl31.bin"];
}
# For Cortex-M0 firmware in RK3399
nativeBuildInputs = [ pkgsCross.arm-embedded.stdenv.cc ];
buildInputs = [ openssl ];
makeFlags = [
"HOSTCC=$(CC_FOR_BUILD)"
"M0_CROSS_COMPILE=${pkgsCross.arm-embedded.stdenv.cc.targetPrefix}"
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
# binutils 2.39 regression
# `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions`
# See also: https://developer.trustedfirmware.org/T996
"LDFLAGS=-no-warn-rwx-segments"
"PLAT=${platform}"
"bl31"
"${opteedflag}"
];
installPhase = ''
runHook preInstall
mkdir -p $out
cp build/${target-board}/release/bl31.bin $out
runHook postInstall
'';
hardeningDisable = [ "all" ];
dontStrip = true;
meta = with lib; {
homepage = "https://github.com/nxp-imx/imx-atf";
description =
"Reference implementation of secure world software for ARMv8-A";
license = [ licenses.bsd3 ];
maintainers = with maintainers; [ gngram ];
platforms = [ "aarch64-linux" ];
};
}

View File

@@ -9,7 +9,6 @@ with pkgs; let
else "";
imx8mq-atf = pkgs.callPackage ./imx8mq-atf.nix {
inherit (pkgs) buildArmTrustedFirmware;
inherit enable-tee;
};
imx8mq-firmware = pkgs.callPackage ./imx8mq-firmware.nix {};