aboutsummaryrefslogtreecommitdiff
path: root/ports/nrf/modules
diff options
context:
space:
mode:
authorGlenn Ruben Bakke2018-06-17 23:52:31 +0200
committerDamien George2018-07-18 17:12:26 +1000
commitcf58ef27af61a18e47568b9925c19d1647f7abc9 (patch)
tree03c62751ebb62f01616369e89d8638754768f42d /ports/nrf/modules
parent0e5f8425ea567b79d1fbaaa11192df92effa2659 (diff)
nrf: Quick-fix on const objects with open array dimension in objtuples.
Temporarly solving the issue of "differ from the size of original declaration [-Werror=lto-type-mismatch] until linker is fixed in upcomming release of gcc. Bug is reported by others, and will be fixed in next version of arm-gcc. However, this patch makes it possible to use modmusic and modimage with current compilers. Alternativly, the code can be compiled with LTO=0, but uses valuable 9K more on this already squeezed target (microbit).
Diffstat (limited to 'ports/nrf/modules')
-rw-r--r--ports/nrf/modules/music/musictunes.c9
-rw-r--r--ports/nrf/modules/music/musictunes.h64
2 files changed, 51 insertions, 22 deletions
diff --git a/ports/nrf/modules/music/musictunes.c b/ports/nrf/modules/music/musictunes.c
index f5e7f4a51..77800a4d3 100644
--- a/ports/nrf/modules/music/musictunes.c
+++ b/ports/nrf/modules/music/musictunes.c
@@ -35,7 +35,14 @@
#if MICROPY_PY_MUSIC
#define N(q) MP_ROM_QSTR(MP_QSTR_ ## q)
-#define T(name, ...) const mp_obj_tuple_t microbit_music_tune_ ## name ## _obj = {{&mp_type_tuple}, .len = (sizeof((mp_obj_t[]){__VA_ARGS__})/sizeof(mp_obj_t)), .items = {__VA_ARGS__}};
+#define T(name, ...) \
+typedef struct music_tune_ ## name ## _s {\
+ mp_obj_base_t base; \
+ size_t len; \
+ mp_rom_obj_t items[sizeof((mp_obj_t[]){__VA_ARGS__})/sizeof(mp_obj_t)]; \
+} music_tune_ ## name ## _t; \
+\
+const music_tune_ ## name ## _t microbit_music_tune_ ## name ## _obj = {{&mp_type_tuple}, .len = (sizeof((mp_obj_t[]){__VA_ARGS__})/sizeof(mp_obj_t)), .items = {__VA_ARGS__}};
T(dadadadum,
diff --git a/ports/nrf/modules/music/musictunes.h b/ports/nrf/modules/music/musictunes.h
index 82dda5cc7..f0444bf19 100644
--- a/ports/nrf/modules/music/musictunes.h
+++ b/ports/nrf/modules/music/musictunes.h
@@ -27,26 +27,48 @@
#ifndef MUSIC_TUNES_H__
#define MUSIC_TUNES_H__
-extern const struct _mp_obj_tuple_t microbit_music_tune_dadadadum_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_entertainer_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_prelude_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_ode_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_nyan_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_ringtone_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_funk_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_blues_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_birthday_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_wedding_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_funeral_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_punchline_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_python_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_baddy_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_chase_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_ba_ding_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_wawawawaa_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_jump_up_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_jump_down_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_power_up_obj;
-extern const struct _mp_obj_tuple_t microbit_music_tune_power_down_obj;
+struct music_tune_dadadum_s;
+struct music_tune_entertainer_s;
+struct music_tune_prelude_s;
+struct music_tune_ode_s;
+struct music_tune_nyan_s;
+struct music_tune_ringtone_s;
+struct music_tune_funk_s;
+struct music_tune_blues_s;
+struct music_tune_birthday_s;
+struct music_tune_wedding_s;
+struct music_tune_funeral_s;
+struct music_tune_punchline_s;
+struct music_tune_python_s;
+struct music_tune_baddy_s;
+struct music_tune_chase_s;
+struct music_tune_ba_ding_s;
+struct music_tune_wawawawaa_s;
+struct music_tune_jump_up_s;
+struct music_tune_jump_down_s;
+struct music_tune_power_up_s;
+struct music_tune_power_down_s;
+
+extern const struct music_tune_dadadadum_s microbit_music_tune_dadadadum_obj;
+extern const struct music_tune_entertainer_s microbit_music_tune_entertainer_obj;
+extern const struct music_tune_prelude_s microbit_music_tune_prelude_obj;
+extern const struct music_tune_ode_s microbit_music_tune_ode_obj;
+extern const struct music_tune_nyan_s microbit_music_tune_nyan_obj;
+extern const struct music_tune_ringtone_s microbit_music_tune_ringtone_obj;
+extern const struct music_tune_funk_s microbit_music_tune_funk_obj;
+extern const struct music_tune_blues_s microbit_music_tune_blues_obj;
+extern const struct music_tune_birthday_s microbit_music_tune_birthday_obj;
+extern const struct music_tune_wedding_s microbit_music_tune_wedding_obj;
+extern const struct music_tune_funeral_s microbit_music_tune_funeral_obj;
+extern const struct music_tune_punchline_s microbit_music_tune_punchline_obj;
+extern const struct music_tune_python_s microbit_music_tune_python_obj;
+extern const struct music_tune_baddy_s microbit_music_tune_baddy_obj;
+extern const struct music_tune_chase_s microbit_music_tune_chase_obj;
+extern const struct music_tune_ba_ding_s microbit_music_tune_ba_ding_obj;
+extern const struct music_tune_wawawawaa_s microbit_music_tune_wawawawaa_obj;
+extern const struct music_tune_jump_up_s microbit_music_tune_jump_up_obj;
+extern const struct music_tune_jump_down_s microbit_music_tune_jump_down_obj;
+extern const struct music_tune_power_up_s microbit_music_tune_power_up_obj;
+extern const struct music_tune_power_down_s microbit_music_tune_power_down_obj;
#endif // MUSIC_TUNES_H__