Hi!

This is a preliminary version of the patch I wrote to improve the build
time. It currently only works with english pages and makes use of wml
2.20.3 which isn;t in debian - see
https://github.com/thewml/website-meta-language. Still, it may prove as a
starting point. Licence is expat. I mentioned it on IRC previously.

-- 
Shlomi Fish http://www.shlomifish.org/

Buddha has the Chuck Norris nature.

Please reply to list if it's a mailing list post - http://shlom.in/reply .
From 615ab4e5b9d70d2bdf2c835a64c501667ab10f8b Mon Sep 17 00:00:00 2001
From: Shlomi Fish <shlo...@shlomifish.org>
Date: Fri, 12 Apr 2019 21:27:00 +0300
Subject: [PATCH] Implement the multi-wml batch processing script.

This is based on
https://github.com/shlomif/shlomi-fish-homepage/blob/master/bin/render-source.pl
and is hereby placed under the expat licence.

This speeds up the build but may fail with make -j.
---
 Makefile.common                               |   4 +-
 english/CD/Makefile                           |   6 +-
 english/CD/artwork/Makefile                   |   2 +-
 english/CD/faq/Makefile                       |   2 +-
 english/CD/http-ftp/Makefile                  |   2 +-
 english/CD/jigdo-cd/Makefile                  |   2 +-
 english/CD/live/Makefile                      |   2 +-
 english/CD/mirroring/Makefile                 |   2 +-
 english/CD/netinst/Makefile                   |   2 +-
 english/CD/releases/Makefile                  |   2 +-
 english/CD/torrent-cd/Makefile                |   2 +-
 english/News/Make.year                        |   2 +-
 english/News/press/Makefile                   |   4 +-
 english/News/weekly/Makefile                  |   2 +-
 english/blends/hamradio/News/2014/Makefile    |   2 +-
 english/blends/hamradio/News/2015/Makefile    |   2 +-
 english/consultants/Makefile                  |   4 +-
 .../devel/debian-nonprofit/News/2003/Makefile |   2 +-
 .../devel/debian-nonprofit/News/2004/Makefile |   2 +-
 english/devel/wnpp/Makefile                   |   2 +-
 english/events/1998/Makefile                  |   2 +-
 english/events/1999/Makefile                  |   2 +-
 english/events/2000/Makefile                  |   2 +-
 english/events/2001/Makefile                  |   2 +-
 english/events/2002/Makefile                  |   2 +-
 english/events/2003/Makefile                  |   2 +-
 english/events/2004/Makefile                  |   2 +-
 english/events/2005/Makefile                  |   2 +-
 english/events/2006/Makefile                  |   2 +-
 english/events/2007/Makefile                  |   2 +-
 english/events/2008/Makefile                  |   2 +-
 english/events/2009/Makefile                  |   2 +-
 english/events/2010/Makefile                  |   2 +-
 english/events/2011/Makefile                  |   2 +-
 english/events/2012/Makefile                  |   2 +-
 english/events/2013/Makefile                  |   2 +-
 english/lts/security/2014/Makefile            |   4 +-
 english/lts/security/2015/Makefile            |   4 +-
 english/lts/security/2016/Makefile            |   4 +-
 english/lts/security/2017/Makefile            |   2 +-
 english/lts/security/2018/Makefile            |   2 +-
 english/lts/security/2019/Makefile            |   2 +-
 english/lts/security/Makefile                 |   2 +-
 english/security/1997/Makefile                |   4 +-
 english/security/1998/Makefile                |   4 +-
 english/security/1999/Makefile                |   4 +-
 english/security/2000/Makefile                |   4 +-
 english/security/2001/Makefile                |   4 +-
 english/security/2002/Makefile                |   4 +-
 english/security/2003/Makefile                |   4 +-
 english/security/2004/Makefile                |   8 +-
 english/security/2005/Makefile                |   4 +-
 english/security/2006/Makefile                |   4 +-
 english/security/2007/Makefile                |   4 +-
 english/security/2008/Makefile                |   4 +-
 english/security/2009/Makefile                |   4 +-
 english/security/2010/Makefile                |   4 +-
 english/security/2011/Makefile                |   4 +-
 english/security/2012/Makefile                |   4 +-
 english/security/2013/Makefile                |   4 +-
 english/security/2014/Makefile                |   4 +-
 english/security/2015/Makefile                |   4 +-
 english/security/2016/Makefile                |   4 +-
 english/security/2017/Makefile                |   2 +-
 english/security/2018/Makefile                |   2 +-
 english/security/2019/Makefile                |   2 +-
 english/security/Makefile                     |   2 +-
 english/security/key-rollover/Makefile        |   4 +-
 english/security/undated/Makefile             |   4 +-
 english/users/Makefile                        |   2 +-
 english/users/com/Makefile                    |   2 +-
 english/users/edu/Makefile                    |   2 +-
 english/users/gov/Makefile                    |   2 +-
 english/users/org/Makefile                    |   2 +-
 english/vote/1999/Makefile                    |   4 +-
 english/vote/2000/Makefile                    |   4 +-
 english/vote/2001/Makefile                    |   2 +-
 english/vote/2002/Makefile                    |   2 +-
 english/vote/2003/Makefile                    |   2 +-
 english/vote/2004/Makefile                    |   2 +-
 english/vote/2005/Makefile                    |   2 +-
 english/vote/2006/Makefile                    |   4 +-
 english/vote/2007/Makefile                    |   4 +-
 english/vote/2008/Makefile                    |   4 +-
 english/vote/2009/Makefile                    |   4 +-
 english/vote/2010/Makefile                    |   4 +-
 english/vote/2011/Makefile                    |   4 +-
 english/vote/2012/Makefile                    |   4 +-
 english/vote/2013/Makefile                    |   4 +-
 english/vote/2014/Makefile                    |   4 +-
 english/vote/2015/Makefile                    |   4 +-
 english/vote/2016/Makefile                    |   4 +-
 english/vote/2017/Makefile                    |   4 +-
 english/vote/2018/Makefile                    |   4 +-
 english/vote/2019/Makefile                    |   4 +-
 english/women/profiles/Makefile               |   4 +-
 wml-multi-render                              |   1 +
 wml-multi-render-source.pl                    | 109 ++++++++++++++++++
 98 files changed, 256 insertions(+), 144 deletions(-)
 create mode 120000 wml-multi-render
 create mode 100755 wml-multi-render-source.pl

