PN = htsn-import
BIN = dist/build/$(PN)/$(PN)
-TESTSUITE_BIN = dist/build/testsuite/testsuite
SRCS := $(shell find src/ -type f -name '*.hs')
-TEST_SRCS := $(shell find test/ -type f -name '*.hs')
.PHONY : dist hlint
--executables \
--hyperlink-source
-clean:
- runghc Setup.hs clean
- rm -f *.log
- rm -f *.xml
- rm -rf tmp
+#
+# Testing.
+#
+TESTSUITE_BIN = dist/build/testsuite/testsuite
+TEST_SRCS := $(shell find test/ -type f -name '*.hs')
$(TESTSUITE_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
runghc Setup.hs configure --user --enable-tests --prefix=/
runghc Setup.hs build
test: $(BIN) $(TESTSUITE_BIN)
runghc Setup.hs test
+
+#
+# Misc.
+#
dist:
runghc Setup.hs configure --prefix=/
runghc Setup.hs sdist
--ignore="Redundant bracket" \
--color \
src
+
+clean:
+ runghc Setup.hs clean
+ rm -f *.log
+ rm -f *.xml
+ rm -rf tmp
+ rm -f schemagen/*.dtd
+
+
+#
+# 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)