8425ff61c3a6a66a25ababd36a3d6ef49ddabdd1
[asterisk/asterisk.git] / channels / Makefile
1 #
2 # Asterisk -- A telephony toolkit for Linux.
3
4 # Makefile for channel drivers
5 #
6 # Copyright (C) 1999-2006, Digium, Inc.
7 #
8 # Mark Spencer <markster@digium.com>
9 #
10 # Edited By Belgarath <> Aug 28 2004
11 # Added bare bones ultrasparc-linux support.
12 #
13 # This program is free software, distributed under the terms of
14 # the GNU General Public License
15 #
16
17 MODS:=$(patsubst %.c,%.so,$(wildcard chan_*.c))
18
19 ifeq (${OSARCH},OpenBSD)
20   PTLIB=-lpt_OpenBSD_x86_r
21   H323LIB=-lh323_OpenBSD_x86_r
22 endif
23
24 ifeq (${OSARCH},Linux)
25   PTLIB=-lpt_linux_x86_r
26   H323LIB=-lh323_linux_x86_r
27   CHANH323LIB=-ldl
28 endif
29
30 ifeq (${OSARCH},CYGWIN)
31   CYGSOLINK=-Wl,--out-implib=lib$@.a -Wl,--export-all-symbols
32   CYGSOLIB=-L.. -L. -L../res -lasterisk.dll -lres_features.so
33   CYG_CHAN_AGENT=-lres_monitor.so
34 endif
35
36 ifeq ($(PROC),sparc64)
37   PROC=ultrasparc
38   CFLAGS += -mtune=$(PROC) -O3 -pipe -fomit-frame-pointer -mcpu=v8
39 endif
40
41 ifeq (${OSARCH},FreeBSD)
42   PTLIB=-lpt_FreeBSD_x86_r
43   H323LIB=-lh323_FreeBSD_x86_r
44   CHANH323LIB=-pthread
45 endif
46
47 ifeq (${OSARCH},NetBSD)
48   PTLIB=-lpt_NetBSD_x86_r
49   H323LIB=-lh323_NetBSD_x86_r
50 endif
51
52 ifeq (${OSARCH},Darwin)
53   MODS:=$(filter-out chan_oss.so,$(MODS))
54 endif
55
56 ifeq (${OSARCH},SunOS)
57   MODS:=$(filter-out chan_oss.so,$(MODS))
58   SOLINK+=-lrt
59 endif
60
61 ifeq (${OSARCH},CYGWIN)
62   MODS:=$(filter-out chan_oss.so,$(MODS))
63 endif
64
65 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/ixjuser.h $(CROSS_COMPILE_TARGET)/usr/local/include/ixjuser.h),)
66   MODS:=$(filter-out chan_phone.so,$(MODS))
67 endif
68
69 ifeq (${WITH_SMDI},1)
70 CFLAGS+=-DWITH_SMDI
71 endif
72
73 ifeq ($(wildcard h323/libchanh323.a),)
74   MODS:=$(filter-out chan_h323.so,$(MODS))
75 endif
76
77 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/mISDNuser/mISDNlib.h),)
78   MODS:=$(filter-out chan_misdn.so,$(MODS))
79 else
80   CFLAGS+=-Imisdn 
81 endif
82
83 CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
84
85 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
86   MODS:=$(filter-out chan_alsa.so,$(MODS))
87 endif
88
89 ifndef WITHOUT_PRI
90 ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libpri.so.1 $(CROSS_COMPILE_TARGET)/usr/local/lib/libpri.so.1),)
91   CFLAGS+=-DZAPATA_PRI
92   ZAPPRI=-lpri
93 endif
94 endif # WITHOUT_PRI
95
96 ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libmfcr2.so.1 $(CROSS_COMPILE_TARGET)/usr/local/lib/libmfcr2.so.1),)
97   CFLAGS+=-DZAPATA_R2
98   ZAPR2=-lmfcr2
99 endif
100
101 ALSA_SRC=chan_alsa.c
102
103 ifneq ($(wildcard alsa-monitor.h),)
104   CFLAGS+=-DALSA_MONITOR
105   ALSA_SRC+=alsa-monitor.h
106 endif
107
108 ifndef WITHOUT_ZAPTEL
109 ZAPAVAIL:=$(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)
110 endif
111
112 ifeq (${ZAPAVAIL},)
113   MODS:=$(filter-out chan_zap.so,$(MODS))
114 else
115   ifeq (${OSARCH},NetBSD)
116     SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/pkg/lib
117   endif
118   ifeq (${OSARCH},FreeBSD)
119     SOLINK+=-L$(CROSS_COMPILE_TARGET)/usr/local/lib
120   endif
121   CFLAGS+=-DIAX_TRUNKING
122 endif
123
124 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/vpbapi.h),)
125   MODS:=$(filter-out chan_vpb.so,$(MODS))
126 else
127   CFLAGS+=-DLINUX
128 endif
129
130 CFLAGS+=-DCRYPTO
131
132 ifneq ($(OSARCH),CYGWIN)
133   CFLAGS+=-fPIC
134 endif
135
136 CFLAGS+=#-DVOFRDUMPER
137
138 ZAPDIR=/usr/lib
139
140 ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/nbs.h),)
141   MODS:=$(filter-out chan_nbs.so,$(MODS))
142 endif
143
144 ifndef OPENH323DIR
145   OPENH323DIR=$(HOME)/openh323
146 endif
147
148 ifndef PWLIBDIR
149   PWLIBDIR=$(HOME)/pwlib
150 endif
151
152 all: depend $(MODS) 
153
154 clean:
155         rm -f *.so *.o .depend
156         rm -f busy.h ringtone.h gentone gentone-ulaw
157
158 %.so : %.o
159         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} ${LIBS}
160
161 ifneq ($(wildcard .depend),)
162   include .depend
163 endif
164
165 ifneq ($(wildcard h323/Makefile.ast),)
166   include h323/Makefile.ast
167 endif
168
169 ifneq ($(wildcard misdn/Makefile.ast),)
170   include misdn/Makefile.ast
171 endif
172
173 gentone: gentone.c
174         $(HOST_CC) -o gentone gentone.c -lm
175
176 gentone-ulaw: gentone-ulaw.c
177         $(HOST_CC) -o gentone-ulaw gentone-ulaw.c -lm
178
179 busy.h: gentone
180         ./gentone busy 480 620
181
182 ringtone.h: gentone
183         ./gentone ringtone 440 480
184
185 chan_oss.o: chan_oss.c busy.h ringtone.h
186
187 chan_alsa.o: chan_alsa.c busy.h ringtone.h
188
189 ifeq (${OSARCH},OpenBSD)
190 chan_oss.so: chan_oss.o
191         $(CC) $(SOLINK) -o $@ chan_oss.o -lossaudio
192 endif
193 ifeq (${OSARCH},NetBSD)
194 chan_oss.so: chan_oss.o
195         $(CC) $(SOLINK) -o $@ chan_oss.o -lossaudio
196 endif
197
198 chan_iax2.so: chan_iax2.o iax2-parser.o iax2-provision.o
199         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_iax2.o iax2-parser.o iax2-provision.o ${CYGSOLIB}
200
201 chan_zap.o: chan_zap.c
202         $(CC) -c $(CFLAGS) -o chan_zap.o chan_zap.c
203
204 chan_zap.so: chan_zap.o
205         $(CC) $(SOLINK) -o $@ $<  $(ZAPPRI) $(ZAPR2) -ltonezone
206
207 chan_sip.so: chan_sip.o
208         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_sip.o ${CYGSOLIB}
209
210 chan_agent.so: chan_agent.o
211         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} chan_agent.o ${CYGSOLIB} ${CYG_CHAN_AGENT}
212
213 chan_alsa.o: $(ALSA_SRC)
214
215 chan_alsa.so: chan_alsa.o
216         $(CC) $(SOLINK) -o $@ $< -lasound -lm -ldl
217
218 chan_nbs.so: chan_nbs.o
219         $(CC) $(SOLINK) -o $@ $< -lnbs
220
221 chan_vpb.o: chan_vpb.c
222         $(CXX) -c $(CFLAGS) -o $@ chan_vpb.c
223
224 chan_vpb.so: chan_vpb.o
225          $(CXX) $(SOLINK) -o $@ $< -lvpb -lpthread -lm -ldl
226
227 ifeq (${OSARCH},Linux)
228 chan_h323.so: chan_h323.o h323/libchanh323.a h323/Makefile.ast
229         $(CC) $(SOLINK) $(H323LDFLAGS) -o $@ $< h323/libchanh323.a $(H323LDLIBS) -lstdc++
230 else
231 chan_h323.so: chan_h323.o h323/libchanh323.a
232         $(CC) $(SOLINK) -o $@ $< h323/libchanh323.a $(CHANH323LIB) -L$(PWLIBDIR)/lib $(PTLIB) -L$(OPENH323DIR)/lib $(H323LIB) -L/usr/lib -lcrypto -lssl -lexpat
233 endif
234
235 misdn/chan_misdn_lib.a:
236         make -C misdn
237
238 chan_misdn.so: chan_misdn.o chan_misdn_config.o misdn/chan_misdn_lib.a
239         $(CC) -shared -Xlinker -x -L/usr/lib -o $@ $^ -lisdnnet -lmISDN
240
241 chan_misdn.o: chan_misdn.c
242         $(CC) $(CFLAGS) -DCHAN_MISDN_VERSION=\"0.3.0\" -c $< -o $@
243
244 chan_misdn_config.o: chan_misdn_config.c misdn/chan_misdn_config.h
245         $(CC) $(CFLAGS) -DCHAN_MISDN_VERSION=\"0.3.0\" -c $< -o $@
246
247
248 install: all
249         for x in $(MODS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
250
251 uninstall:
252
253 depend: .depend
254
255 .depend:
256         ../build_tools/mkdep $(CFLAGS) `ls *.c`
257
258 env:
259         env