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