Add computation of the failure reason in hspace
[ganeti-local] / Makefile
index 67096d4..40d0963 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,29 @@
-HPROGS = hbal hn1
+HPROGS = hbal hscan hail hspace
+HALLPROGS = $(HPROGS) test
 HSRCS := $(wildcard Ganeti/HTools/*.hs)
 HDDIR = apidoc
 
 DOCS = README.html NEWS.html
 
+HFLAGS = -O2 -W -fwarn-monomorphism-restriction -fwarn-tabs
+HEXTRA =
+
+HPCEXCL = --exclude Main --exclude Ganeti.HTools.QC
+
 # Haskell rules
 
 all: $(HPROGS)
 
-hn1 hbal: % : %.hs Ganeti/HTools/Version.hs $(HSRCS) Makefile
-       ghc --make -O2 -W $@
+$(HALLPROGS): %: %.hs Ganeti/HTools/Version.hs $(HSRCS) Makefile
+       ghc --make $(HFLAGS) $(HEXTRA) $@
+
+test: HEXTRA=-fhpc
 
 $(DOCS) : %.html : %
        rst2html $< $@
 
-doc: $(DOCS)
-       rm -rf $(HDDIR)
+doc: $(DOCS) Ganeti/HTools/Version.hs
+       rm -rf $(HDDIR)/*
        mkdir -p $(HDDIR)/Ganeti/HTools
        cp hscolour.css $(HDDIR)/Ganeti/HTools
        for file in $(HSRCS); do \
@@ -23,17 +31,19 @@ doc: $(DOCS)
                $$file > $(HDDIR)/Ganeti/HTools/`basename $$file .hs`.html ; \
        done
        haddock --odir $(HDDIR) --html --ignore-all-exports \
-               -t htools -p haddock-prologue \
+               -t ganeti-htools -p haddock-prologue \
                --source-module="%{MODULE/.//}.html" \
                --source-entity="%{MODULE/.//}.html#%{NAME}" \
                $(HSRCS)
 
+maintainer-clean:
+       rm -rf $(HDDIR)
+       rm -f $(DOCS) TAGS version Ganeti/HTools/Version.hs
+
 clean:
-       rm -f hbal hn1
+       rm -f $(HALLPROGS)
        rm -f *.o *.prof *.ps *.stat *.aux *.hi
        cd Ganeti/HTools && rm -f *.o *.prof *.ps *.stat *.aux *.hi
-       rm -f $(DOCS) TAGS Ganeti/HTools/Version.hs
-       git describe >/dev/null 2>&1 && rm -f version || true
 
 version:
        git describe > $@
@@ -41,14 +51,25 @@ version:
 Ganeti/HTools/Version.hs: Ganeti/HTools/Version.hs.in version
        sed -e "s/%ver%/$$(cat version)/" < $< > $@
 
-dist: version doc
+dist: Ganeti/HTools/Version.hs version doc
        VN=$$(cat version|sed 's/^v//') ; \
-       ANAME="htools-$$VN.tar" ; \
+       PFX="ganeti-htools-$$VN" ; \
+       ANAME="$$PFX.tar" ; \
        rm -f $$ANAME $$ANAME.gz ; \
-       git archive --format=tar --prefix=htools-$$VN/ HEAD > $$ANAME ; \
+       git archive --format=tar --prefix=$$PFX/ HEAD > $$ANAME ; \
        tar -r -f $$ANAME --owner root --group root \
-           --transform="s,^,htools-$$VN/," version ; \
+           --transform="s,^,$$PFX/," version apidoc $(DOCS) ; \
        gzip -v9 $$ANAME ; \
        tar tzvf $$ANAME.gz
 
-.PHONY : all doc clean dist
+check: test
+       rm -f *.tix *.mix
+       ./test
+ifeq ($(T),markup)
+       mkdir -p coverage
+       hpc markup --destdir=coverage test $(HPCEXCL)
+else
+       hpc report test $(HPCEXCL)
+endif
+
+.PHONY : all doc maintainer-clean clean dist check