8000 nrf: Quick-fix on const objects with open array dimension in objtuples. · andrewleech/micropython@cf58ef2 · GitHub
[go: up one dir, main page]

Skip to content

Commit cf58ef2

Browse files
glennrubdpgeorge
authored andcommitted
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).
1 parent 0e5f842 commit cf58ef2

File tree

4 files changed

+66
-26
lines changed

4 files changed

+66
-26
lines changed

ports/nrf/boards/microbit/modules/microbitconstimage.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,20 @@
2727
#ifndef __MICROPY_INCLUDED_MICROBIT_CONSTIMAGE_H__
2828
#define __MICROPY_INCLUDED_MICROBIT_CONSTIMAGE_H__
2929

30+
typedef struct _image_tuple_12 {
31+
mp_obj_base_t base;
32+
size_t len;
33+
mp_rom_obj_t items[12];
34+
} image_tuple_12_t;
3035

36+
typedef struct _image_tuple_8 {
37+
mp_obj_base_t base;
38+
size_t len;
39+
mp_rom_obj_t items[8];
40+
} image_tuple_8_t;
41+
42+
extern const image_tuple_12_t microbit_const_image_all_clocks_tuple_obj;
43+
extern const image_tuple_8_t microbit_const_image_all_arrows_tuple_obj;
3144
extern const mp_obj_type_t microbit_const_image_type;
3245
extern const struct _monochrome_5by5_t microbit_const_image_heart_obj;
3346
extern const struct _monochrome_5by5_t microbit_const_image_heart_small_obj;
@@ -79,8 +92,6 @@ extern const struct _monochrome_5by5_t microbit_const_image_pitchfork_obj;
7992
extern const struct _monochrome_5by5_t microbit_const_image_xmas_obj;
8093
extern const struct _monochrome_5by5_t microbit_const_image_pacman_obj;
8194
extern const struct _monochrome_5by5_t microbit_const_image_target_obj;
82-
extern const struct _mp_obj_tuple_t microbit_const_image_all_clocks_tuple_obj;
83-
extern const struct _mp_obj_tuple_t microbit_const_image_all_arrows_tuple_obj;
8495
extern const struct _monochrome_5by5_t microbit_const_image_tshirt_obj;
8596
extern const struct _monochrome_5by5_t microbit_const_image_rollerskate_obj;
8697
extern const struct _monochrome_5by5_t microbit_const_image_duck_obj;

ports/nrf/boards/microbit/modules/microbitconstimagetuples.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include "py/runtime.h"
2626
#include "microbitconstimage.h"
2727

