+ifeq ($(wildcard $(BUILDDIR)/.update-types),)
+# Reload this make·file if any of the magic files or parsers have
+# changed.
+#
+# These are used to classify source files, so if they have changed then
+# the make·file must be reloaded.
+#
+# This recipe sleeps for one second to ensure that files built after
+# the restart have a more current time·stamp.
+$(THISDIR)/GNUmakefile:: $(BUILDDIR)/magic.mgc $(BUILDDIR)/parser.xslt $(THISDIR)/lib/parser2types.xslt
+ $(silent)$(TOUCH) $(THISDIR)/GNUmakefile
+ $(silent)$(RM) -f $(call quote,$(BUILDDIR)/dependencies)
+ @$(PRINTF) '%b\n' '\0033[1mMagic file or parsers have updated. Restarting…\0033[22m'
+ $(silent)$(SLEEP) 1
+ $(silent)$(TOUCH) $(call quote,$(BUILDDIR)/.update-types)
+endif
+