@@ -27,6 +27,15 @@ BOSSAC := tools/bossac_osx
27
27
28
28
HAL_DIR =hal/$(MCU_SERIES )
29
29
30
+ # Frozen bytecode configuration. Any .py files placed in the modules subdirectory
31
+ # will be frozen into .mpy files and embedded in the firmware (like the ESP8266
32
+ # port).
33
+ MPY_CROSS = ../mpy-cross/mpy-cross
34
+ MPY_TOOL = ../tools/mpy-tool.py
35
+ FROZEN_MPY_DIR = modules
36
+ FROZEN_MPY_PY_FILES := $(shell find -L $(FROZEN_MPY_DIR ) -type f -name '* .py')
37
+ FROZEN_MPY_MPY_FILES := $(addprefix $(BUILD ) /,$(FROZEN_MPY_PY_FILES:.py=.mpy ) )
38
+
30
39
INC += -I.
31
40
INC += -I..
32
41
INC += -I../lib/mp-readline
@@ -187,7 +196,7 @@ SRC_BINDINGS_EXPANDED = $(addprefix shared-bindings/, $(SRC_BINDINGS)) \
187
196
$(addprefix common-hal/, $(SRC_BINDINGS ) )
188
197
189
198
SRC_AUTOGEN = \
190
- $(BUILD ) /_frozen_mpy .c \
199
+ $(BUILD ) /frozen_mpy .c \
191
200
192
201
OBJ = $(PY_O ) $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
193
202
OBJ += $(addprefix $(BUILD ) /, $(SRC_ASF:.c=.o ) )
@@ -199,9 +208,16 @@ SRC_QSTR += $(SRC_C) $(SRC_BINDINGS_EXPANDED) $(STM_SRC_C)
199
208
200
209
all : $(BUILD ) /firmware.bin
201
210
202
- $(BUILD ) /_frozen_mpy.c : frozentest.mpy $(BUILD ) /genhdr/qstrdefs.generated.h
203
- $(ECHO ) " MISC freezing bytecode"
204
- $(Q ) ../tools/mpy-tool.py -f -q $(BUILD ) /genhdr/qstrdefs.preprocessed.h -mlongint-impl=none $< > $@
211
+ # to build .mpy files from .py files
212
+ $(BUILD ) /$(FROZEN_MPY_DIR ) /% .mpy : $(FROZEN_MPY_DIR ) /% .py
213
+ @$(ECHO ) " MPY $<"
214
+ $(Q )$(MKDIR ) -p $(dir $@ )
215
+ $(Q )$(MPY_CROSS ) -o $@ -s $(^:$(FROZEN_MPY_DIR ) /%=% ) $^
216
+
217
+ # to build frozen_mpy.c from all .mpy files
218
+ $(BUILD ) /frozen_mpy.c : $(FROZEN_MPY_MPY_FILES ) $(BUILD ) /genhdr/qstrdefs.generated.h
219
+ @$(ECHO ) " Creating $@ "
220
+ $(Q )$(PYTHON ) $(MPY_TOOL ) -f -q $(BUILD ) /genhdr/qstrdefs.preprocessed.h -mlongint-impl=none $(FROZEN_MPY_MPY_FILES ) > $@
205
221
206
222
$(BUILD ) /firmware.elf : $(OBJ )
207
223
$(ECHO ) " LINK $@ "
0 commit comments