+
+clean:
+ runghc Setup.hs clean
+ rm -f *.log
+ rm -f *.xml
+ rm -rf tmp
+ rm -f schemagen/*.dtd
+ find ./ -name '*.prof' -delete
+ find ./ -name '*.o' -delete
+ find ./ -name '*.hi' -delete
+
+
+#
+# Schema generation.
+#
+
+XMLS := $(shell find schemagen/ -type f -name '*.xml')
+XMLTYPES := $(shell find schemagen/ -mindepth 1 -maxdepth 1 -type d)
+DTDS := $(addsuffix .dtd, $(XMLTYPES))
+
+# We have to depend on *every* XML file here, since pattern matching
+# and path globs don't play well together. The use of "%" on the right
+# is a trick to make the ".dtd"-less path available in the rule via
+# $<. Its use is legitimate since we do sort of depend on the
+# directory existing.
+$(DTDS): %.dtd: % $(XMLS)
+ schema-learn $</*.xml > $@
+
+schema: $(DTDS)