packages feed

htsn-import-0.0.1: makefile

PN = htsn-import
BIN = dist/build/$(PN)/$(PN)
SRCS := $(shell find src/ -type f -name '*.hs')

.PHONY : dist hlint

$(BIN): $(PN).cabal $(SRCS)
	runghc Setup.hs configure --user --prefix=/
	runghc Setup.hs build

# 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 $(SRCS)
	runghc Setup.hs configure --user --prefix=/
	runghc Setup.hs hscolour --all
	runghc Setup.hs haddock --all    \
				--hyperlink-source \
                                --haddock-options="--ignore-all-exports"

#
# 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

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)