From bf007528f0126c5a81c1678c57ee71c5c1f018d2 Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Fri, 21 Jun 2019 01:51:15 +0200
Subject: [PATCH] feat(pycardium): Build bootloader compatible multi image

---
 bootloader/build_multi_image.sh | 14 ++++++++++++++
 bootloader/meson.build          |  3 +++
 epicardium/meson.build          |  2 +-
 pycardium/meson.build           | 10 +++++++++-
 4 files changed, 27 insertions(+), 2 deletions(-)
 create mode 100755 bootloader/build_multi_image.sh

diff --git a/bootloader/build_multi_image.sh b/bootloader/build_multi_image.sh
new file mode 100755
index 00000000..db1943a9
--- /dev/null
+++ b/bootloader/build_multi_image.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+set -e
+
+echo "build multi image" $1 $2 $3 $4
+PYTHON="$1"
+BIN1="$2"
+BIN2="$3"
+BINOUT="$4"
+
+dd if=/dev/zero ibs=1k count=448 | tr "\000" "\377" > "$BINOUT"
+dd if="$BIN1" of="$BINOUT" conv=notrunc
+dd if="$BIN2" of="$BINOUT" conv=notrunc oflag=append
+
+"$PYTHON" "$(dirname "$0")/crc_patch.py" "$BINOUT"
diff --git a/bootloader/meson.build b/bootloader/meson.build
index d97a2217..e2c831ef 100644
--- a/bootloader/meson.build
+++ b/bootloader/meson.build
@@ -20,3 +20,6 @@ executable(
 
 # build_image.sh
 build_image = [files('./build_image.sh'), python3]
+
+# build_multi_image.sh
+build_multi_image = [files('./build_multi_image.sh'), python3]
diff --git a/epicardium/meson.build b/epicardium/meson.build
index 767c9c4f..c999871c 100644
--- a/epicardium/meson.build
+++ b/epicardium/meson.build
@@ -56,7 +56,7 @@ elf = executable(
   ],
 )
 
-custom_target(
+epicardium_bin = custom_target(
   name + '.bin',
   build_by_default: true,
   output: name + '.bin',
diff --git a/pycardium/meson.build b/pycardium/meson.build
index 49d083c3..956f5bd5 100644
--- a/pycardium/meson.build
+++ b/pycardium/meson.build
@@ -63,10 +63,18 @@ elf = executable(
   ],
 )
 
-custom_target(
+bin = custom_target(
   name + '.bin',
   build_by_default: true,
   output: name + '.bin',
   input: elf,
   command: [build_image, '@INPUT@', '@OUTPUT0@'],
 )
+
+custom_target(
+  name + '_epicardium.bin',
+  build_by_default: true,
+  output: name + '_epicardium.bin',
+  input: [epicardium_bin, bin],
+  command: [build_multi_image, '@INPUT@', '@OUTPUT0@'],
+)
-- 
GitLab