diff --git a/Makefile.common b/Makefile.common
index 3b52926e27a..32f6e081a4a 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -3,6 +3,8 @@
 
 CUR_YEAR := $(shell date +%Y)
 
+WML_PROC_FILES = wml-multi-render $(WMLFILES)
+
 # Turn this on to stop ignoring errors in various places
 STRICT_ERROR_CHECKS = 0
 ifeq ($(STRICT_ERROR_CHECKS), 0)
@@ -120,7 +122,7 @@ endif
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html : %.wml $(EXTRAWMLDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "en"
 	$(IGNORE)$(WMLBASE)/../touch_translations.pl $(CURDIR)/$(<F) $(LANGUAGE)
 else
diff --git a/english/CD/Makefile b/english/CD/Makefile
index d8b7c7f0b04..80933e428c5 100644
--- a/english/CD/Makefile
+++ b/english/CD/Makefile
@@ -21,7 +21,7 @@ endif
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(EXTRAWMLDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifneq "$(sort $(wildcard releases/index.wml))" ""
 RELEASESDEP := releases/index.wml
@@ -33,7 +33,7 @@ index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/cdimage.wml $(TEMPLDIR)/release_in
 	$(WML) $(<F) -I $(ENGLISHDIR)/CD/
 
 misc.$(LANGUAGE).html: misc.wml $(TEMPLDIR)/cdimage.wml $(GETTEXTDEP)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 verify.$(LANGUAGE).html: verify.wml $(TEMPLDIR)/cdimage.wml $(GETTEXTDEP) $(ENGLISHDIR)/CD/CD-keys.data
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/CD/artwork/Makefile b/english/CD/artwork/Makefile
index 18230e26404..06e917e7e88 100644
--- a/english/CD/artwork/Makefile
+++ b/english/CD/artwork/Makefile
@@ -14,4 +14,4 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/CD/faq/Makefile b/english/CD/faq/Makefile
index dadc5f20cd2..50ac3223448 100644
--- a/english/CD/faq/Makefile
+++ b/english/CD/faq/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
 	$(TEMPLDIR)/cdimage.wml \
diff --git a/english/CD/http-ftp/Makefile b/english/CD/http-ftp/Makefile
index 51972a1c5aa..229ceec19e5 100644
--- a/english/CD/http-ftp/Makefile
+++ b/english/CD/http-ftp/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/cdimage.wml \
   $(ENGLISHDIR)/CD/http-ftp/cdimage_mirrors.list \
diff --git a/english/CD/jigdo-cd/Makefile b/english/CD/jigdo-cd/Makefile
index 152abdf8a64..ba3a0e866f8 100644
--- a/english/CD/jigdo-cd/Makefile
+++ b/english/CD/jigdo-cd/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/cdimage.wml \
 	$(TEMPLDIR)/installer.wml $(TEMPLDIR)/toc.wml \
diff --git a/english/CD/live/Makefile b/english/CD/live/Makefile
index 773317a7820..cb6dbe10c20 100644
--- a/english/CD/live/Makefile
+++ b/english/CD/live/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/template.wml \
   $(TEMPLDIR)/release_info.wml $(TEMPLDIR)/installer.wml \
diff --git a/english/CD/mirroring/Makefile b/english/CD/mirroring/Makefile
index 855445595fa..7e2c94dc566 100644
--- a/english/CD/mirroring/Makefile
+++ b/english/CD/mirroring/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 rsync-mirrors.$(LANGUAGE).html: rsync-mirrors.wml $(TEMPLDIR)/cdimage.wml \
   $(ENGLISHDIR)/CD/mirroring/cdimage_mirrors.list | $(VCSREVCACHE)
diff --git a/english/CD/netinst/Makefile b/english/CD/netinst/Makefile
index 32d8250ce51..ebcb478babb 100644
--- a/english/CD/netinst/Makefile
+++ b/english/CD/netinst/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/template.wml \
   $(TEMPLDIR)/release_info.wml $(TEMPLDIR)/installer.wml \
diff --git a/english/CD/releases/Makefile b/english/CD/releases/Makefile
index 7035a0a2ce8..b9e56d2c0af 100644
--- a/english/CD/releases/Makefile
+++ b/english/CD/releases/Makefile
@@ -14,4 +14,4 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/CD/torrent-cd/Makefile b/english/CD/torrent-cd/Makefile
index d59da94795b..e0c8c47f83a 100644
--- a/english/CD/torrent-cd/Makefile
+++ b/english/CD/torrent-cd/Makefile
@@ -14,7 +14,7 @@ include $(WMLBASE)/Make.lang
 # rebuild everything whenever it's updated - see
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(WMLRCDEP) $(GETTEXTDEP) $(TEMPLDIR)/cdimage.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/cdimage.wml \
 	$(TEMPLDIR)/installer.wml $(TEMPLDIR)/toc.wml \
diff --git a/english/News/Make.year b/english/News/Make.year
index 4868e4166e9..3ab1eca1ec7 100644
--- a/english/News/Make.year
+++ b/english/News/Make.year
@@ -35,4 +35,4 @@ index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/template.wml \
 	$(WML) $(<F)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/news.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	wml-multi-render $(WMLFILES)
diff --git a/english/News/press/Makefile b/english/News/press/Makefile
index e4a31d37204..349fe8aa22e 100644
--- a/english/News/press/Makefile
+++ b/english/News/press/Makefile
@@ -22,10 +22,10 @@ index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/template.wml \
     $(GETTEXTDEP) \
     $(ENGLISHDIR)/News/press/press.tags \
     $(ENGLISHDIR)/News/press/$(LAST_YEAR).data | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/template.wml $(TEMPLDIR)/countries.wml \
     $(GETTEXTDEP) \
     $(ENGLISHDIR)/News/press/press.tags \
     $(ENGLISHDIR)/News/press/%.data | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/News/weekly/Makefile b/english/News/weekly/Makefile
index f552643701c..2c252a2a08c 100644
--- a/english/News/weekly/Makefile
+++ b/english/News/weekly/Makefile
@@ -44,7 +44,7 @@ endif
 ifeq "$(LANGUAGE)" "pl"
 	cd $(@D) && $(subst ../../znaczki.sh,$(CURDIR)/../../znaczki.sh,$(WML)) $(notdir $(<))
 else
-	cd $(@D) && $(WML) $(notdir $(<))
+	REL=1 wml-multi-render $(WMLFILES)
 endif
 
 install:: $(HTMLDESTFILES) $(PNGDESTFILES)
diff --git a/english/blends/hamradio/News/2014/Makefile b/english/blends/hamradio/News/2014/Makefile
index 80eef90336e..ab914b6d940 100644
--- a/english/blends/hamradio/News/2014/Makefile
+++ b/english/blends/hamradio/News/2014/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard 2014*.wml)) \
                         $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 	$(WML) index.wml
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/news.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/blends/hamradio/News/2015/Makefile b/english/blends/hamradio/News/2015/Makefile
index d6785f32e99..874512cf560 100644
--- a/english/blends/hamradio/News/2015/Makefile
+++ b/english/blends/hamradio/News/2015/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard 2014*.wml)) \
                         $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 	$(WML) index.wml
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/news.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/consultants/Makefile b/english/consultants/Makefile
index 00739161ab2..0d8525e23c0 100644
--- a/english/consultants/Makefile
+++ b/english/consultants/Makefile
@@ -20,7 +20,7 @@ index.$(LANGUAGE).html: index.wml $(TEMPLDIR)/template.wml \
                         $(ENGLISHSRCDIR)/consultants/consultant.inc \
                         $(ENGLISHSRCDIR)/consultants/consultant.defs \
                         $(GETTEXTDEP)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/consultant.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/devel/debian-nonprofit/News/2003/Makefile b/english/devel/debian-nonprofit/News/2003/Makefile
