initial source import
diff --git a/doc/tools/sgmlconv/make.rules b/doc/tools/sgmlconv/make.rules
new file mode 100644
index 0000000..93579c5
--- /dev/null
+++ b/doc/tools/sgmlconv/make.rules
@@ -0,0 +1,48 @@
+# -*- makefile -*-
+#
+# Extra magic needed by the LaTeX->XML conversion process.  This requires
+# $(TOOLSDIR) to be properly defined.
+
+DOCFIXER=	$(TOOLSDIR)/sgmlconv/docfixer.py
+ESIS2ML=	$(TOOLSDIR)/sgmlconv/esis2sgml.py
+LATEX2ESIS=	$(TOOLSDIR)/sgmlconv/latex2esis.py
+CONVERSION=	$(TOOLSDIR)/sgmlconv/conversion.xml
+
+ESISTARGETS=	$(patsubst %.tex,%.esis,$(wildcard *.tex))
+ESIS1TARGETS=	$(patsubst %.tex,%.esis1,$(wildcard *.tex))
+XMLTARGETS=	$(patsubst %.tex,%.xml,$(wildcard *.tex))
+
+L2EFLAGS=
+
+all:	xml
+
+esis:	$(ESISTARGETS)
+esis1:	$(ESIS1TARGETS)
+xml:	$(XMLTARGETS)
+
+ESISTOOLS=	$(TOOLSDIR)/sgmlconv/esistools.py
+
+$(ESISTARGETS): $(LATEX2ESIS) $(DOCFIXER) $(ESISTOOLS) $(CONVERSION)
+$(ESIS1TARGETS): $(LATEX2ESIS) $(CONVERSION)
+# This variant is easier to work with while debugging the conversion spec:
+#$(ESISTARGETS): $(LATEX2ESIS) $(DOCFIXER) $(ESISTOOLS)
+$(XMLTARGETS): $(ESIS2ML)
+
+
+.SUFFIXES: .esis .esis1 .tex .xml
+
+.tex.esis1:
+	$(LATEX2ESIS) $(L2EFLAGS) $< $@
+
+.esis1.esis:
+	$(DOCFIXER) $< $@
+
+.esis.xml:
+	$(ESIS2ML) --xml $< $@
+
+
+clean:
+	rm -f *.esis *.esis1
+
+clobber: clean
+	rm -f *.xml