X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhtsn-import.git;a=blobdiff_plain;f=makefile;h=4a1845b6595ffbebdedaf278448cefdde836a285;hp=1be5000fa3b35e2eb13c4dac70f340994ddc1c83;hb=HEAD;hpb=5c84cab65a3e74aa50dbc2a4904de0c645d3999d diff --git a/makefile b/makefile index 1be5000..4a1845b 100644 --- a/makefile +++ b/makefile @@ -1,45 +1,93 @@ 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 +dist/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 +doc: dist/doc + + +# The MLB schema is identical to the regular one. +doc/dbschema/MLB_earlylineXML.png: doc/dbschema/earlylineXML.png + cp $< $@ -$(TESTSUITE_BIN): $(PN).cabal src/*.hs test/TestSuite.hs + +# +# 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 -dist: + +# +# Misc. +# + +# Only generate MLB_earlylineXML.png long enough to create +# the tarball. +dist: doc/dbschema/MLB_earlylineXML.png runghc Setup.hs configure --prefix=/ - runghc Setup.hs sdist + TAR_OPTIONS="--format=ustar" runghc Setup.hs sdist + rm $< 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 $ $@ + +schema: $(DTDS)