@@ -27,6 +27,15 @@ BOSSAC := tools/bossac_osx
2727
2828HAL_DIR =hal/$(MCU_SERIES )
2929
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+
3039INC += -I.
3140INC += -I..
3241INC += -I../lib/mp-readline
@@ -187,7 +196,7 @@ SRC_BINDINGS_EXPANDED = $(addprefix shared-bindings/, $(SRC_BINDINGS)) \
187196$(addprefix common-hal/,$(SRC_BINDINGS ) )
188197
189198SRC_AUTOGEN =\
190- $(BUILD ) /_frozen_mpy .c\
199+ $(BUILD ) /frozen_mpy .c\
191200
192201OBJ =$(PY_O ) $(addprefix $(BUILD ) /,$(SRC_C:.c=.o ) )
193202OBJ +=$(addprefix $(BUILD ) /,$(SRC_ASF:.c=.o ) )
@@ -199,9 +208,16 @@ SRC_QSTR += $(SRC_C) $(SRC_BINDINGS_EXPANDED) $(STM_SRC_C)
199208
200209all :$(BUILD ) /firmware.bin
201210
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 ) > $@
205221
206222$(BUILD ) /firmware.elf :$(OBJ )
207223$(ECHO ) " LINK$@ "