index 822f15e4d5b..b0835803fdf 100644
--- a/english/devel/debian-nonprofit/News/2003/Makefile
+++ b/english/devel/debian-nonprofit/News/2003/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard 2003*.wml)) \
                         $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 	$(WML) index.wml
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/news.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/devel/debian-nonprofit/News/2004/Makefile b/english/devel/debian-nonprofit/News/2004/Makefile
index 8f970f9c369..5855acd7bb1 100644
--- a/english/devel/debian-nonprofit/News/2004/Makefile
+++ b/english/devel/debian-nonprofit/News/2004/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard 2004*.wml)) \
                         $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 	$(WML) index.wml
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/news.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/devel/wnpp/Makefile b/english/devel/wnpp/Makefile
index 48ec4e86568..8ca538451ee 100644
--- a/english/devel/wnpp/Makefile
+++ b/english/devel/wnpp/Makefile
@@ -22,7 +22,7 @@ DATADIR = $(ENGLISHSRCDIR)/$(CUR_DIR)
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/template.wml $(TEMPLDIR)/languages.wml \
   $(WMLBASE)/../.wmlrc $(WMLBASE)/.wmlrc $(DATADIR)/wnpp.data \
   $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq ($(USE_SAMPLE_FILES),1)
 $(DATADIR)/Maintainers: $(DATADIR)/Maintainers.sample