28-
const mp_obj_tuple_t microbit_const_image_all_clocks_tuple_obj = {
28+
const image_tuple_12_t microbit_const_image_all_clocks_tuple_obj = {
2929
{&mp_type_tuple},
3030
.len = 12,
3131
.items = {
@@ -44,7 +44,7 @@ const mp_obj_tuple_t microbit_const_image_all_clocks_tuple_obj = {
4444
}
4545
};
4646

47-
const mp_obj_tuple_t microbit_const_image_all_arrows_tuple_obj = {
47+
const image_tuple_8_t microbit_const_image_all_arrows_tuple_obj = {
4848
{&mp_type_tuple},
4949
.len = 8,
5050
.items = {

ports/nrf/modules/music/musictunes.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,14 @@
3535
#if MICROPY_PY_MUSIC
3636

3737
#define N(q) MP_ROM_QSTR(MP_QSTR_ ## q)
38-
#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__}};
38+
#define T(name, ...) \
39+
typedef struct music_tune_ ## name ## _s {\
40+
mp_obj_base_t base; \
41+
size_t len; \
42+
mp_rom_obj_t items[sizeof((mp_obj_t[]){__VA_ARGS__})/sizeof(mp_obj_t)]; \
43+
} music_tune_ ## name ## _t; \
44+
\
45+
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__}};
3946

4047

4148
T(dadadadum,

ports/nrf/modules/musi 8000 c/musictunes.h

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,48 @@
2727
#ifndef MUSIC_TUNES_H__
2828
#define MUSIC_TUNES_H__
2929

30-
extern const struct _mp_obj_tuple_t microbit_music_tune_dadadadum_obj;
31-
extern const struct _mp_obj_tuple_t microbit_music_tune_entertainer_obj;
32-
extern const struct _mp_obj_tuple_t microbit_music_tune_prelude_obj;
33-
extern const struct _mp_obj_tuple_t microbit_music_tune_ode_obj;
34-
extern const struct _mp_obj_tuple_t microbit_music_tune_nyan_obj;
35-
extern const struct _mp_obj_tuple_t microbit_music_tune_ringtone_obj;
36-
extern const struct _mp_obj_tuple_t microbit_music_tune_funk_obj;
37-
extern const struct _mp_obj_tuple_t microbit_music_tune_blues_obj;
38-
extern const struct _mp_obj_tuple_t microbit_music_tune_birthday_obj;
39-
extern const struct _mp_obj_tuple_t microbit_music_tune_wedding_obj;
40-
extern const struct _mp_obj_tuple_t microbit_music_tune_funeral_obj;
41-
extern const struct _mp_obj_tuple_t microbit_music_tune_punchline_obj;
42-
extern const struct _mp_obj_tuple_t microbit_music_tune_python_obj;
43-
extern const struct _mp_obj_tuple_t microbit_music_tune_baddy_obj;
44-
extern const struct _mp_obj_tuple_t microbit_music_tune_chase_obj;
45-
extern const struct _mp_obj_tuple_t microbit_music_tune_ba_ding_obj;
46-
extern const struct _mp_obj_tuple_t microbit_music_tune_wawawawaa_obj;
47-
extern const struct _mp_obj_tuple_t microbit_music_tune_jump_up_obj;
48-
extern const struct _mp_obj_tuple_t microbit_music_tune_jump_down_obj;
49-
extern const struct _mp_obj_tuple_t microbit_music_tune_power_up_obj;
50-
extern const struct _mp_obj_tuple_t microbit_music_tune_power_down_obj;
30+
struct music_tune_dadadum_s;
31+
struct music_tune_entertainer_s;
32+
struct music_tune_prelude_s;
33+
struct music_tune_ode_s;
34+
struct music_tune_nyan_s;
35+
struct music_tune_ringtone_s;
36+
struct music_tune_funk_s;
37+
struct music_tune_blues_s;
38+
struct music_tune_birthday_s;
39+
struct music_tune_wedding_s;
40+
struct music_tune_funeral_s;
41+
struct music_tune_punchline_s;
42+
struct music_tune_python_s;
43+
struct music_tune_baddy_s;
44+
struct music_tune_chase_s;
45+
struct music_tune_ba_ding_s;
46+
struct music_tune_wawawawaa_s;
47+
struct music_tune_jump_up_s;
48+
struct music_tune_jump_down_s;
49+
struct music_tune_power_up_s;
50+
struct music_tune_power_down_s;
51+
52+
extern const struct music_tune_dadadadum_s microbit_music_tune_dadadadum_obj;
53+
extern const struct music_tune_entertainer_s microbit_music_tune_entertainer_obj;
54+
extern const struct music_tune_prelude_s microbit_music_tune_prelude_obj;
55+
extern const struct music_tune_ode_s microbit_music_tune_ode_obj;
56+
extern const struct music_tune_nyan_s microbit_music_tune_nyan_obj;
57+
extern const struct music_tune_ringtone_s microbit_music_tune_ringtone_obj;
58+
extern const struct music_tune_funk_s microbit_music_tune_funk_obj;
59+
extern const struct music_tune_blues_s microbit_music_tune_blues_obj;
60+
extern const struct music_tune_birthday_s microbit_music_tune_birthday_obj;
61+
extern const struct music_tune_wedding_s microbit_music_tune_wedding_obj;
62+
extern const struct music_tune_funeral_s microbit_music_tune_funeral_obj;
63+
extern const struct music_tune_punchline_s microbit_music_tune_punchline_obj;
64+
extern const struct music_tune_python_s microbit_music_tune_python_obj;
65+
extern const struct music_tune_baddy_s microbit_music_tune_baddy_obj;
66+
extern const struct music_tune_chase_s microbit_music_tune_chase_obj;
67+
extern const struct music_tune_ba_ding_s microbit_music_tune_ba_ding_obj;
68+
extern const struct music_tune_wawawawaa_s microbit_music_tune_wawawawaa_obj;
69+
extern const struct music_tune_jump_up_s microbit_music_tune_jump_up_obj;
70+
extern const struct music_tune_jump_down_s microbit_music_tune_jump_down_obj;
71+
extern const struct music_tune_power_up_s microbit_music_tune_power_up_obj;
72+
extern const struct music_tune_power_down_s microbit_music_tune_power_down_obj;
5173

5274
#endif // MUSIC_TUNES_H__

0 commit comments

Comments
 (0)
0