@@ -69,6 +69,10 @@ $(foreach mod,$(MODULES),\
6969 $(wildcard $($(mod)_SRC)/*.py) \
7070 $($(mod)_SRC)/Makefile))
7171
72+ # CNN modules share the same build directory, so they must build sequentially
73+ # Ensure int8 builds after fp32 to avoid race conditions
74+ $(MODULES_PATH ) /emlearn_cnn_int8.mpy : $(MODULES_PATH ) /emlearn_cnn_fp32.mpy
75+
7276# Generate list of .mpy files
7377MODULE_MPYS = $(addprefix $(MODULES_PATH ) /,$(addsuffix .mpy,$(MODULES ) ) )
7478
@@ -78,6 +82,24 @@ $(MODULES_PATH)/%.mpy:
7882 ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=$(CFLAGS_EXTRA ) \
7983 V=1 $($(* ) _CONFIG) dist
8084
85+ # CNN modules need clean build due to shared build directory
86+ # They must also build sequentially (fp32 first, then int8)
87+ $(MODULES_PATH ) /emlearn_cnn_fp32.mpy :
88+ $(MAKE ) -C src/tinymaix_cnn \
89+ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=$(CFLAGS_EXTRA ) \
90+ V=1 CONFIG=fp32 clean
91+ $(MAKE ) -C src/tinymaix_cnn \
92+ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=$(CFLAGS_EXTRA ) \
93+ V=1 CONFIG=fp32 dist
94+
95+ $(MODULES_PATH ) /emlearn_cnn_int8.mpy : $(MODULES_PATH ) /emlearn_cnn_fp32.mpy
96+ $(MAKE ) -C src/tinymaix_cnn \
97+ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=$(CFLAGS_EXTRA ) \
98+ V=1 CONFIG=int8 clean
99+ $(MAKE ) -C src/tinymaix_cnn \
100+ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=$(CFLAGS_EXTRA ) \
101+ V=1 CONFIG=int8 dist
102+
81103# Collect test files for dependency tracking
82104TEST_PY := $(wildcard tests/test_* .py)
83105
0 commit comments