diff --git a/english/events/1998/Makefile b/english/events/1998/Makefile
index 1d0a6cf530c..eb5b78a75b6 100644
--- a/english/events/1998/Makefile
+++ b/english/events/1998/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/
 	$(WML) index.wml
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/past_event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/events/1999/Makefile b/english/events/1999/Makefile
index 0e10dd193cc..89887da4e69 100644
--- a/english/events/1999/Makefile
+++ b/english/events/1999/Makefile
@@ -18,4 +18,4 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/
 	$(WML) index.wml
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/past_event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/events/2000/Makefile b/english/events/2000/Makefile
index 5f8a82c8da9..19e971b8ca0 100644
--- a/english/events/2000/Makefile
+++ b/english/events/2000/Makefile
@@ -17,4 +17,4 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/past_event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/events/2001/Makefile b/english/events/2001/Makefile
index 63861ec06ff..0df51954f02 100644
--- a/english/events/2001/Makefile
+++ b/english/events/2001/Makefile
@@ -17,4 +17,4 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/events/2002/Makefile b/english/events/2002/Makefile
index e134b1da3fc..6210d0c2971 100644
--- a/english/events/2002/Makefile
+++ b/english/events/2002/Makefile
@@ -17,4 +17,4 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/events/2003/Makefile b/english/events/2003/Makefile
index 6d68dbe7e07..091847aec28 100644
--- a/english/events/2003/Makefile
+++ b/english/events/2003/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2004/Makefile b/english/events/2004/Makefile
index 4fc0d7bd565..342d347a440 100644
--- a/english/events/2004/Makefile
+++ b/english/events/2004/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2005/Makefile b/english/events/2005/Makefile
index c9b79089984..6543366b7f9 100644
--- a/english/events/2005/Makefile
+++ b/english/events/2005/Makefile
@@ -31,7 +31,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2006/Makefile b/english/events/2006/Makefile
index 37c23811bbc..35f3ae8cec7 100644
--- a/english/events/2006/Makefile
+++ b/english/events/2006/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2007/Makefile b/english/events/2007/Makefile
index 87af57d48c8..dcf2a546f7e 100644
--- a/english/events/2007/Makefile
+++ b/english/events/2007/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2008/Makefile b/english/events/2008/Makefile
index 004f26e8b8c..7d475f607f6 100644
--- a/english/events/2008/Makefile
+++ b/english/events/2008/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2009/Makefile b/english/events/2009/Makefile
index 27fb7262cab..c9deac927e6 100644
--- a/english/events/2009/Makefile
+++ b/english/events/2009/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2010/Makefile b/english/events/2010/Makefile
index 79669734984..d6e3ace97a1 100644
--- a/english/events/2010/Makefile
+++ b/english/events/2010/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2011/Makefile b/english/events/2011/Makefile
index f22275b9668..0c4669c10c8 100644
--- a/english/events/2011/Makefile
+++ b/english/events/2011/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2012/Makefile b/english/events/2012/Makefile
index 6dee2515331..07104bdb399 100644
--- a/english/events/2012/Makefile
+++ b/english/events/2012/Makefile
@@ -29,7 +29,7 @@ clean::
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/events/2013/Makefile b/english/events/2013/Makefile
index 0c5d83fe991..297330d4339 100644
--- a/english/events/2013/Makefile
+++ b/english/events/2013/Makefile
@@ -31,7 +31,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*\-*.wml)) \
 	$(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/event.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).ics: %.wml $(ENGLISHSRCDIR)/events/make_ics.pl
 	$(ENGLISHSRCDIR)/events/make_ics.pl $< $@
