diff options
| author | Andrew Leech | 2018-12-12 16:50:55 +1100 |
|---|---|---|
| committer | Damien George | 2019-03-08 22:58:42 +1100 |
| commit | 89ff506513d52c0c415b2cf45335d60cefac527d (patch) | |
| tree | 6929b54bd0f73994ccfdb09523186b7e6b40cda6 /py/py.mk | |
| parent | 2e516074daee76fb3e0710a893a0f40532bb3252 (diff) | |
py: Update and rework build system for including external C modules.
How to use this feature is documented in docs/develop/cmodules.rst.
Diffstat (limited to 'py/py.mk')
| -rw-r--r-- | py/py.mk | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -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 |
