@@ -160,15 +160,46 @@ ld_flags = $(LDFLAGS) $(ldflags-y)
modname-multi = $(sort $(foreach m,$(multi-used),\
$(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=))))
+ifdef REGENERATE_PARSERS
+# GPERF
+# ---------------------------------------------------------------------------
+quiet_cmd_gperf = GPERF $@
+ cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
+$(src)/%.hash.c_shipped: $(src)/%.gperf
+ $(call cmd,gperf)
+
+# LEX
+# ---------------------------------------------------------------------------
+quiet_cmd_flex = LEX $@
+ cmd_flex = flex -o$@ -L $<
+$(src)/%.lex.c_shipped: $(src)/%.l
+ $(call cmd,flex)
+
+# YACC
+# ---------------------------------------------------------------------------
+quiet_cmd_bison = YACC $@
+ cmd_bison = bison -o$@ -t -l $<
+$(src)/%.tab.c_shipped: $(src)/%.y
+ $(call cmd,bison)
+endif
+
# Shipped files
# ===========================================================================
quiet_cmd_shipped = SHIPPED $@
cmd_shipped = cat $< > $@
-$(obj)/%:: $(src)/%_shipped
+$(obj)/%.tab.c: $(src)/%.tab.c_shipped
+ $(call cmd,shipped)
+
+$(obj)/%.lex.c: $(src)/%.lex.c_shipped
$(call cmd,shipped)
+$(obj)/%.hash.c: $(src)/%.hash.c_shipped
+ $(call cmd,shipped)
+
+$(obj)/%:: $(src)/%_shipped
+
# Commands useful for building a boot image
# ===========================================================================
#