diff --git a/english/lts/security/2014/Makefile b/english/lts/security/2014/Makefile
index 4ce34b172b1..7af8288b8f6 100644
--- a/english/lts/security/2014/Makefile
+++ b/english/lts/security/2014/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dla-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dla-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/lts/security/2015/Makefile b/english/lts/security/2015/Makefile
index 99c2c3cf430..46556ee33b1 100644
--- a/english/lts/security/2015/Makefile
+++ b/english/lts/security/2015/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dla-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dla-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/lts/security/2016/Makefile b/english/lts/security/2016/Makefile
index 9f3feab7c22..ce90205f393 100644
--- a/english/lts/security/2016/Makefile
+++ b/english/lts/security/2016/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dla-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dla-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/lts/security/2017/Makefile b/english/lts/security/2017/Makefile
index b890e4fdd41..a912e1753e3 100644
--- a/english/lts/security/2017/Makefile
+++ b/english/lts/security/2017/Makefile
@@ -36,7 +36,7 @@ endif
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/lts/security/2018/Makefile b/english/lts/security/2018/Makefile
index 01440ef2679..f807682ed9f 100644
--- a/english/lts/security/2018/Makefile
+++ b/english/lts/security/2018/Makefile
@@ -36,7 +36,7 @@ endif
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/lts/security/2019/Makefile b/english/lts/security/2019/Makefile
index 7e767552a4e..109540add46 100644
--- a/english/lts/security/2019/Makefile
+++ b/english/lts/security/2019/Makefile
@@ -36,7 +36,7 @@ endif
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/lts/security/Makefile b/english/lts/security/Makefile
index 40f29dd09ab..20fd1af97fe 100644
--- a/english/lts/security/Makefile
+++ b/english/lts/security/Makefile
@@ -42,7 +42,7 @@ ifeq "$(LANGUAGE)" "zh"
           $(<F)
 	@$(GENERATE_ZH_VARIANTS) index html
 else
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 endif
 
 
diff --git a/english/security/1997/Makefile b/english/security/1997/Makefile
index cc8a74cdaa9..ea3447b097c 100644
--- a/english/security/1997/Makefile
+++ b/english/security/1997/Makefile
@@ -16,8 +16,8 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data \
   $(TEMPLDIR)/security.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/1998/Makefile b/english/security/1998/Makefile
index 546fa2d8f70..77949701ab0 100644
--- a/english/security/1998/Makefile
+++ b/english/security/1998/Makefile
@@ -16,8 +16,8 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data \
   $(TEMPLDIR)/security.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/1999/Makefile b/english/security/1999/Makefile
index 87d450b48e7..11f26e89102 100644
--- a/english/security/1999/Makefile
+++ b/english/security/1999/Makefile
@@ -16,8 +16,8 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data \
   $(TEMPLDIR)/security.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2000/Makefile b/english/security/2000/Makefile
index cc2203717c1..fe28c42cbbd 100644
--- a/english/security/2000/Makefile
+++ b/english/security/2000/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2001/Makefile b/english/security/2001/Makefile
index fb699c00c35..15d46d68883 100644
--- a/english/security/2001/Makefile
+++ b/english/security/2001/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2002/Makefile b/english/security/2002/Makefile
index 656524a46b3..aa745ae2249 100644
--- a/english/security/2002/Makefile
+++ b/english/security/2002/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2003/Makefile b/english/security/2003/Makefile
index 25f5fbce658..4c8a5ce2e81 100644
--- a/english/security/2003/Makefile
+++ b/english/security/2003/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2004/Makefile b/english/security/2004/Makefile
index d9c023a547b..d969c7bcc19 100644
--- a/english/security/2004/Makefile
+++ b/english/security/2004/Makefile
@@ -17,19 +17,19 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 CAN-2004-0077.$(LANGUAGE).html: CAN-2004-0077.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/CAN-2004-0077.data \
   $(GETTEXTDEP) $(TEMPLDIR)/template.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 CAN-2004-0109.$(LANGUAGE).html: CAN-2004-0109.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/CAN-2004-0109.data \
   $(GETTEXTDEP) $(TEMPLDIR)/template.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2005/Makefile b/english/security/2005/Makefile
index a1ceb0437ac..2e849ca9e32 100644
--- a/english/security/2005/Makefile
+++ b/english/security/2005/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2006/Makefile b/english/security/2006/Makefile
index 838d636e5b0..9654e67083f 100644
--- a/english/security/2006/Makefile
+++ b/english/security/2006/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2007/Makefile b/english/security/2007/Makefile
index 4c8ae6b70fc..e2ea3bbcc21 100644
--- a/english/security/2007/Makefile
+++ b/english/security/2007/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2008/Makefile b/english/security/2008/Makefile
index 3fca750e900..b286d2b01af 100644
--- a/english/security/2008/Makefile
+++ b/english/security/2008/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2009/Makefile b/english/security/2009/Makefile
index 922d116031c..5e428d67695 100644
--- a/english/security/2009/Makefile
+++ b/english/security/2009/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2010/Makefile b/english/security/2010/Makefile
index be1b81fb9fc..cac13768e66 100644
--- a/english/security/2010/Makefile
+++ b/english/security/2010/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2011/Makefile b/english/security/2011/Makefile
index f8e318dcaf0..586fdb6c074 100644
--- a/english/security/2011/Makefile
+++ b/english/security/2011/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2012/Makefile b/english/security/2012/Makefile
index 41e3233228a..bdeb9bd7914 100644
--- a/english/security/2012/Makefile
+++ b/english/security/2012/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2013/Makefile b/english/security/2013/Makefile
index ff32bb16ea3..309276af11f 100644
--- a/english/security/2013/Makefile
+++ b/english/security/2013/Makefile
@@ -17,10 +17,10 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard dsa-[0-9]*.wml)) \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
diff --git a/english/security/2014/Makefile b/english/security/2014/Makefile
index 894b87d90e5..d492e4f1755 100644
--- a/english/security/2014/Makefile
+++ b/english/security/2014/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dsa-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2015/Makefile b/english/security/2015/Makefile
index 6365dd0a6fb..cf22ac8c4ec 100644
--- a/english/security/2015/Makefile
+++ b/english/security/2015/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dsa-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2016/Makefile b/english/security/2016/Makefile
index 4901a952476..0d08a9d5385 100644
--- a/english/security/2016/Makefile
+++ b/english/security/2016/Makefile
@@ -17,9 +17,9 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard dsa-[0-9]*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/dsa-[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list_security.wml $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/2017/Makefile b/english/security/2017/Makefile
index e7ffc5919fb..6d9319c3f7a 100644
--- a/english/security/2017/Makefile
+++ b/english/security/2017/Makefile
@@ -36,7 +36,7 @@ endif
 # https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/security/2018/Makefile b/english/security/2018/Makefile
index ab3c420bf3b..aa17eb41244 100644
--- a/english/security/2018/Makefile
+++ b/english/security/2018/Makefile
@@ -36,7 +36,7 @@ endif
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/security/2019/Makefile b/english/security/2019/Makefile
index 5964f51bd97..2cfc7b34ace 100644
--- a/english/security/2019/Makefile
+++ b/english/security/2019/Makefile
@@ -36,7 +36,7 @@ endif
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/security.wml \
   $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data $(GETTEXTDEP) | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "zh"
 	@$(GENERATE_ZH_VARIANTS) $* html
 endif
diff --git a/english/security/Makefile b/english/security/Makefile
index cf7dfa92d11..a0e80b350db 100644
--- a/english/security/Makefile
+++ b/english/security/Makefile
@@ -40,7 +40,7 @@ ifeq "$(LANGUAGE)" "zh"
           $(<F)
 	@$(GENERATE_ZH_VARIANTS) index html
 else
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 endif
 
 pam-auth.$(LANGUAGE).html: pam-auth.wml \
diff --git a/english/security/key-rollover/Makefile b/english/security/key-rollover/Makefile
index 1fcf19e8a0b..53cf6047def 100644
--- a/english/security/key-rollover/Makefile
+++ b/english/security/key-rollover/Makefile
@@ -8,7 +8,7 @@ SUBS=
 include $(WMLBASE)/Make.lang
 
 index.$(LANGUAGE).html: index.wml $(ENGLISHSRCDIR)/security/key-rollover/index.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 notvuln.$(LANGUAGE).html: notvuln.wml $(ENGLISHSRCDIR)/security/key-rollover/notvuln.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/security/undated/Makefile b/english/security/undated/Makefile
index 97372c16ba1..57733a50acc 100644
--- a/english/security/undated/Makefile
+++ b/english/security/undated/Makefile
@@ -15,8 +15,8 @@ include $(WMLBASE)/Make.lang
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard [0-9]*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/[0-9]*.data)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 %.$(LANGUAGE).html: %.wml $(ENGLISHSRCDIR)/$(CUR_DIR)/%.data \
   $(TEMPLDIR)/security.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/users/Makefile b/english/users/Makefile
index d3c8d1ead60..8311fafc877 100644
--- a/english/users/Makefile
+++ b/english/users/Makefile
@@ -14,4 +14,4 @@ index.$(LANGUAGE).html: index.wml\
 	$(sort $(wildcard gov/*.wml)) $(sort $(wildcard $(ENGLISHSRCDIR)/users/gov/*.wml)) \
 	$(TEMPLDIR)/template.wml  $(TEMPLDIR)/users_list.wml \
 	$(TEMPLDIR)/languages.wml $(TEMPLDIR)/users.wml $(GETTEXTDEP)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/users/com/Makefile b/english/users/com/Makefile
index 7c9d3d4b1d5..87df4fafcf4 100644
--- a/english/users/com/Makefile
+++ b/english/users/com/Makefile
@@ -9,4 +9,4 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml\
 	$(TEMPLDIR)/users.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/users/edu/Makefile b/english/users/edu/Makefile
index f6a23c874e8..f1099e8c1f6 100644
--- a/english/users/edu/Makefile
+++ b/english/users/edu/Makefile
@@ -9,4 +9,4 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml\
 	$(TEMPLDIR)/users.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/users/gov/Makefile b/english/users/gov/Makefile
index f8c55262e16..28e6d9f246f 100644
--- a/english/users/gov/Makefile
+++ b/english/users/gov/Makefile
@@ -9,4 +9,4 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml\
 	$(TEMPLDIR)/users.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/users/org/Makefile b/english/users/org/Makefile
index 96d7a32abc8..99c76d8c23c 100644
--- a/english/users/org/Makefile
+++ b/english/users/org/Makefile
@@ -9,4 +9,4 @@ include $(WMLBASE)/Make.lang
 
 %.$(LANGUAGE).html: %.wml\
 	$(TEMPLDIR)/users.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
diff --git a/english/vote/1999/Makefile b/english/vote/1999/Makefile
index f40bdebba12..ce72289c39a 100644
--- a/english/vote/1999/Makefile
+++ b/english/vote/1999/Makefile
@@ -10,11 +10,11 @@ include $(WMLBASE)/Make.lang
 
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/template.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2000/Makefile b/english/vote/2000/Makefile
index 56a221b9a3f..7e43c5d74c4 100644
--- a/english/vote/2000/Makefile
+++ b/english/vote/2000/Makefile
@@ -10,11 +10,11 @@ include $(WMLBASE)/Make.lang
 
 
 %.$(LANGUAGE).html: %.wml $(TEMPLDIR)/template.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2001/Makefile b/english/vote/2001/Makefile
index 1bb55fdfffd..2cbb387b4f3 100644
--- a/english/vote/2001/Makefile
+++ b/english/vote/2001/Makefile
@@ -12,7 +12,7 @@ include $(WMLBASE)/Make.lang
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2002/Makefile b/english/vote/2002/Makefile
index d46a3172292..32fd7ef4422 100644
--- a/english/vote/2002/Makefile
+++ b/english/vote/2002/Makefile
@@ -12,7 +12,7 @@ include $(WMLBASE)/Make.lang
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2003/Makefile b/english/vote/2003/Makefile
index 895f528bf5f..8465aa1341a 100644
--- a/english/vote/2003/Makefile
+++ b/english/vote/2003/Makefile
@@ -12,7 +12,7 @@ include $(WMLBASE)/Make.lang
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2004/Makefile b/english/vote/2004/Makefile
index f51fd315dc7..237bd57ebaf 100644
--- a/english/vote/2004/Makefile
+++ b/english/vote/2004/Makefile
@@ -12,7 +12,7 @@ include $(WMLBASE)/Make.lang
 $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2005/Makefile b/english/vote/2005/Makefile
index f5e9e86d9c9..ada0c78e0d0 100644
--- a/english/vote/2005/Makefile
+++ b/english/vote/2005/Makefile
@@ -13,7 +13,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard suppl_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
diff --git a/english/vote/2006/Makefile b/english/vote/2006/Makefile
index cddc5d6ce37..a8775fae3d1 100644
--- a/english/vote/2006/Makefile
+++ b/english/vote/2006/Makefile
@@ -14,7 +14,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_quorum.txt)) $(sort $(wildcard vote_*_quorum.src)) \
   $(sort $(wildcard vote_*_majority.src)) $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -22,7 +22,7 @@ index.$(LANGUAGE).html: index.wml \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2007/Makefile b/english/vote/2007/Makefile
index 84e376f47c6..e98d89efc05 100644
--- a/english/vote/2007/Makefile
+++ b/english/vote/2007/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2008/Makefile b/english/vote/2008/Makefile
index d4e53800ac0..361d452f2b1 100644
--- a/english/vote/2008/Makefile
+++ b/english/vote/2008/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2009/Makefile b/english/vote/2009/Makefile
index 4e04c5749f9..314ad55f784 100644
--- a/english/vote/2009/Makefile
+++ b/english/vote/2009/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2010/Makefile b/english/vote/2010/Makefile
index 0c49e53b9da..b0e987b463d 100644
--- a/english/vote/2010/Makefile
+++ b/english/vote/2010/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2011/Makefile b/english/vote/2011/Makefile
index e7bae054f3c..a7721bb4d6b 100644
--- a/english/vote/2011/Makefile
+++ b/english/vote/2011/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2012/Makefile b/english/vote/2012/Makefile
index 94decf75ed8..876154fbb98 100644
--- a/english/vote/2012/Makefile
+++ b/english/vote/2012/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2013/Makefile b/english/vote/2013/Makefile
index 9e8c06223b2..6f4579245da 100644
--- a/english/vote/2013/Makefile
+++ b/english/vote/2013/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2014/Makefile b/english/vote/2014/Makefile
index ba7ef17b19e..91e21d9db3b 100644
--- a/english/vote/2014/Makefile
+++ b/english/vote/2014/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2015/Makefile b/english/vote/2015/Makefile
index 02886e508bc..8d8fc474397 100644
--- a/english/vote/2015/Makefile
+++ b/english/vote/2015/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2016/Makefile b/english/vote/2016/Makefile
index 291c7032e2f..ddc3307f925 100644
--- a/english/vote/2016/Makefile
+++ b/english/vote/2016/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2017/Makefile b/english/vote/2017/Makefile
index 47e27ad07a6..5f6c1305b1a 100644
--- a/english/vote/2017/Makefile
+++ b/english/vote/2017/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2018/Makefile b/english/vote/2018/Makefile
index e4c377b1ae3..c1c7cf19ab2 100644
--- a/english/vote/2018/Makefile
+++ b/english/vote/2018/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/vote/2019/Makefile b/english/vote/2019/Makefile
index 8f6d1afa5f0..7a856f645a4 100644
--- a/english/vote/2019/Makefile
+++ b/english/vote/2019/Makefile
@@ -15,7 +15,7 @@ $(foreach i, $(VOTE), $(i).$(LANGUAGE).html): %.$(LANGUAGE).html: %.wml \
   $(sort $(wildcard vote_*_majority.txt)) $(sort $(wildcard vote_*_majority.src)) \
   $(sort $(wildcard vote_*_results.src)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/votebar.wml
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
   $(sort $(wildcard $(ENGLISHSRCDIR)/$(CUR_DIR)/../[0-9]*/vote_*.wml)) \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/recent_list.wml \
