@@ -28,62 +28,40 @@ PORT_DIST_DIR=./dist/ports/$(PORT)/$(BOARD)
2828
2929UNIX_MICROPYTHON = ./dist/ports/unix/micropython
3030
31- $(MODULES_PATH ) /emlearn_trees.mpy :
32- make -C src/emlearn_trees/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
3331
34- $(MODULES_PATH ) /emlearn_neighbors.mpy :
35- make -C src/emlearn_neighbors/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
36-
37- $(MODULES_PATH ) /emlearn_iir.mpy :
38- make -C src/emlearn_iir/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
39-
40- $(MODULES_PATH ) /emlearn_fft.mpy :
41- make -C src/emlearn_fft/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
42-
43- $(MODULES_PATH ) /emlearn_cnn_int8.mpy :
44- make -C src/tinymaix_cnn/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 CONFIG=int8 clean dist
45-
46- $(MODULES_PATH ) /emlearn_cnn_fp32.mpy :
47- make -C src/tinymaix_cnn/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 CONFIG=fp32 clean dist
48-
49- $(MODULES_PATH ) /emlearn_kmeans.mpy :
50- make -C src/emlearn_kmeans/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
51-
52- $(MODULES_PATH ) /emlearn_iir_q15.mpy :
53- make -C src/emlearn_iir_q15/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
54-
55- $(MODULES_PATH ) /emlearn_arrayutils.mpy :
56- make -C src/emlearn_arrayutils/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
57-
58- $(MODULES_PATH ) /emlearn_linreg.mpy :
59- make -C src/emlearn_linreg/ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} V=1 clean dist
60-
61- emlearn_trees.results : $(MODULES_PATH ) /emlearn_trees.mpy
62- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_trees.py
63-
64- emlearn_neighbors.results : $(MODULES_PATH ) /emlearn_neighbors.mpy
65- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_neighbors.py
66-
67- emlearn_iir.results : $(MODULES_PATH ) /emlearn_iir.mpy
68- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_iir.py
69-
70- emlearn_fft.results : $(MODULES_PATH ) /emlearn_fft.mpy
71- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_fft.py
72-
73- emlearn_cnn.results : $(MODULES_PATH ) /emlearn_cnn_int8.mpy $(MODULES_PATH ) /emlearn_cnn_fp32.mpy
74- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_cnn.py
75-
76- emlearn_kmeans.results : $(MODULES_PATH ) /emlearn_kmeans.mpy
77- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_kmeans.py
78-
79- emlearn_iir_q15.results : $(MODULES_PATH ) /emlearn_iir_q15.mpy
80- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_iir_q15.py
81-
82- emlearn_arrayutils.results : $(MODULES_PATH ) /emlearn_arrayutils.mpy
83- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_arrayutils.py
84-
85- emlearn_linreg.results : $(MODULES_PATH ) /emlearn_linreg.mpy
86- MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_linreg.py
32+ # List of modules
33+ MODULES = emlearn_trees \
34+ emlearn_neighbors \
35+ emlearn_iir \
36+ emlearn_fft \
37+ emlearn_kmeans \
38+ emlearn_iir_q15 \
39+ emlearn_arrayutils \
40+ emlearn_linreg \
41+ emlearn_cnn_int8 \
42+ emlearn_cnn_fp32
43+
44+ # Generate list of .mpy files
45+ MODULE_MPYS = $(addprefix $(MODULES_PATH ) /,$(addsuffix .mpy,$(MODULES ) ) )
46+
47+ # Special cases
48+ emlearn_cnn_int8_SRC = src/tinymaix_cnn
49+ emlearn_cnn_int8_CONFIG = CONFIG=int8
50+ emlearn_cnn_fp32_SRC = src/tinymaix_cnn
51+ emlearn_cnn_fp32_CONFIG = CONFIG=fp32
52+
53+ # Generate list of .mpy files
54+ MODULE_MPYS = $(addprefix $(MODULES_PATH ) /,$(addsuffix .mpy,$(MODULES ) ) )
55+
56+ # Build dynamic native module
57+ # defaults to
58+ $(MODULES_PATH ) /% .mpy :
59+ make -C $(or $($(* ) _SRC) ,src/$* ) \
60+ ARCH=$(ARCH ) MPY_DIR=$(MPY_DIR_ABS ) CFLAGS_EXTRA=${CFLAGS_EXTRA} \
61+ V=1 $($(* ) _CONFIG) clean dist
62+
63+ check_unix_natmod : $(MODULE_MPYS )
64+ MICROPYPATH=$(MODULES_PATH ) $(MICROPYTHON_BIN ) tests/test_all.py
8765
8866$(PORT_DIR ) :
8967 mkdir -p $@
@@ -95,11 +73,8 @@ $(UNIX_MICROPYTHON): $(PORT_DIR)
9573unix : $(UNIX_MICROPYTHON )
9674
9775check_unix : $(UNIX_MICROPYTHON )
98- $(UNIX_MICROPYTHON ) tests/test_trees.py
99- $(UNIX_MICROPYTHON ) tests/test_iir.py
100- $(UNIX_MICROPYTHON ) tests/test_fft.py
101- $(UNIX_MICROPYTHON ) tests/test_arrayutils.py
102- echo SKIP $(UNIX_MICROPYTHON ) tests/test_cnn.py
76+ $(UNIX_MICROPYTHON ) tests/test_all.py test_iir,test_fft,test_arrayutils
77+ # TODO: enable more modules
10378
10479rp2 : $(PORT_DIR )
10580 make -C $(MPY_DIR ) /ports/rp2 V=1 USER_C_MODULES=$(C_MODULES_SRC_PATH ) /micropython.cmake FROZEN_MANIFEST=$(MANIFEST_PATH ) CFLAGS_EXTRA=' -Wno-unused-function -Wno-unused-function' -j4
@@ -130,8 +105,8 @@ release:
130105 zip -r $(RELEASE_NAME ) .zip $(RELEASE_NAME )
131106 # cp $(RELEASE_NAME).zip emlearn-micropython-latest.zip
132107
133- check : emlearn_trees.results emlearn_neighbors.results emlearn_iir.results emlearn_iir_q15.results emlearn_fft.results emlearn_kmeans.results emlearn_arrayutils.results emlearn_cnn.results emlearn_linreg.results
108+ check : check_unix_natmod
134109
135- dist : $(MODULES_PATH ) /emlearn_trees.mpy $( MODULES_PATH ) /emlearn_neighbors.mpy $( MODULES_PATH ) /emlearn_iir.mpy $( MODULES_PATH ) /emlearn_iir_q15.mpy $( MODULES_PATH ) /emlearn_fft.mpy $( MODULES_PATH ) /emlearn_kmeans.mpy $( MODULES_PATH ) /emlearn_arrayutils.mpy $( MODULES_PATH ) /emlearn_cnn_int8.mpy $( MODULES_PATH ) /emlearn_cnn_fp32.mpy $( MODULES_PATH ) /emlearn_linreg.mpy
110+ dist : $(MODULE_MPYS )
136111
137112
0 commit comments