aboutsummaryrefslogtreecommitdiff
path: root/py/py.mk
diff options
context:
space:
mode:
authorAyke van Laethem2018-06-14 15:57:29 +0200
committerDamien George2019-03-08 22:49:00 +1100
commit2e516074daee76fb3e0710a893a0f40532bb3252 (patch)
treed871d641c10aff22e3d80ad4711310c4b7be4b31 /py/py.mk
parentcf22f4793cb04e8e63a0d11f479a69c9be6c93ba (diff)
py: Implement a module system for external, user C modules.
This system makes it a lot easier to include external libraries as static, native modules in MicroPython. Simply pass USER_C_MODULES (like FROZEN_MPY_DIR) as a make parameter.
Diffstat (limited to 'py/py.mk')
-rw-r--r--py/py.mk9
1 files changed, 8 insertions, 1 deletions
diff --git a/py/py.mk b/py/py.mk
index 85e9072d7..ad7d12204 100644
--- a/py/py.mk
+++ b/py/py.mk
@@ -129,6 +129,13 @@ $(BUILD)/$(BTREE_DIR)/%.o: CFLAGS += -Wno-old-style-definition -Wno-sign-compare
$(BUILD)/extmod/modbtree.o: CFLAGS += $(BTREE_DEFS)
endif
+# External modules written in C.
+ifneq ($(USER_C_MODULES),)
+CFLAGS_MOD += -DMICROPY_CMODULES_INCLUDE_H='"genhdr/cmodules.h"'
+include $(USER_C_MODULES)/*/micropython.mk
+SRC_QSTR += $(BUILD)/genhdr/cmodules.h
+endif
+
# py object files
PY_CORE_O_BASENAME = $(addprefix py/,\
mpstate.o \
@@ -300,7 +307,7 @@ endif
# Sources that may contain qstrings
SRC_QSTR_IGNORE = py/nlr%
-SRC_QSTR = $(SRC_MOD) $(filter-out $(SRC_QSTR_IGNORE),$(PY_CORE_O_BASENAME:.o=.c)) $(PY_EXTMOD_O_BASENAME:.o=.c)
+SRC_QSTR += $(SRC_MOD) $(filter-out $(SRC_QSTR_IGNORE),$(PY_CORE_O_BASENAME:.o=.c)) $(PY_EXTMOD_O_BASENAME:.o=.c)
# Anything that depends on FORCE will be considered out-of-date
FORCE: