diff --git a/py/mkrules.mk b/py/mkrules.mk
index 9a739b8b7bea74af5a826e31f83fc49c6e4c9b6e..068d370552487ec68c46a20472820941994f1eab 100644
--- a/py/mkrules.mk
+++ b/py/mkrules.mk
@@ -83,7 +83,12 @@ $(OBJ): | $(HEADER_BUILD)/qstrdefs.generated.h $(HEADER_BUILD)/mpversion.h
 
 $(HEADER_BUILD)/qstr.i.last: $(SRC_QSTR) | $(HEADER_BUILD)/mpversion.h
 	$(ECHO) "GEN $@"
-	$(Q)$(CPP) $(QSTR_GEN_EXTRA_CFLAGS) $(CFLAGS) $? >$(HEADER_BUILD)/qstr.i.last
+	if [ "$?" == "" ]; then \
+	    echo "QSTR Looks like -B used, trying to emulate"; \
+	    $(Q)$(CPP) $(QSTR_GEN_EXTRA_CFLAGS) $(CFLAGS) $^ >$(HEADER_BUILD)/qstr.i.last; \
+	else \
+	    $(Q)$(CPP) $(QSTR_GEN_EXTRA_CFLAGS) $(CFLAGS) $? >$(HEADER_BUILD)/qstr.i.last; \
+	fi
 
 $(QSTR_DEFS_COLLECTED): $(HEADER_BUILD)/qstr.i.last
 	$(ECHO) "GEN $@"