From 29dd92c82a6ea07f8d4f71c5c6d18c45ccefde39 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Thu, 30 Mar 2017 00:08:27 +0300 Subject: [PATCH] zephyr/Makefile: Rework to use modern, official build integration. Build happens in 3 stages: 1. Zephyr config header and make vars are generated from prj.conf. 2. libmicropython is built using them. 3. Zephyr is built and final link happens. --- py/mkrules.mk | 7 +++++++ zephyr/Makefile | 11 ++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/py/mkrules.mk b/py/mkrules.mk index bc6389144..2ba57e0ee 100644 --- a/py/mkrules.mk +++ b/py/mkrules.mk @@ -142,8 +142,15 @@ clean-prog: endif LIBMICROPYTHON = libmicropython.a + +# We can execute extra commands after library creation using +# LIBMICROPYTHON_EXTRA_CMD. This may be needed e.g. to integrate +# with 3rd-party projects which don't have proper dependency +# tracking. Then LIBMICROPYTHON_EXTRA_CMD can e.g. touch some +# other file to cause needed effect, e.g. relinking with new lib. lib $(LIBMICROPYTHON): $(OBJ) $(AR) rcs $(LIBMICROPYTHON) $^ + $(LIBMICROPYTHON_EXTRA_CMD) clean: $(RM) -rf $(BUILD) $(CLEAN_EXTRA) diff --git a/zephyr/Makefile b/zephyr/Makefile index 7a0d05298..c6d6eb325 100644 --- a/zephyr/Makefile +++ b/zephyr/Makefile @@ -18,7 +18,6 @@ MICROPY_HEAP_SIZE = 16384 FROZEN_DIR = scripts # Zephyr (generated) config files - must be defined before include below -Z_SYSGEN_H = outdir/$(OUTDIR_PREFIX)/misc/generated/sysgen/sysgen.h Z_EXPORTS = outdir/$(OUTDIR_PREFIX)/Makefile.export include $(Z_EXPORTS) @@ -71,15 +70,13 @@ $(GENERIC_TARGETS): $(LIBMICROPYTHON) $(CLEAN_TARGETS): clean $(GENERIC_TARGETS) $(KCONFIG_TARGETS) $(CLEAN_TARGETS): - $(RM) -f outdir/$(OUTDIR_PREFIX)/zephyr.lnk $(MAKE) -f Makefile.zephyr BOARD=$(BOARD) CONF_FILE=$(CONF_FILE) $@ -$(LIBMICROPYTHON): $(Z_SYSGEN_H) -build/genhdr/qstr.i.last: $(Z_SYSGEN_H) +$(LIBMICROPYTHON): | $(Z_EXPORTS) +build/genhdr/qstr.i.last: | $(Z_EXPORTS) -$(Z_SYSGEN_H): - rm -f $(LIBMICROPYTHON) - -$(MAKE) -f Makefile.zephyr BOARD=$(BOARD) CONF_FILE=$(CONF_FILE) +# If we recreate libmicropython, also cause zephyr.bin relink +LIBMICROPYTHON_EXTRA_CMD = -$(RM) -f outdir/$(OUTDIR_PREFIX)/zephyr.lnk # Clean Zephyr things too clean: z_clean