@@ -105,6 +105,24 @@ $(BUILD)/$(BTREE_DIR)/%.o: CFLAGS += -Wno-old-style-definition -Wno-sign-compare
105
105
$(BUILD ) /extmod/modbtree.o : CFLAGS += $(BTREE_DEFS )
106
106
endif
107
107
108
+ # External modules written in C.
109
+ ifneq ($(USER_C_MODULES ) ,)
110
+ # pre-define USERMOD variables as expanded so that variables are immediate
111
+ # expanded as they're added to them
112
+ SRC_USERMOD :=
113
+ CFLAGS_USERMOD :=
114
+ LDFLAGS_USERMOD :=
115
+ $(foreach module, $(wildcard $(USER_C_MODULES)/*/micropython.mk), \
116
+ $(eval USERMOD_DIR = $(patsubst %/,%,$(dir $(module))))\
117
+ $(info Including User C Module from $(USERMOD_DIR))\
118
+ $(eval include $(module))\
119
+ )
120
+
121
+ SRC_MOD += $(patsubst $(USER_C_MODULES ) /% .c,% .c,$(SRC_USERMOD ) )
122
+ CFLAGS_MOD += $(CFLAGS_USERMOD )
123
+ LDFLAGS_MOD += $(LDFLAGS_USERMOD )
124
+ endif
125
+
108
126
# py object files
109
127
PY_CORE_O_BASENAME = $(addprefix py/,\
110
128
mpstate.o \
@@ -287,6 +305,13 @@ $(HEADER_BUILD)/mpversion.h: FORCE | $(HEADER_BUILD)
287
305
$(STEPECHO ) " GEN $@ "
288
306
$(Q )$(PYTHON ) $(PY_SRC ) /makeversionhdr.py $@
289
307
308
+ # build a list of registered modules for py/objmodule.c.
309
+ $(HEADER_BUILD ) /moduledefs.h : $(SRC_QSTR ) $(QSTR_GLOBAL_DEPENDENCIES ) | $(HEADER_BUILD ) /mpversion.h
310
+ @$(ECHO ) " GEN $@ "
311
+ $(Q )$(PYTHON ) $(PY_SRC ) /makemoduledefs.py --vpath=" ., $( TOP) , $( USER_C_MODULES) " $(SRC_QSTR ) > $@
312
+
313
+ SRC_QSTR += $(HEADER_BUILD ) /moduledefs.h
314
+
290
315
# mpconfigport.mk is optional, but changes to it may drastically change
291
316
# overall config, so they need to be caught
292
317
MPCONFIGPORT_MK = $(wildcard mpconfigport.mk)
0 commit comments