@@ -23,7 +23,7 @@ index.$(LANGUAGE).html: index.wml $(sort $(wildcard vote_*.wml)) \
 
 $(foreach i, $(basename $(sort $(wildcard suppl_*_stats.wml))), $(i).$(LANGUAGE).html): \
 %.$(LANGUAGE).html: %.wml $(sort $(wildcard vote_*_index.src))
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 
 ifeq "$(LANGUAGE)" "en"
 
diff --git a/english/women/profiles/Makefile b/english/women/profiles/Makefile
index 908dd5bcb91..85b59b67518 100644
--- a/english/women/profiles/Makefile
+++ b/english/women/profiles/Makefile
@@ -18,7 +18,7 @@ index.$(LANGUAGE).html : index.wml $(WMLRCDEP) $(GETTEXTDEP) \
   $(PROFILES) \
   $(TEMPLDIR)/users_list.wml \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/languages.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "en"
 	$(IGNORE)$(WMLBASE)/../touch_translations.pl $(CURDIR)/$(<F) $(LANGUAGE)
 else
@@ -32,7 +32,7 @@ endif
   $(TEMPLDIR)/faqs.wml \
   $(TEMPLDIR)/profiles.wml \
   $(TEMPLDIR)/template.wml $(TEMPLDIR)/languages.wml | $(VCSREVCACHE)
-	$(WML) $(<F)
+	$(call WML_PROC_FILES)
 ifeq "$(LANGUAGE)" "en"
 	$(IGNORE)$(WMLBASE)/../touch_translations.pl $(CURDIR)/$(<F) $(LANGUAGE)
 else
diff --git a/wml-multi-render b/wml-multi-render
new file mode 120000
index 00000000000..43d86d527f3
--- /dev/null
+++ b/wml-multi-render
@@ -0,0 +1 @@
+wml-multi-render-source.pl
\ No newline at end of file
diff --git a/wml-multi-render-source.pl b/wml-multi-render-source.pl
new file mode 100755
index 00000000000..84b49377819
--- /dev/null
+++ b/wml-multi-render-source.pl
@@ -0,0 +1,109 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use 5.014;
+use Cwd ();
+use File::Basename qw/ basename dirname /;
+
+use lib "$ENV{HOME}/apps/test/wml/share/wml";
+
+use TheWML::Frontends::Wml::Runner ();
+
+use lib './lib';
+
+my $UNCOND = $ENV{UNCOND} // '';
+
+my $PWD   = Cwd::getcwd();
+my @FLAGS = (
+    qq%
+    -q -D CUR_YEAR=2019
+    % =~ /(\S+)/g
+);
+
+my $SRC_DIR = $PWD;
+
+my $obj = TheWML::Frontends::Wml::Runner->new;
+
+sub is_newer
+{
+    my ( $fn1, $fn2 ) = @_;
+    my @stat2 = stat($fn2);
+    if ( !@stat2 )
+    {
+        return 1;
+    }
+    my @stat1 = stat($fn1);
+    return ( $stat1[9] >= $stat2[9] );
+}
+
+my @queue;
+my $REL = $ENV{REL};
+foreach my $src_ (@ARGV)
+{
+    my ( $dir, $src ) =
+        $REL ? ( dirname($src_), basename($src_) ) : ( '.', $src_ );
+    my $dest = $src =~ s/\.wml\z/.en.html/r;
+    if ( $UNCOND or is_newer( $src, $dest ) )
+    {
+        push @queue,
+            [ $dir, [ "-o", "UNDEFuEN:" . basename($dest) . '@g+w', $src, ] ];
+    }
+}
+my $proc = sub {
+    my ( $dir, $x ) = @{ shift(@_) };
+    my $argv = [ @FLAGS, @$x ];
+    say join " ", @$argv;
+    chdir($SRC_DIR);
+    chdir($dir);
+
+    $obj->run_with_ARGV(
+        {
+            ARGV => $argv,
+        }
+    ) and die "$!";
+    return;
+};
+
+use Parallel::ForkManager::Segmented ();
+
+Parallel::ForkManager::Segmented->new->run(
+    {
+        items        => \@queue,
+        nproc        => 4,
+        batch_size   => 4,
+        process_item => $proc,
+    }
+);
+
+__END__
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2018 by Shlomi Fish
+
+This program is distributed under the MIT / Expat License:
+L<http://www.opensource.org/licenses/mit-license.php>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=cut
-- 
2.21.0

Reply via email to