summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: c4d7f0eba2de461d827bdcf7d21820d3b3e95a67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
SHELL = /bin/sh
VERSION = 1.38
IGNORE = ~|CVS|var/|smokeping-$(VERSION)/smokeping-$(VERSION)|cvsignore|rej|orig|DEAD|pod2htm[di]\.tmp
GROFF = groff
.PHONY: man html txt ref examples check-examples patch killdoc doc tar rename-man
.SUFFIXES:
.SUFFIXES: .pm .pod .txt .html .man .1 .3 .5 .7

DOCS = $(filter-out smokeping_config,$(wildcard doc/*.pod)) doc/smokeping_examples.pod # section 7
DOCSCONFIG := doc/smokeping_config.pod # section 5
PM :=  lib/ISG/ParseConfig.pm lib/Smokeping.pm lib/Smokeping/Examples.pm
PODPROBE :=  $(wildcard lib/Smokeping/probes/*.pm)
PODMATCH :=  $(wildcard lib/Smokeping/matchers/*.pm)

DOCSBASE = $(subst .pod,,$(DOCS))
MODBASE = $(subst .pm,,$(subst lib/,doc/,$(PM))) \
	$(subst .pm,,$(subst lib/,doc/,$(PODPROBE))) \
	$(subst .pm,,$(subst lib/,doc/,$(PODMATCH)))
PROGBASE = doc/smokeping doc/smokeping.cgi
DOCSCONFIGBASE = doc/smokeping_config

BASE = $(DOCSBASE) $(MODBASE) $(PROGBASE) $(DOCSCONFIGBASE)

MAN = $(addsuffix .3,$(MODBASE)) $(addsuffix .5,$(DOCSCONFIGBASE)) $(addsuffix .7,$(DOCSBASE)) $(addsuffix .1,$(PROGBASE))
TXT = $(addsuffix .txt,$(BASE))
HTML= $(addsuffix .html,$(BASE))

POD2MAN = pod2man --release=$(VERSION) --center=SmokePing $<
MAN2TXT = $(GROFF) -man -Tascii $< > $@
# pod2html apparently needs to be in the target directory to get L<> links right
POD2HTML= cd $(dir $@); top=$(shell echo $(dir $@)|sed 's,[^/]*/,../,g'); pod2html --infile=$(CURDIR)/$< --outfile=$(notdir $@) --noindex --htmlroot=. --podroot=. --podpath=$${top}doc:$${top}bin --title=$*
# we go to this trouble to ensure that MAKEPOD only uses modules in the installation directory
MAKEPOD= perl -Ilib -I/usr/pack/rrdtool-1.0.47-to/lib/perl -mSmokeping -e 'Smokeping::main()' -- --makepod
GENEX= perl -Ilib -I/usr/pack/rrdtool-1.0.47-to/lib/perl -mSmokeping -e 'Smokeping::main()' -- --gen-examples

doc/%.7: doc/%.pod
	$(POD2MAN) --section 7 > $@
doc/%.5: doc/%.pod
	$(POD2MAN) --section 5 > $@

doc/Smokeping.3: lib/Smokeping.pm
	$(POD2MAN) --section 3 > $@
doc/Smokeping/Examples.3: lib/Smokeping/Examples.pm
	$(POD2MAN) --section 3 > $@

doc/Smokeping/probes/%.pod: lib/Smokeping/probes/%.pm
	$(MAKEPOD) Smokeping::probes::$* > $@

doc/Smokeping/probes/%.3: doc/Smokeping/probes/%.pod
	$(POD2MAN) --section 3 > $@
doc/Smokeping/matchers/%.3: lib/Smokeping/matchers/%.pm
	$(POD2MAN) --section 3 > $@
doc/ISG/%.3: lib/ISG/%.pm
	$(POD2MAN) --section 3 > $@
doc/smokeping.1: bin/smokeping.dist
	$(POD2MAN) --section 1 > $@
doc/smokeping.cgi.1: htdocs/smokeping.cgi.dist
	$(POD2MAN) --section 1 > $@

doc/%.html: doc/%.pod
	$(POD2HTML)
doc/Smokeping.html: lib/Smokeping.pm
	$(POD2HTML)
doc/Smokeping/Examples.html: lib/Smokeping/Examples.pm
	$(POD2HTML)
doc/Smokeping/matchers/%.html: lib/Smokeping/matchers/%.pm
	$(POD2HTML)
doc/ISG/%.html: lib/ISG/%.pm
	$(POD2HTML)
doc/smokeping.html: bin/smokeping.dist
	$(POD2HTML)
doc/smokeping.cgi.html: htdocs/smokeping.cgi.dist
	$(POD2HTML)

doc/%.txt: doc/%.1
	$(MAN2TXT)
doc/%.txt: doc/%.3
	$(MAN2TXT)
doc/%.txt: doc/%.5
	$(MAN2TXT)
doc/%.txt: doc/%.7
	$(MAN2TXT)

man: $(MAN)

html: $(HTML)

txt: $(TXT)

rename-man: $(MAN)
	for j in probes matchers; do \
	  for i in doc/Smokeping/$$j/*.3; do \
	    mv $$i `echo $$i | sed s,$$j/,$$j/Smokeping::$$j::,`; \
	  done; \
	done
	mv doc/ISG/ParseConfig.3 doc/ISG/ISG::ParseConfig.3
	mv doc/Smokeping/Examples.3 doc/Smokeping/Smokeping::Examples.3

ref: doc/smokeping_config.pod

examples:
	$(GENEX)

check-examples:
	$(GENEX) --check

doc/smokeping_config.pod: lib/Smokeping.pm
	$(MAKEPOD) > $@
doc/smokeping_examples.pod: lib/Smokeping/Examples.pm etc/config.dist
	$(GENEX)
patch:
	perl -i~ -p -e 's/VERSION="\d.*?"/VERSION="$(VERSION)"/' lib/Smokeping.pm 
	perl -i~ -p -e 's/Smokeping \d.*?;/Smokeping $(VERSION);/' bin/smokeping.dist htdocs/smokeping.cgi.dist

killdoc:
	-rm doc/*.[1357] doc/*.txt doc/*.html doc/Smokeping/* doc/Smokeping/probes/* doc/Smokeping/matchers/* doc/ISG/* doc/examples/* doc/smokeping_examples.pod doc/smokeping_config.pod

doc:    killdoc ref examples man html txt rename-man

tar:	doc patch
	-ln -s . smokeping-$(VERSION)
	find smokeping-$(VERSION)/* -type f -follow -o -type l | egrep -v '$(IGNORE)' | gtar -T - -czvf smokeping-$(VERSION).tar.gz
	rm smokeping-$(VERSION)
	
dist:   tar
	mv smokeping-$(VERSION).tar.gz /home/oetiker/public_html/webtools/smokeping/pub/
	cp CHANGES /home/oetiker/public_html/webtools/smokeping/pub/CHANGES