Files
nixos-hardware/nxp/common/bsp/imx-uboot-builder.nix
2025-10-30 12:39:05 +01:00

99 lines
1.7 KiB
Nix

# Parameterized U-Boot builder for i.MX platforms
# This builder is used across i.MX93, i.MX8MP, i.MX8MQ and similar platforms
{
lib,
stdenv,
buildPackages,
# Required dependencies
bison,
dtc,
flex,
gnutls,
libuuid,
ncurses,
openssl,
perl,
efitools,
which,
# Platform-specific parameters
pname,
version,
src,
defconfig,
ramdiskAddr,
fdtAddr,
dtbPath,
# Optional parameters
extraConfig ? "",
extraNativeBuildInputs ? [ ],
}:
let
# Import common U-Boot configuration
ubootConfig = import ../lib/uboot-config.nix;
# Generate the common config with platform-specific memory addresses
commonConfig = ubootConfig.imxCommonUbootConfig {
inherit ramdiskAddr fdtAddr;
};
# Combine common config with any platform-specific extra config
finalExtraConfig = commonConfig + extraConfig;
in
stdenv.mkDerivation {
inherit pname version src;
postPatch = ''
patchShebangs tools
patchShebangs scripts
'';
nativeBuildInputs = [
bison
flex
openssl
which
ncurses
libuuid
gnutls
perl
efitools
]
++ extraNativeBuildInputs;
depsBuildBuild = [ buildPackages.stdenv.cc ];
hardeningDisable = [ "all" ];
enableParallelBuilding = true;
makeFlags = [
"DTC=${lib.getExe buildPackages.dtc}"
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
];
extraConfig = finalExtraConfig;
passAsFile = [ "extraConfig" ];
configurePhase = ''
runHook preConfigure
make ${defconfig}
cat $extraConfigPath >> .config
runHook postConfigure
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp ./u-boot-nodtb.bin $out
cp ./spl/u-boot-spl.bin $out
cp ${dtbPath} $out
cp .config $out
runHook postInstall
'';
dontStrip = true;
}