automake: handle doc/ man-pages
[dahdi/tools.git] / Makefile.legacy
1 #
2 # Makefile for DAHDI tools
3 #
4 # Copyright (C) 2001-2010 Digium, Inc.
5 #
6 #
7
8 ifeq ($(strip $(foreach var,clean distclean dist-clean,$(findstring $(var),$(MAKECMDGOALS)))),)
9 endif
10
11 ifeq ($(strip $(foreach var,clean distclean dist-clean,$(findstring $(var),$(MAKECMDGOALS)))),)
12  ifneq ($(wildcard makeopts),)
13   include makeopts
14  endif
15 endif
16
17 OPTFLAGS=-O2
18 CFLAGS+=-I. $(OPTFLAGS) -g -fPIC -Wall -DBUILDING_TONEZONE #-DTONEZONE_DRIVER
19 ifneq (,$(findstring ppc,$(UNAME_M)))
20 CFLAGS+=-fsigned-char
21 endif
22 ifneq (,$(findstring x86_64,$(UNAME_M)))
23 CFLAGS+=-m64
24 endif
25
26 ifeq ($(DAHDI_DEVMODE),yes)
27   CFLAGS+=-Werror -Wunused -Wundef $(DAHDI_DECLARATION_AFTER_STATEMENT) -Wmissing-format-attribute -Wformat-security #-Wformat=2
28 endif
29
30 ROOT_PREFIX=
31
32 # extra cflags to build dependencies. Recursively expanded.
33 MAKE_DEPS= -MD -MT $@ -MF .$(subst /,_,$@).d -MP
34
35 CFLAGS+=$(DAHDI_INCLUDE)
36
37 CHKCONFIG       := $(wildcard /sbin/chkconfig)
38 UPDATE_RCD      := $(wildcard /usr/sbin/update-rc.d)
39 ifeq (,$(DESTDIR))
40   ifneq (,$(CHKCONFIG))
41     ADD_INITD   := $(CHKCONFIG) --add dahdi
42   else
43     ifneq (,$(UPDATE_RCD))
44       ADD_INITD := $(UPDATE_RCD) dahdi defaults 15 30
45     endif
46   endif
47 endif
48
49 INITRD_DIR      := $(firstword $(wildcard $(DESTDIR)/etc/rc.d/init.d $(DESTDIR)/etc/init.d))
50 ifneq (,$(INITRD_DIR))
51   INIT_TARGET   := $(INITRD_DIR)/dahdi
52   COPY_INITD    := install -D dahdi.init $(INIT_TARGET)
53 endif
54
55 RCCONF_FILE     = /etc/dahdi/init.conf
56 MODULES_FILE    = /etc/dahdi/modules
57 GENCONF_FILE    = /etc/dahdi/genconf_parameters
58 MODPROBE_FILE   = /etc/modprobe.d/dahdi.conf
59 BLACKLIST_FILE  = /etc/modprobe.d/dahdi.blacklist.conf
60 BASH_COMP_DIR   = /etc/bash_completion.d
61 BASH_COMP_FILE  = $(BASH_COMP_DIR)/dahdi
62
63 NETSCR_DIR      := $(firstword $(wildcard $(DESTDIR)/etc/sysconfig/network-scripts ))
64 ifneq (,$(NETSCR_DIR))
65   NETSCR_TARGET := $(NETSCR_DIR)/ifup-hdlc
66   COPY_NETSCR   := install -D ifup-hdlc $(NETSCR_TARGET)
67 endif
68
69 TOOLSVERSION=$(shell build_tools/make_version . dahdi/tools)
70
71 LTZ_A:=libtonezone.a
72 LTZ_A_OBJS:=zonedata.o tonezone.o version.o
73 LTZ_SO:=libtonezone.so
74 LTZ_SO_OBJS:=zonedata.lo tonezone.lo version.o
75 LTZ_SO_MAJOR_VER:=2
76 LTZ_SO_MINOR_VER:=0
77
78 # sbindir, libdir, includedir and mandir are defined in makeopts
79 # (from configure).
80 BIN_DIR:=$(sbindir)
81 LIB_DIR:=$(libdir)
82 INC_DIR:=$(includedir)/dahdi
83 DATA_DIR:=${datadir}/dahdi
84 CONFIG_DIR:=$(sysconfdir)/dahdi
85 CONFIG_FILE:=$(CONFIG_DIR)/system.conf
86 UDEVRULES_DIR:=$(sysconfdir)/udev/rules.d
87
88 # Utilities we build with a standard build procedure:
89 UTILS           = dahdi_tool dahdi_test dahdi_monitor dahdi_speed sethdlc dahdi_cfg \
90                   fxstest fxotune dahdi_diag dahdi_scan
91
92 # some tests:
93 UTILS           += patgen pattest patlooptest hdlcstress hdlctest hdlcgen \
94                    hdlcverify timertest dahdi_maint
95
96
97 BINS:=fxotune dahdi_cfg dahdi_monitor dahdi_speed dahdi_test dahdi_scan dahdi_maint
98 ifeq    (1,$(PBX_NEWT))
99         BINS    += dahdi_tool
100 endif
101 ifeq    (1,$(PBX_HDLC))
102         BINS    += sethdlc
103 endif
104 ASSIGNED_DATA_SCRIPTS:=\
105         dahdi_handle_device     \
106         dahdi_span_config       \
107         dahdi_auto_assign_compat        \
108         span_config.d/10-dahdi-cfg      \
109         span_config.d/20-fxotune        \
110         span_config.d/50-asterisk       \
111         handle_device.d/10-span-types   \
112         handle_device.d/20-span-assignments
113
114 ASSIGNED_UTILS:=dahdi_span_assignments dahdi_span_types \
115         dahdi_waitfor_span_assignments
116 ASSIGNED_CONF:=assigned-spans.conf.sample span-types.conf.sample
117
118 TEST_BINS:=patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest dahdi_maint
119 # All the man pages. Not just installed ones:
120 GROFF_PAGES     := $(wildcard doc/*.8 xpp/*.8)
121 GROFF_HTML      := $(GROFF_PAGES:%=%.html)
122
123 GENERATED_DOCS  := $(GROFF_HTML) README.html README.Astribank.html
124
125 all: prereq programs
126
127 libs: $(LTZ_SO) $(LTZ_A)
128
129 programs: libs utils
130
131 utils: $(BINS)
132
133 tests: $(TEST_BINS)
134
135 $(UTILS): %: %.o
136
137 $(UTILS): version.o
138
139 %.o: %.c
140         $(CC) $(CFLAGS) $(MAKE_DEPS) -c -o $@ $<
141
142 %.lo: %.c
143         $(CC) $(CFLAGS) $(MAKE_DEPS) -c -o $@ $<
144
145 %: %.o
146         $(CC) $(LDFLAGS) $^ $(LIBS) -o $@
147
148 prereq: config.status
149
150 dahdi_tool: CFLAGS+=$(NEWT_INCLUDE)
151 dahdi_tool: LIBS+=$(NEWT_LIB)
152
153 dahdi_speed: CFLAGS+=-O0
154
155 $(LTZ_A): $(LTZ_A_OBJS)
156         ar rcs $@ $^
157         ranlib $@
158
159 $(LTZ_SO): $(LTZ_SO_OBJS)
160         $(CC) $(CFLAGS) -shared -Wl,-soname,$(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) -o $@ $^ -lm
161
162 dahdi_cfg: $(LTZ_A)
163 dahdi_cfg: LIBS+=-lm -lpthread
164 dahdi_pcap:
165         $(CC) $(CFLAGS) dahdi_pcap.c -lpcap -o $@ $<
166         
167
168 fxstest: $(LTZ_SO)
169 fxstest: LIBS+=-lm
170 fxotune: LIBS+=-lm
171
172 tonezones.txt: zonedata.c
173         perl -ne 'next unless (/\.(country|description) = *"([^"]*)/); \
174                 print (($$1 eq "country")? "* $$2\t":"$$2\n");' $<  \
175         >$@
176
177 %.asciidoc: %.sample
178         perl -n -e \
179                 'if (/^#($$|\s)(.*)/){ if (!$$in_doc){print "\n"}; $$in_doc=1; print "$$2\n" } else { if ($$in_doc){print "\n"}; $$in_doc=0; print "  $$_" }' \
180                 $< \
181         | perl -p -e 'if (/^  #?(\w+)=/ && ! exists $$cfgs{$$1}){my $$cfg = $$1; $$cfgs{$$cfg} = 1; s/^/\n[[cfg_$$cfg]]\n/}'  >$@
182
183 docs: $(GENERATED_DOCS)
184
185 genconf_parameters.sample: xpp/genconf_parameters
186         cp $< $@
187
188 README.html: README system.conf.asciidoc init.conf.asciidoc tonezones.txt \
189   UPGRADE.txt genconf_parameters.asciidoc assigned-spans.conf.asciidoc \
190   span-types.conf.asciidoc
191         $(ASCIIDOC) -n -a toc -a toclevels=4 $<
192
193 README.Astribank.html: xpp/README.Astribank
194         $(ASCIIDOC) -o $@ -n -a toc -a toclevels=4 $<
195
196 # on Debian: this requires the full groff, not just groff-base.
197 %.8.html: %.8
198         man -Thtml $^ >$@
199
200 htmlman: $(GROFF_HTML)
201
202 install: all install-programs
203         @echo "###################################################"
204         @echo "###"
205         @echo "### DAHDI tools installed successfully."
206         @echo "### If you have not done so before, install init scripts with:"
207         @echo "###"
208         @echo "###   make config"
209         @echo "###"
210         @echo "###################################################"
211
212 install-programs: install-utils install-libs
213
214 install-utils: utils
215 ifneq (,$(BINS))
216         install -d $(DESTDIR)$(BIN_DIR)
217         install  $(BINS) $(DESTDIR)$(BIN_DIR)/
218 endif
219 ifeq (,$(wildcard $(DESTDIR)$(CONFIG_FILE)))
220         $(INSTALL) -d $(DESTDIR)$(CONFIG_DIR)
221         $(INSTALL) -m 644 system.conf.sample $(DESTDIR)$(CONFIG_FILE)
222 endif
223         install -d $(DESTDIR)$(DATA_DIR)
224         tar cf - -C hotplug $(ASSIGNED_DATA_SCRIPTS) | tar xf - -C $(DESTDIR)$(DATA_DIR)/
225         install $(ASSIGNED_UTILS) $(DESTDIR)/$(BIN_DIR)/
226         install -m 644 $(ASSIGNED_CONF) $(DESTDIR)/$(CONFIG_DIR)/
227         install -d $(DESTDIR)$(BASH_COMP_DIR)
228         install -m 644 dahdi-bash-completion $(DESTDIR)$(BASH_COMP_FILE)
229
230 install-libs: libs
231         $(INSTALL) -d -m 755 $(DESTDIR)/$(LIB_DIR)
232         $(INSTALL) -m 755 $(LTZ_A) $(DESTDIR)$(LIB_DIR)/
233         $(INSTALL) -m 755 $(LTZ_SO) $(DESTDIR)$(LIB_DIR)/$(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER)
234 ifeq (,$(DESTDIR))
235         if [ `id -u` = 0 ]; then \
236                 /sbin/ldconfig || : ;\
237         fi
238 endif
239         rm -f $(DESTDIR)$(LIB_DIR)/$(LTZ_SO)
240         $(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
241                 $(DESTDIR)$(LIB_DIR)/$(LTZ_SO).$(LTZ_SO_MAJOR_VER)
242         $(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
243                 $(DESTDIR)$(LIB_DIR)/$(LTZ_SO)
244         # Overwrite the 1.0 links out there.  dahdi-tools 2.0.0 installed
245         # 1.0 links but dahdi-tools changed them to 2.0 in order to explicitly
246         # break applications linked with zaptel.  But, this also meant that
247         # applications linked with libtonezone.so.1.0 broke when dahdi-tools
248         # 2.1.0 was installed.
249         $(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
250                 $(DESTDIR)$(LIB_DIR)/$(LTZ_SO).1.0
251         $(LN) -sf $(LTZ_SO).$(LTZ_SO_MAJOR_VER).$(LTZ_SO_MINOR_VER) \
252                 $(DESTDIR)$(LIB_DIR)/$(LTZ_SO).1
253 ifneq (no,$(USE_SELINUX))
254   ifeq (,$(DESTDIR))
255         /sbin/restorecon -v $(DESTDIR)$(LIB_DIR)/$(LTZ_SO)
256   endif
257 endif
258         $(INSTALL) -d -m 755 $(DESTDIR)/$(INC_DIR)
259         $(INSTALL) -m 644 tonezone.h $(DESTDIR)$(INC_DIR)/
260
261 install-tests: tests
262 ifneq (,$(TEST_BINS))
263         install -d $(DESTDIR)$(BIN_DIR)
264         install  $(TEST_BINS) $(DESTDIR)$(BIN_DIR)/
265 endif
266
267 config:
268 ifneq (,$(COPY_INITD))
269         $(COPY_INITD)
270 endif
271 ifeq (,$(wildcard $(DESTDIR)$(RCCONF_FILE)))
272         $(INSTALL) -D -m 644 init.conf.sample $(DESTDIR)$(RCCONF_FILE)
273 endif
274 ifeq (,$(wildcard $(DESTDIR)$(MODULES_FILE)))
275         $(INSTALL) -D -m 644 modules.sample $(DESTDIR)$(MODULES_FILE)
276 endif
277 ifeq (,$(wildcard $(DESTDIR)$(GENCONF_FILE)))
278         $(INSTALL) -D -m 644 xpp/genconf_parameters $(DESTDIR)$(GENCONF_FILE)
279 endif
280 ifeq (,$(wildcard $(DESTDIR)$(MODPROBE_FILE)))
281         $(INSTALL) -D -m 644 modprobe.conf.sample $(DESTDIR)$(MODPROBE_FILE)
282 endif
283 ifeq (,$(wildcard $(DESTDIR)$(BLACKLIST_FILE)))
284         $(INSTALL) -D -m 644 blacklist.sample $(DESTDIR)$(BLACKLIST_FILE)
285 endif
286         $(INSTALL) -d $(DESTDIR)$(UDEVRULES_DIR)
287         $(INSTALL) -D -m 644 dahdi.rules $(DESTDIR)$(UDEVRULES_DIR)/
288 ifneq (,$(COPY_NETSCR))
289         $(COPY_NETSCR)
290 endif
291 ifneq (,$(ADD_INITD))
292         $(ADD_INITD)
293 endif
294         @echo "DAHDI has been configured."
295         @echo ""
296         @echo "List of detected DAHDI devices:"
297         @echo ""
298         @if [ `xpp/dahdi_hardware | tee /dev/stderr | wc -l` -eq 0 ]; then \
299                 echo "No hardware found"; \
300         else \
301                 echo ""; \
302                 echo "run 'dahdi_genconf modules' to load support for only " ;\
303                 echo "the DAHDI hardware installed in this system.  By "; \
304                 echo "default support for all DAHDI hardware is loaded at "; \
305                 echo "DAHDI start. "; \
306         fi
307
308 dist:
309         @./build_tools/make_dist "dahdi-tools" "$(TOOLSVERSION)"
310
311 clean:
312         rm -f $(BINS) $(TEST_BINS)
313         rm -f *.o dahdi_cfg tzdriver sethdlc
314         rm -f $(LTZ_SO) $(LTZ_A) *.lo
315         rm -f libtonezone*
316         rm -f fxotune
317         rm -f core
318         rm -f dahdi_cfg-shared fxstest
319         rm -rf $(GENERATED_DOCS) *.asciidoc tonezones.txt
320         rm -f dahdi_pcap
321
322 distclean: dist-clean
323
324 dist-clean: clean
325         rm -f makeopts
326         rm -f config.log config.status
327         rm -f .*.d
328
329 config.status: configure
330         @CFLAGS="" ./configure
331         @echo "****"
332         @echo "**** The configure script was just executed, so 'make' needs to be"
333         @echo "**** restarted."
334         @echo "****"
335         @exit 1
336
337 .PHONY: distclean dist-clean clean all install programs tests devel data config install-programs install-libs prereq dist
338
339 FORCE:
340
341 ifneq ($(wildcard .*.d),)
342    include .*.d
343 endif