From b57d3b923cdbe9a01f5f01147fa5d08aa2fee3c0 Mon Sep 17 00:00:00 2001
From: Rahix <rahix@rahix.de>
Date: Sat, 15 Jun 2019 18:03:57 +0200
Subject: [PATCH] refactor(upy): Enhance build system wrapper

QSTR generation is a pain ...

Signed-off-by: Rahix <rahix@rahix.de>
---
 bootstrap.sh                            |  4 ++--
 hw-tests/upy-minimal/meson.build        |  3 ++-
 hw-tests/upy-minimal/modules/qstr.h     | 12 ------------
 hw-tests/upy-minimal/modules/qstrdefs.h | 19 +++++++++++++++++++
 lib/micropython/gen-qstr.sh             |  4 ++--
 5 files changed, 25 insertions(+), 17 deletions(-)
 delete mode 100644 hw-tests/upy-minimal/modules/qstr.h
 create mode 100644 hw-tests/upy-minimal/modules/qstrdefs.h

diff --git a/bootstrap.sh b/bootstrap.sh
index 34e4b03c0..1363d4ebe 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -1,10 +1,10 @@
 #!/bin/sh
 set -xe
 
-cd "$(dirname "$0")" || exit 1
+cd "$(dirname "$0")"
 test -d build/ && rm -r build/
 
-git submodule update --init --recursive
+git submodule update --init ./lib/micropython
 meson --cross-file card10-cross.ini build/
 
 set +x
diff --git a/hw-tests/upy-minimal/meson.build b/hw-tests/upy-minimal/meson.build
index 2ce4179f4..d674b5df4 100644
--- a/hw-tests/upy-minimal/meson.build
+++ b/hw-tests/upy-minimal/meson.build
@@ -31,7 +31,8 @@ modules_h = custom_target(
 qstr_h = custom_target(
   'qstrdefs.generated.h',
   output: 'qstrdefs.generated.h',
-  input: [modules_h, version_h, micropython_sources, 'modules/qstr.h'],
+  input: ['modules/qstrdefs.h', micropython_sources],
+  depends: [modules_h, version_h],
   command: [micropython_gen_qstr, meson.current_source_dir(), '@OUTPUT@', '@INPUT@'],
 )
 
diff --git a/hw-tests/upy-minimal/modules/qstr.h b/hw-tests/upy-minimal/modules/qstr.h
deleted file mode 100644
index 0fc7efa17..000000000
--- a/hw-tests/upy-minimal/modules/qstr.h
+++ /dev/null
@@ -1,12 +0,0 @@
-MP_QSTR_leds
-MP_QSTR_set_dim
-MP_QSTR_utime
-MP_QSTR_sleep
-MP_QSTR_sleep_ms
-MP_QSTR_sleep_us
-MP_QSTR_ticks_ms
-MP_QSTR_ticks_us
-MP_QSTR_ticks_cpu
-MP_QSTR_ticks_add
-MP_QSTR_ticks_diff
-MP_QSTR_buzzer
diff --git a/hw-tests/upy-minimal/modules/qstrdefs.h b/hw-tests/upy-minimal/modules/qstrdefs.h
new file mode 100644
index 000000000..b6c21cc08
--- /dev/null
+++ b/hw-tests/upy-minimal/modules/qstrdefs.h
@@ -0,0 +1,19 @@
+#include "py/mpconfig.h"
+
+/* buzzer */
+Q(buzzer)
+
+/* leds */
+Q(leds)
+Q(set_dim)
+
+/* utime */
+Q(utime)
+Q(sleep)
+Q(sleep_ms)
+Q(sleep_us)
+Q(ticks_ms)
+Q(ticks_us)
+Q(ticks_cpu)
+Q(ticks_add)
+Q(ticks_diff)
diff --git a/lib/micropython/gen-qstr.sh b/lib/micropython/gen-qstr.sh
index 1ae13ff95..34b3b312a 100755
--- a/lib/micropython/gen-qstr.sh
+++ b/lib/micropython/gen-qstr.sh
@@ -5,7 +5,7 @@ PYTHON="$1"
 SOURCE_DIR="$2"
 PROJECT_SRC="$3"
 OUTPUT="$4"
-# IGNORE="$5"
+CUSTOM_QSTR="$5"
 
 shift 5
 
@@ -27,7 +27,7 @@ gcc -E -DNO_QSTR -I"$SOURCE_DIR/micropython" -I"$PROJECT_SRC" -I"$OUTPUT_DIR" "$
 
 # Preprocess Header ... I did not come up with this, this is code copied from
 #    the official make file.  Seriously.
-cat "$SOURCE_DIR/micropython/py/qstrdefs.h" "$OUTPUT_DIR/qstrdefs.collected.h" \
+cat "$SOURCE_DIR/micropython/py/qstrdefs.h" "$CUSTOM_QSTR" "$OUTPUT_DIR/qstrdefs.collected.h" \
     | sed 's/^Q(.*)/"&"/' \
     | gcc -E -I"$SOURCE_DIR/micropython" -I"$PROJECT_SRC" -I"$OUTPUT_DIR" - \
     | sed 's/^\"\(Q(.*)\)\"/\1/' \
-- 
GitLab