diff --git a/ports/stm32/Makefile b/ports/stm32/Makefile index 50ac48e5a1..6cef11b5b0 100644 --- a/ports/stm32/Makefile +++ b/ports/stm32/Makefile @@ -600,6 +600,9 @@ SRC_QSTR += $(SRC_C) $(SRC_CXX) $(SHARED_SRC_C) $(GEN_PINS_SRC) # which source files might need it. $(OBJ): | $(GEN_PINS_HDR) +# Automatically rebuild if specific settings are changed on command line +$(OBJ): $(call depend_var, USE_MBOOT) + # With conditional pins, we may need to regenerate qstrdefs.h when config # options change. $(HEADER_BUILD)/qstrdefs.generated.h: $(BOARD_DIR)/mpconfigboard.h diff --git a/py/mkenv.mk b/py/mkenv.mk index b52dafbc9d..443f2c5721 100644 --- a/py/mkenv.mk +++ b/py/mkenv.mk @@ -29,6 +29,11 @@ else Q = endif +# depend_var is a function that can be used to add a virtual dependency +# to a target based on the given make variable. +# eg. $(OBJ): $(call depend_var, MY_VAR) +depend_var = $(BUILD)/dependvar/$(strip $(1))+$(shell echo $($(strip $(1))) | md5sum | cut -d ' ' -f 1) + # default settings; can be overridden in main Makefile PY_SRC ?= $(TOP)/py diff --git a/py/mkrules.mk b/py/mkrules.mk index 5050935873..f23285ee42 100644 --- a/py/mkrules.mk +++ b/py/mkrules.mk @@ -35,6 +35,14 @@ QSTR_GEN_CFLAGS += $(QSTR_GEN_FLAGS) QSTR_GEN_CXXFLAGS := $(CXXFLAGS) QSTR_GEN_CXXFLAGS += $(QSTR_GEN_FLAGS) +# depend_var is a function that can be used to add a virtual dependency +# to a target based on the given make variable. +# eg. $(OBJ): $(call depend_var, MY_VAR) +$(BUILD)/dependvar/%: + @mkdir -p $(BUILD)/dependvar + @rm -f $(BUILD)/dependvar/$(firstword $(subst +, ,$*))+* + $(Q)echo $($(firstword $(subst +, ,$*))) > $@ + # This file expects that OBJ contains a list of all of the object files. # The directory portion of each object file is used to locate the source # and should not contain any ..'s but rather be relative to the top of the