9eb4dff908f495e713bf22bd0b301930f83bdf03
[asterisk/asterisk.git] / codecs / Makefile
1 #
2 # Asterisk -- A telephony toolkit for Linux.
3
4 # Makefile for codec modules
5 #
6 # Copyright (C) 1999-2005, Digium
7 #
8 # Mark Spencer <markster@digium.com>
9 #
10 # This program is free software, distributed under the terms of
11 # the GNU General Public License
12 #
13
14 ifeq (${OSARCH},CYGWIN)
15 CYGSOLINK=-Wl,--out-implib=lib$@.a -Wl,--export-all-symbols
16 CYGSOLIB=-L.. -L. -lasterisk.dll
17 else
18 CFLAGS+=-fPIC
19 endif
20
21 ifneq ($(wildcard g723.1/coder.c),)
22   MODG723=codec_g723_1.so
23   LIBG723=g723.1/libg723.a
24 endif
25
26 ifneq ($(wildcard g723.1b/coder2.c),)
27   MODG723+=codec_g723_1b.so
28   LIBG723B=g723.1b/libg723b.a
29 endif
30
31 UI_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/include/speex.h)
32 UIS_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/include/speex/speex.h)
33 ULI_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/speex.h)
34 ULIS_SPEEX=$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/speex/speex.h)
35 ifneq (${UI_SPEEX},)
36   MODSPEEX=codec_speex.so
37   LIBSPEEX+=-lspeex -lm
38 endif
39 ifneq (${UIS_SPEEX},)
40   MODSPEEX=codec_speex.so
41   CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/include/speex
42   LIBSPEEX+=-lspeex -lm
43 endif
44 ifneq (${ULI_SPEEX},)
45   MODSPEEX=codec_speex.so
46   CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include
47   LIBSPEEX=-L$(CROSS_COMPILE_TARGET)/usr/local/lib
48   LIBSPEEX+=-lspeex -lm
49 endif
50 ifneq (${ULIS_SPEEX},)
51   MODSPEEX=codec_speex.so
52   CFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include/speex
53   LIBSPEEX=-L$(CROSS_COMPILE_TARGET)/usr/local/lib
54   LIBSPEEX+=-lspeex -lm
55 endif
56
57 ifneq ($(wildcard ilbc/iLBC_decode.h),)
58   MODILBC=codec_ilbc.so
59   LIBILBC=ilbc/libilbc.a
60 endif
61
62
63 LIBGSM_PATH:=/usr/local/include /usr/include
64 LIBGSM_SYSTEM_HEADERS:=$(wildcard $(LIBGSM_PATH:%=$(CROSS_COMPILE_TARGET)%/gsm/gsm.h))
65 ifneq (,$(LIBGSM_SYSTEM_HEADERS))
66 LIBGSM=-lgsm
67 LIBGSMT=
68 CFLAGS+=-DUSE_EXTERNAL_GSM_LIB
69 else
70 LIBGSM=gsm/lib/libgsm.a
71 LIBGSMT=$(LIBGSM)
72 CFLAGS+=-I.
73 endif
74
75 LIBLPC10=lpc10/liblpc10.a
76
77 CODECS+=$(MODG723) $(MODSPEEX) $(MODILBC) codec_gsm.so codec_lpc10.so  \
78         codec_adpcm.so codec_ulaw.so codec_alaw.so codec_a_mu.so \
79         codec_g726.so
80
81 all: depend $(CODECS)
82
83 clean:
84         rm -f *.so *.o .depend
85         [ ! -d g723.1 ] || $(MAKE) -C g723.1 clean
86         [ ! -d g723.1b ] || $(MAKE) -C g723.1b clean
87         $(MAKE) -C gsm clean
88         $(MAKE) -C lpc10 clean
89         $(MAKE) -C ilbc clean
90
91 $(LIBG723):
92         $(MAKE) -C g723.1 all
93
94 $(LIBGSM):
95         $(MAKE) -C gsm lib/libgsm.a
96
97 $(LIBG723B):
98         $(MAKE) -C g723.1b all
99
100 $(LIBLPC10):
101         $(MAKE) -C lpc10 all
102
103 $(LIBILBC):
104         $(MAKE) -C ilbc all
105
106 $(MODILBC): codec_ilbc.o $(LIBILBC)
107         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBILBC)
108
109 codec_g723_1.so : codec_g723_1.o $(LIBG723)
110         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBG723)
111
112 codec_g723_1b.o : codec_g723_1.c
113         $(CC) -c -o $@ $(CFLAGS) -DANNEX_B -Dsingle $<
114
115 codec_g723_1b.so : codec_g723_1b.o $(LIBG723B)
116         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBG723B) -lm
117
118 codec_gsm.so: codec_gsm.o $(LIBGSMT) 
119         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBGSM)
120
121 $(MODSPEEX): codec_speex.o
122         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBSPEEX)
123
124 codec_lpc10.so: codec_lpc10.o $(LIBLPC10)
125         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBLPC10) -lm
126
127 %.so : %.o
128         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB}
129
130 ifneq ($(wildcard .depend),)
131   include .depend
132 endif
133
134 install: all
135         for x in $(CODECS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
136
137 uninstall:
138
139 depend: .depend
140
141 .depend:
142         ../build_tools/mkdep $(CFLAGS) `ls *.c`