From 0dd3ad0d7480f7193d326e44cf7562d33d399bcf Mon Sep 17 00:00:00 2001 From: Astro <astro@spaceboyz.net> Date: Tue, 11 Jun 2019 23:33:20 +0200 Subject: [PATCH] nix: build bootloader --- default.nix | 22 ++++++++++--------- nix/firmware.nix | 57 +++++++++++++++++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 28 deletions(-) diff --git a/default.nix b/default.nix index bc050e09..85b6eee1 100644 --- a/default.nix +++ b/default.nix @@ -2,10 +2,10 @@ }: with pkgs; let - firmware = subdir: - callPackage ./nix/firmware.nix { inherit subdir; }; + firmwareBuilder = callPackage ./nix/firmware.nix {}; openocd = callPackage ./nix/openocd.nix { }; in +with firmwareBuilder; { openocd = stdenv.mkDerivation { name = "openocd-card10"; @@ -20,12 +20,14 @@ in --add-flags "-f $out/share/openocd/scripts/target/max32665.cfg" ''; }; - ble = firmware "ble"; - bmatest = firmware "bmatest"; - bmetest = firmware "bmetest"; - ecgtest = firmware "ecgtest"; - Hello_World = firmware "Hello_World"; - Hello_World_FreeRTOS = firmware "Hello_World_FreeRTOS"; - imutest = firmware "imutest"; - ips = firmware "ips"; + + bootloader = firmware "bootloader"; + ble = loadable "ble"; + bmatest = loadable "bmatest"; + bmetest = loadable "bmetest"; + ecgtest = loadable "ecgtest"; + Hello_World = loadable "Hello_World"; + Hello_World_FreeRTOS = loadable "Hello_World_FreeRTOS"; + imutest = loadable "imutest"; + ips = loadable "ips"; } diff --git a/nix/firmware.nix b/nix/firmware.nix index 2e0f2cff..9217f297 100644 --- a/nix/firmware.nix +++ b/nix/firmware.nix @@ -1,22 +1,43 @@ -{ pkgsCross, python3, callPackage, subdir }: +{ pkgsCross, python3, callPackage }: let crc16 = callPackage ./python-crc16.nix {}; -in -pkgsCross.arm-embedded.stdenv.mkDerivation { - name = "firmware-${subdir}"; - src = ./..; - buildInputs = [ crc16 ]; - hardeningDisable= [ "all" ]; - buildPhase = '' - cd ${subdir} - make clean - make -j ''$NIX_BUILD_CORES APP=1 - make -j ''$NIX_BUILD_CORES build/max32665.bin - ${python3}/bin/python ../bootloader/crc_patch.py build/max32665.bin - ''; - installPhase = '' - mkdir -p $out/lib - cp build/max32665.bin $out/lib/card10.bin - ''; +in rec { + firmware = subdir: + pkgsCross.arm-embedded.stdenv.mkDerivation { + name = "${subdir}"; + src = ./..; + buildInputs = [ ]; + hardeningDisable= [ "all" ]; + buildPhase = '' + cd ${subdir} + make clean + make -j ''$NIX_BUILD_CORES + make -j ''$NIX_BUILD_CORES build/max32665.elf + ''; + installPhase = '' + mkdir -p $out/lib + cp build/max32665.elf $out/lib/card10.elf + ''; + }; + + loadable = subdir: + pkgsCross.arm-embedded.stdenv.mkDerivation { + name = "loadable-${subdir}"; + src = ./..; + buildInputs = [ crc16 ]; + hardeningDisable= [ "all" ]; + buildPhase = '' + cd ${subdir} + make clean + make -j ''$NIX_BUILD_CORES APP=1 + make -j ''$NIX_BUILD_CORES build/max32665.bin + ${python3}/bin/python ../bootloader/crc_patch.py build/max32665.bin + ''; + installPhase = '' + mkdir -p $out/lib + cp build/max32665.elf $out/lib/card10.elf + cp build/max32665.bin $out/lib/card10.bin + ''; + }; } -- GitLab