work on chan_lcr
[lcr.git] / Makefile
1 #*****************************************************************************\
2 #*                                                                           **
3 #* Linux Call Router                                                         **
4 #*                                                                           **
5 #*---------------------------------------------------------------------------**
6 #* Copyright: Andreas Eversberg                                              **
7 #*                                                                           **
8 #* Makefile                                                                  **
9 #*                                                                           **
10 #*****************************************************************************/ 
11
12 WITH-CRYPTO = 42 # comment this out, if no libcrypto should be used
13 #WITH-ASTERISK = 42 # comment this out, if you don't require built-in Asterisk channel driver.
14 #WITH-SOCKET = 42 # compile for socket based mISDN (this options is far unfinished !!!)
15 # note: check your location and the names of libraries.
16
17 # select location to install
18 INSTALL_BIN = /usr/local/bin
19 INSTALL_DATA = /usr/local/lcr
20
21 ifdef WITH-SOCKET
22 LIBS += -lmisdn -lpthread
23 else
24 LIBS += -lisdnnet -lmISDN -lpthread
25 endif
26 CHANLIBS += -lmISDN
27
28 # give location of the curses or ncurses library
29 CURSES = -lncurses
30
31 CC = gcc
32 PP = g++
33 WIZZARD = ./wizzard
34 LCR = ./lcr
35 LCRADMIN = ./lcradmin
36 CFLAGS_LCRADMIN = -DINSTALL_DATA=\"$(INSTALL_DATA)\"
37 ifdef WITH-ASTERISK
38 CHAN_LCR = ./chan_lcr.so
39 endif
40 LCRWATCH = ./lcrwatch
41 GEN = ./gentones
42 GENW = ./genwave
43 GENRC = ./genrc
44 GENEXT = ./genextension
45 CFLAGS = -Wall -g -DINSTALL_DATA=\"$(INSTALL_DATA)\"
46 #CFLAGS = -Wall -g -DINSTALL_DATA=\"$(INSTALL_DATA)\"
47 ifdef WITH-CRYPTO
48 CFLAGS += -DCRYPTO
49 endif
50 ifdef WITH-SOCKET
51 CFLAGS += -DSOCKET_MISDN -I/usr/include/mISDNuser
52 endif
53 ifdef WITH-CRYPTO
54 LIBDIR += -L/usr/local/ssl/lib
55 CFLAGS += -I/usr/local/ssl/include
56 #LIBS += -lcrypto
57 LIBS += /usr/local/ssl/lib/libcrypto.a
58 endif
59
60 #all:
61 #       @echo Note that this version is a beta release. It is only for testing purpose.
62 #       @echo Please report any bug. To compile use \"make beta\".
63 #       @exit
64
65 all: $(CHAN_LCR) $(LCR) $(LCRADMIN) $(GEN) $(GENW) $(GENRC) $(GENEXT)
66         @sh -c 'grep -n strcpy *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use strcpy, use makro instead." ; exit -1 ; fi'
67         @sh -c 'grep -n strncpy *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use strncpy, use makro instead." ; exit -1 ; fi'
68         @sh -c 'grep -n strcat *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use strcat, use makro instead." ; exit -1 ; fi'
69         @sh -c 'grep -n strncat *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use strncat, use makro instead." ; exit -1 ; fi'
70         @sh -c 'grep -n sprintf *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use sprintf, use makro instead." ; exit -1 ; fi'
71         @sh -c 'grep -n snprintf *.c* --exclude chan_lcr.c --exclude bchannel.c ; if test $$''? = 0 ; then echo "dont use snprintf, use makro instead." ; exit -1 ; fi'
72         @echo "All LCR binaries done"
73         @sync
74         @exit
75
76 main.o: main.c *.h Makefile
77         $(PP) -c $(CFLAGS) main.c -o main.o
78
79 message.o: message.c *.h Makefile
80         $(PP) -c $(CFLAGS) message.c -o message.o
81
82 options.o: options.c *.h Makefile
83         $(PP) -c $(CFLAGS) options.c -o options.o
84
85 interface.o: interface.c *.h Makefile
86         $(PP) -c $(CFLAGS) interface.c -o interface.o
87
88 extension.o: extension.c *.h Makefile
89         $(PP) -c $(CFLAGS) extension.c -o extension.o
90
91 route.o: route.c *.h Makefile
92         $(PP) -c $(CFLAGS) route.c -o route.o
93
94 port.o: port.cpp *.h Makefile
95         $(PP) -c $(CFLAGS) port.cpp -o port.o
96
97 mISDN.o: mISDN.cpp *.h Makefile
98         $(PP) -c $(CFLAGS) mISDN.cpp -o mISDN.o
99
100 dss1.o: dss1.cpp ie.cpp *.h Makefile
101         $(PP) -c $(CFLAGS) dss1.cpp -o dss1.o
102
103 #knock.o: knock.cpp *.h Makefile
104 #       $(PP) -c $(CFLAGS) knock.cpp -o knock.o
105 #
106 vbox.o: vbox.cpp *.h Makefile
107         $(PP) -c $(CFLAGS) vbox.cpp -o vbox.o
108
109 mail.o: mail.c *.h Makefile
110         $(PP) -c $(CFLAGS) mail.c -o mail.o
111
112 action.o: action.cpp *.h Makefile
113         $(PP) -c $(CFLAGS) action.cpp -o action.o
114
115 action_vbox.o: action_vbox.cpp *.h Makefile
116         $(PP) -c $(CFLAGS) action_vbox.cpp -o action_vbox.o
117
118 action_efi.o: action_efi.cpp *.h Makefile
119         $(PP) -c $(CFLAGS) action_efi.cpp -o action_efi.o
120
121 endpoint.o: endpoint.cpp *.h Makefile
122         $(PP) -c $(CFLAGS) endpoint.cpp -o endpoint.o
123
124 endpointapp.o: endpointapp.cpp *.h Makefile
125         $(PP) -c $(CFLAGS) endpointapp.cpp -o endpointapp.o
126
127 apppbx.o: apppbx.cpp *.h Makefile
128         $(PP) -c $(CFLAGS) apppbx.cpp -o apppbx.o
129
130 callerid.o: callerid.c *.h Makefile
131         $(PP) -c $(CFLAGS) callerid.c -o callerid.o
132
133 join.o: join.cpp *.h Makefile
134         $(PP) -c $(CFLAGS) join.cpp -o join.o
135
136 joinpbx.o: joinpbx.cpp *.h Makefile
137         $(PP) -c $(CFLAGS) joinpbx.cpp -o joinpbx.o
138
139 joinremote.o: joinremote.cpp *.h Makefile
140         $(PP) -c $(CFLAGS) joinremote.cpp -o joinremote.o
141
142 cause.o: cause.c *.h Makefile
143         $(PP) -c $(CFLAGS) cause.c -o cause.o
144
145 alawulaw.o: alawulaw.c *.h Makefile
146         $(PP) -c $(CFLAGS) alawulaw.c -o alawulaw.o
147
148 tones.o: tones.c *.h Makefile
149         $(PP) -c $(CFLAGS) tones.c -o tones.o
150
151 crypt.o: crypt.cpp *.h Makefile
152         $(PP) -c $(CFLAGS) crypt.cpp -o crypt.o
153
154 genext.o: genext.c *.h Makefile
155         $(PP) -c $(CFLAGS) genext.c -o genext.o
156
157 socket_server.o: socket_server.c *.h Makefile
158         $(PP) -c $(CFLAGS) socket_server.c -o socket_server.o
159
160 trace.o: trace.c *.h Makefile
161         $(PP) -c $(CFLAGS) trace.c -o trace.o
162
163 chan_lcr.o: chan_lcr.c *.h Makefile
164         $(CC) -D_GNU_SOURCE  -c $(CFLAGS) chan_lcr.c -o chan_lcr.o
165
166 chan_lcr.so: chan_lcr.o *.h Makefile
167         gcc -shared -x $(LDFLAGS) -o chan_lcr.so chan_lcr.o
168
169 bchannel.o: bchannel.c *.h Makefile
170         $(CC) -c $(CFLAGS) bchannel.c -o bchannel.o
171
172
173 #$(WIZZARD): wizzard.c Makefile
174 #       $(PP) $(LIBDIR) $(CFLAGS) -lm wizzard.c \
175 #       -o $(WIZZARD) 
176
177 $(LCR): main.o \
178         options.o \
179         interface.o \
180         extension.o \
181         cause.o \
182         alawulaw.o \
183         tones.o \
184         message.o \
185         route.o \
186         port.o \
187         mISDN.o \
188         dss1.o \
189         vbox.o \
190         endpoint.o \
191         endpointapp.o \
192         apppbx.o \
193         callerid.o \
194         crypt.o \
195         action.o \
196         action_vbox.o \
197         action_efi.o \
198         mail.o \
199         join.o \
200         joinpbx.o \
201         joinremote.o \
202         socket_server.o \
203         trace.o
204         $(PP) $(LIBDIR) \
205         main.o \
206         options.o \
207         interface.o \
208         extension.o \
209         cause.o \
210         alawulaw.o \
211         tones.o \
212         message.o \
213         route.o \
214         port.o \
215         mISDN.o \
216         dss1.o \
217         vbox.o \
218         endpoint.o \
219         endpointapp.o \
220         apppbx.o \
221         callerid.o \
222         crypt.o \
223         action.o \
224         action_vbox.o \
225         action_efi.o \
226         mail.o \
227         join.o \
228         joinpbx.o \
229         joinremote.o \
230         socket_server.o \
231         trace.o \
232         $(LIBS) -o $(LCR) 
233
234 $(LCRADMIN): lcradmin.c cause.c *.h Makefile
235         $(PP) $(LIBDIR) $(CFLAGS_LCRADMIN) $(CURSES) -lm lcradmin.c cause.c \
236         -o $(LCRADMIN) 
237
238 $(CHAN_LCR): chan_lcr.o bchannel.o
239         $(CC) $(LIBDIR) chan_lcr.o bchannel.o \
240         $(CHANLIBS) -o $(CHAN_LCR) 
241
242 $(LCRWATCH): watch.c *.h Makefile
243         $(PP) $(LIBDIR) $(CFLAGS) -lm watch.c \
244         -o $(LCRWATCH) 
245
246 $(GEN): gentones.c *.h Makefile 
247         $(PP) $(LIBDIR) $(CFLAGS) -lm gentones.c \
248         -o $(GEN) 
249
250 $(GENW):genwave.c *.h Makefile 
251         $(PP) $(LIBDIR) $(CFLAGS) -lm genwave.c \
252         -o $(GENW) 
253
254 $(GENRC): genrc.c *.h Makefile
255         $(PP) $(LIBDIR) $(CFLAGS) -lm genrc.c \
256         -o $(GENRC) 
257
258 $(GENEXT): options.o extension.o genext.o
259         $(PP) $(CFLAGS) options.o extension.o genext.o -o $(GENEXT) 
260
261 #install:
262 #       @echo Remember, this is a beta release. To overwrite your current installed
263 #       @echo version, use \"make beta_install\".
264 #       @exit
265
266 install:
267         -killall -9 -w -q lcr # the following error must be ignored
268         cp $(LCR) $(INSTALL_BIN)
269         cp $(LCRADMIN) $(INSTALL_BIN)
270 ifdef WITH_ASTERISK
271         cp $(CHAN_LCR) $(INSTALL_BIN)
272 endif
273 #       cp $(LCRWATCH) $(INSTALL_BIN)
274         cp $(GEN) $(INSTALL_BIN)
275         cp $(GENW) $(INSTALL_BIN)
276         cp $(GENRC) $(INSTALL_BIN)
277         cp $(GENEXT) $(INSTALL_BIN)
278         mkdir -p $(INSTALL_DATA)
279         mkdir -p $(INSTALL_DATA)/extensions
280         @if test -a $(INSTALL_DATA)/options.conf ; then \
281                 echo "NOTE: options.conf already exists, not changed." ; else \
282                 cp -v default/options.conf $(INSTALL_DATA) ; fi
283         @if test -a $(INSTALL_DATA)/interface.conf ; then \
284                 echo "NOTE: interface.conf already exists, not changed." ; else \
285                 cp -v default/interface.conf $(INSTALL_DATA) ; fi
286         @if test -a $(INSTALL_DATA)/routing.conf ; then \
287                 echo "NOTE: routing.conf already exists, not changed." ; else \
288                 cp -v default/routing.conf $(INSTALL_DATA) ; fi
289         @if test -a $(INSTALL_DATA)/numbering_int.conf ; then \
290                 echo "NOTE: numbering_int.conf is obsolete, please use routing." ; fi
291         @if test -a $(INSTALL_DATA)/numbering_ext.conf ; then \
292                 echo "NOTE: numbering_ext.conf is obsolete, please use routing." ; fi
293         @if test -a $(INSTALL_DATA)/directory.list ; then \
294                 echo "NOTE: directory.list already exists, not changed." ; else \
295                 cp -v default/directory.list $(INSTALL_DATA) ; fi
296         @if test -a $(INSTALL_DATA)/tones_american ; then \
297                 echo "NOTE: american tones already exists, not overwritten." ; else \
298                 cp -a tones_american $(INSTALL_DATA) ; fi
299         @if test -a $(INSTALL_DATA)/tones_german ; then \
300                 echo "NOTE: german tones already exists, not overwritten." ; else \
301                 cp -a tones_german $(INSTALL_DATA) ; fi
302         @if test -a $(INSTALL_DATA)/vbox_german ; then \
303                 echo "NOTE: german vbox tones already exists, not overwritten." ; else \
304                 cp -a vbox_german $(INSTALL_DATA) ; fi
305         @if test -a $(INSTALL_DATA)/vbox_english ; then \
306                 echo "NOTE: english vbox tones already exists, not overwritten." ; else \
307                 cp -a vbox_english $(INSTALL_DATA) ; fi
308         @if test -a $(INSTALL_DATA)/tones_efi ; then \
309                 echo "NOTE: special efi tones already exists, not overwritten." ; else \
310                 cp -a tones_efi $(INSTALL_DATA) ; fi
311         sync
312
313 clean:
314         touch *
315         rm -f $(LCR) $(LCRADMIN) $(CHAN_LCR) $(LCRWATCH) $(GEN) $(GENW) $(GENRC) $(GENEXT)
316         rm -f *.o
317         rm -f .*.c.sw* .*.cpp.sw* .*.h.sw*
318         rm -f bla nohup.out a.out
319         rm -f debug*.log
320
321 tar:
322         make clean
323         cd .. &&  tar --exclude=.git -cvzf lcr_`date +%Y%m%d`.tar.gz lcr
324
325 start: $(LCR)
326         sync
327         -killall -9 -w -q lcr # the following error must be ignored
328         $(LCR) start
329
330 s: $(LCR)
331         sync
332         -killall -9 -w -q lcr # the following error must be ignored
333         $(LCR) start
334
335 fork: $(LCR)
336         sync
337         -killall -9 -w -q lcr # the following error must be ignored
338         $(LCR) fork
339
340 snapshot: clean
341         DIR=lcr-$$(date +"20%y_%m_%d") ; \
342         mkdir -p /tmp/$$DIR ; \
343         cp -a * /tmp/$$DIR ; \
344         cd /tmp/; \
345         tar czf $$DIR.tar.gz $$DIR
346
347