-PN = htsn-rdbms-import
+PN = htsn-import
BIN = dist/build/$(PN)/$(PN)
-TESTSUITE_BIN = dist/build/testsuite/testsuite
+SRCS := $(shell find src/ -type f -name '*.hs')
.PHONY : dist hlint
-$(BIN): $(PN).cabal src/*.hs src/TSN/*.hs
- runghc Setup.hs clean
+$(BIN): $(PN).cabal $(SRCS)
runghc Setup.hs configure --user --prefix=/
runghc Setup.hs build
-profile: $(PN).cabal src/*.hs src/TSN/*.hs
- runghc Setup.hs clean
- runghc Setup.hs configure --user --enable-executable-profiling --prefix=/
+# The $(BIN) dependency means that we should build once normally
+# before attempting the profiling build (this is required for some
+# reason).
+profile: $(PN).cabal $(SRCS) $(BIN)
+ runghc Setup.hs configure --user \
+ --enable-executable-profiling \
+ --prefix=/
runghc Setup.hs build
-doc: $(PN).cabal src/*.hs src/TSN/*.hs
+doc: $(PN).cabal $(SRCS)
runghc Setup.hs configure --user --prefix=/
- runghc Setup.hs hscolour --executables
- runghc Setup.hs haddock --internal \
- --executables \
- --hyperlink-source
+ runghc Setup.hs hscolour --all
+ runghc Setup.hs haddock --all \
+ --hyperlink-source \
+ --haddock-options="--ignore-all-exports"
-clean:
- runghc Setup.hs clean
- rm -f *.log
- rm -f *.xml
- rm -rf tmp
+#
+# Testing.
+#
-$(TESTSUITE_BIN): $(PN).cabal src/*.hs test/TestSuite.hs
+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
+ TAR_OPTIONS="--format=ustar" runghc Setup.hs sdist
hlint:
hlint --ignore="Use camelCase" \
--ignore="Redundant bracket" \
--color \
src
+
+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)