From 89ff506513d52c0c415b2cf45335d60cefac527d Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Wed, 12 Dec 2018 16:50:55 +1100 Subject: py: Update and rework build system for including external C modules. How to use this feature is documented in docs/develop/cmodules.rst. --- py/py.mk | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'py/py.mk') diff --git a/py/py.mk b/py/py.mk index ad7d12204..0fbc9f14b 100644 --- a/py/py.mk +++ b/py/py.mk @@ -131,9 +131,20 @@ 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 +# pre-define USERMOD variables as expanded so that variables are immediate +# expanded as they're added to them +SRC_USERMOD := +CFLAGS_USERMOD := +LDFLAGS_USERMOD := +$(foreach module, $(wildcard $(USER_C_MODULES)/*/micropython.mk), \ + $(eval USERMOD_DIR = $(patsubst %/,%,$(dir $(module))))\ + $(info Including User C Module from $(USERMOD_DIR))\ + $(eval include $(module))\ +) + +SRC_MOD += $(patsubst $(USER_C_MODULES)/%.c,%.c,$(SRC_USERMOD)) +CFLAGS_MOD += $(CFLAGS_USERMOD) +LDFLAGS_MOD += $(LDFLAGS_USERMOD) endif # py object files @@ -335,6 +346,8 @@ $(HEADER_BUILD)/moduledefs.h: $(SRC_QSTR) $(QSTR_GLOBAL_DEPENDENCIES) | $(HEADER @$(ECHO) "GEN $@" $(Q)$(PYTHON) $(PY_SRC)/makemoduledefs.py --vpath="., $(TOP), $(USER_C_MODULES)" $(SRC_QSTR) > $@ +SRC_QSTR += $(HEADER_BUILD)/moduledefs.h + # Force nlr code to always be compiled with space-saving optimisation so # that the function preludes are of a minimal and predictable form. $(PY_BUILD)/nlr%.o: CFLAGS += -Os -- cgit v1.2.3