diff --git a/py/mkrules.mk b/py/mkrules.mk index 6127ece8fe..902b20fd52 100644 --- a/py/mkrules.mk +++ b/py/mkrules.mk @@ -53,13 +53,20 @@ $(BUILD)/%.pp: %.c # prerequisites only get built if they don't exist. They don't cause timestamp # checking to be performed. # +# We don't know which source files actually need the generated.h (since +# it is #included from str.h). The compiler generated dependencies will cause +# the right .o's to get recompiled if the generated.h file changes. Adding +# an order-only dependendency to all of the .o's will cause the generated .h +# to get built before we try to compile any of them. +$(OBJ): | $(HEADER_BUILD)/qstrdefs.generated.h $(HEADER_BUILD)/py-version.h + # $(sort $(var)) removes duplicates # # The net effect of this, is it causes the objects to depend on the # object directories (but only for existence), and the object directories # will be created if they don't exist. OBJ_DIRS = $(sort $(dir $(OBJ))) -$(OBJ): $(HEADER_BUILD)/qstrdefs.generated.h | $(OBJ_DIRS) +$(OBJ): | $(OBJ_DIRS) $(OBJ_DIRS): $(MKDIR) -p $@ diff --git a/py/py.mk b/py/py.mk index 097516952c..fe6220bac6 100644 --- a/py/py.mk +++ b/py/py.mk @@ -137,13 +137,6 @@ $(HEADER_BUILD)/qstrdefs.generated.h: $(PY_QSTR_DEFS) $(QSTR_DEFS) $(PY_SRC)/mak $(ECHO) "makeqstrdata $(PY_QSTR_DEFS) $(QSTR_DEFS)" $(Q)$(PYTHON) $(PY_SRC)/makeqstrdata.py $(HEADER_BUILD)/qstrdefs.preprocessed.h $(QSTR_DEFS) > $@ -# We don't know which source files actually need the generated.h (since -# it is #included from str.h). The compiler generated dependencies will cause -# the right .o's to get recompiled if the generated.h file changes. Adding -# an order-only dependendency to all of the .o's will cause the generated .h -# to get built before we try to compile any of them. -$(PY_O): | $(HEADER_BUILD)/qstrdefs.generated.h $(HEADER_BUILD)/py-version.h - # emitters $(PY_BUILD)/emitnx64.o: CFLAGS += -DN_X64