Introduce a namespace for the modules
[ganeti-local] / Makefile
1 HPROGS = hbal hn1
2 HSRCS := $(filter-out $(HPROGS), $(wildcard src/*.hs))
3 HDDIR = apidoc
4
5 # Haskell rules
6
7 all: hbal hn1
8
9 hn1 hbal: Ganeti/HTools/Version.hs
10         ghc --make -O2 -W $@
11
12 README.html: README
13         rst2html $< $@
14
15 doc: README.html
16         rm -rf $(HDDIR)
17         mkdir -p $(HDDIR)/src
18         cp hscolour.css $(HDDIR)/src
19         for file in $(HSRCS); do \
20                 HsColour -css -anchor \
21                 $$file > $(HDDIR)/src/`basename $$file .hs`.html ; \
22         done
23         haddock --odir $(HDDIR) --html --ignore-all-exports \
24                 -t htools -p haddock-prologue \
25                 --source-module="src/%{MODULE/.//}.html" \
26                 --source-entity="src/%{MODULE/.//}.html#%{NAME}" \
27                 $(HSRCS)
28
29 clean:
30         rm -f *.o hn1 zn1 *.prof *.ps *.stat *.aux \
31             gmon.out *.hi README.html TAGS Ganeti/HTools/Version.hs
32         git describe >/dev/null && rm -f version
33
34 version:
35         git describe > $@
36
37 Ganeti/HTools/Version.hs: Ganeti/HTools/Version.hs.in version
38         sed -e "s/%ver%/$$(cat ../version)/" < $< > $@
39
40 dist: version
41         VN=$$(cat version|sed 's/^v//') ; \
42         ANAME="htools-$$VN.tar" ; \
43         rm -f $$ANAME $$ANAME.gz ; \
44         git archive --format=tar --prefix=htools-$$VN/ HEAD > $$ANAME ; \
45         tar -r -f $$ANAME --owner root --group root \
46             --transform="s,^,htools-$$VN/," version ; \
47         gzip -v9 $$ANAME ; \
48         tar tzvf $$ANAME.gz
49
50 .PHONY : all doc clean hn1 dist