Statistics
| Branch: | Tag: | Revision:

root / Makefile @ ee0cb5b7

History | View | Annotate | Download (2.5 kB)

1
HPROGS = hbal hscan hail hspace
2
HALLPROGS = $(HPROGS) test
3
HSRCS := $(wildcard Ganeti/HTools/*.hs) $(wildcard Ganeti/*.hs)
4
HDDIR = apidoc
5
GHC := ghc
6

    
7
DOCS = README.html NEWS.html
8

    
9
HFLAGS = -O2 -Wall -Werror -fwarn-monomorphism-restriction -fwarn-tabs
10
HEXTRA =
11

    
12
HPCEXCL = --exclude Main --exclude Ganeti.HTools.QC
13

    
14
# Haskell rules
15

    
16
all: $(HPROGS)
17

    
18
$(HALLPROGS): %: %.hs Ganeti/HTools/Version.hs $(HSRCS) Makefile
19
	$(GHC) --make $(HFLAGS) $(HEXTRA) $@
20

    
21
test: HEXTRA=-fhpc -Wwarn
22

    
23
$(DOCS) : %.html : %
24
	rst2html $< $@
25

    
26
doc: $(DOCS) Ganeti/HTools/Version.hs
27
	rm -rf $(HDDIR)/*
28
	mkdir -p $(HDDIR)/Ganeti/HTools
29
	cp hscolour.css $(HDDIR)/Ganeti/HTools
30
	for file in $(HSRCS); do \
31
		HsColour -css -anchor \
32
		$$file > $(HDDIR)/Ganeti/HTools/`basename $$file .hs`.html ; \
33
	done
34
	haddock --odir $(HDDIR) --html --ignore-all-exports \
35
		-t ganeti-htools -p haddock-prologue \
36
		--source-module="%{MODULE/.//}.html" \
37
		--source-entity="%{MODULE/.//}.html#%{NAME}" \
38
		$(filter-out Ganeti/HTools/ExtLoader.hs,$(HSRCS))
39

    
40
maintainer-clean:
41
	rm -rf $(HDDIR)
42
	rm -f $(DOCS) TAGS version Ganeti/HTools/Version.hs
43

    
44
clean:
45
	rm -f $(HALLPROGS)
46
	rm -f *.o *.prof *.ps *.stat *.aux *.hi
47
	rm -f Ganeti/HTools/Version.hs
48
	cd Ganeti && rm -f *.o *.prof *.ps *.stat *.aux *.hi
49
	cd Ganeti/HTools && rm -f *.o *.prof *.ps *.stat *.aux *.hi
50

    
51
regen-version:
52
	rm -f version
53
	$(MAKE) version
54

    
55
version:
56
	if test -d .git; then \
57
	  git describe > $@; \
58
	elif test ! -f $@ ; then \
59
	  echo "Cannot auto-generate $@ file"; exit 1; \
60
	fi
61

    
62
Ganeti/HTools/Version.hs: Ganeti/HTools/Version.hs.in version
63
	sed -e "s/%ver%/$$(cat version)/" < $< > $@
64

    
65
dist: regen-version Ganeti/HTools/Version.hs doc
66
	set -e ; \
67
	VN=$$(sed 's/^v//' < version) ; \
68
	PFX="ganeti-htools-$$VN" ; \
69
	ANAME="$$PFX.tar" ; \
70
	rm -f $$ANAME $$ANAME.gz ; \
71
	git archive --format=tar --prefix=$$PFX/ HEAD > $$ANAME ; \
72
	tar -r -f $$ANAME --owner root --group root \
73
	    --transform="s,^,$$PFX/," version apidoc $(DOCS) ; \
74
	gzip -v9 $$ANAME ; \
75
	TMPDIR=$$(mktemp -d) ; \
76
	tar xzf $$ANAME.gz -C $$TMPDIR; \
77
	$(MAKE) -C $$TMPDIR/$$PFX; \
78
	$(MAKE) -C $$TMPDIR/$$PFX clean; \
79
	$(MAKE) -C $$TMPDIR/$$PFX check; \
80
	rm -rf $$TMPDIR ; \
81
	tar tzvf $$ANAME.gz ; \
82
	sha1sum $$ANAME.gz ; \
83
	echo "Archive $$ANAME.gz created."
84

    
85
check: test
86
	rm -f *.tix *.mix
87
	./test
88
ifeq ($(T),markup)
89
	mkdir -p coverage
90
	hpc markup --destdir=coverage test $(HPCEXCL)
91
else
92
	hpc report test $(HPCEXCL)
93
endif
94

    
95
tags:
96
	find -name '*.hs' | xargs hasktags -e
97

    
98
.PHONY : all doc maintainer-clean clean dist check tags regen-version