runtime(vim): include Vim Syntax generator

fixes: #13939
closes: #14021
related: vim-jp/syntax-vim-ex#28

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/syntax/generator/Makefile b/runtime/syntax/generator/Makefile
new file mode 100644
index 0000000..33dcfbc
--- /dev/null
+++ b/runtime/syntax/generator/Makefile
@@ -0,0 +1,44 @@
+VIM_SRCDIR = ../../../src
+RUN_VIM = $(VIM_SRCDIR)/vim -N -u NONE -i NONE -n
+REVISION ?= $(shell date +%Y-%m-%dT%H:%M:%S%:z)
+
+SRC =	$(VIM_SRCDIR)/eval.c $(VIM_SRCDIR)/ex_cmds.h $(VIM_SRCDIR)/ex_docmd.c \
+		$(VIM_SRCDIR)/fileio.c $(VIM_SRCDIR)/option.c $(VIM_SRCDIR)/syntax.c
+
+export VIM_SRCDIR
+
+.PHONY: generate clean
+all: generate
+
+generate: vim.vim
+
+vim.vim: vim.vim.rc update_date.vim
+	@echo "Generating vim.vim ..."
+	@cp -f vim.vim.rc ../vim.vim
+	@$(RUN_VIM) -S update_date.vim
+	@sed -i -e 's/__REVISION__/$(REVISION)/' ../vim.vim
+	@echo "done."
+
+vim.vim.rc: gen_syntax_vim.vim vim.vim.base $(SRC)
+	@echo "Generating vim.vim.rc ..."
+	@rm -f sanity_check.err generator.err
+	@$(RUN_VIM) -S gen_syntax_vim.vim
+	@if test -f sanity_check.err ; then \
+		echo ; \
+		echo "Sanity errors:" ; \
+		cat sanity_check.err ; \
+		exit 1 ; \
+	fi
+	@if test -f generator.err ; then \
+		echo ; \
+		echo "Generator errors:" ; \
+		cat generator.err ; \
+		echo ; \
+		exit 1 ; \
+	fi
+	@echo "done."
+
+clean:
+	rm -f vim.vim.rc
+	rm -f vim.vim
+	rm -f sanity_check.err generator.err