git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@14001 65c4cc65-6c06-0410...
[asterisk/asterisk.git] / codecs / Makefile
1 #
2 # Asterisk -- A telephony toolkit for Linux.
3
4 # Makefile for codec modules
5 #
6 # Copyright (C) 1999-2006, Digium, Inc.
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 MODS:=$(patsubst %.c,%.so,$(wildcard codec_*.c))
15
16 ifeq (${OSARCH},CYGWIN)
17   CYGSOLINK=-Wl,--out-implib=lib$@.a -Wl,--export-all-symbols
18   CYGSOLIB=-L.. -L. -lasterisk.dll
19 else
20   CFLAGS+=-fPIC
21 endif
22
23 ifeq ($(wildcard g723.1/coder.c),)
24   MODS:=$(filter-out codec_g723_1.so,$(MODS))
25 else
26   LIBG723=g723.1/libg723.a
27 endif
28
29 ifneq ($(wildcard g723.1b/coder2.c),)
30   MODS+=codec_g723_1b.so
31   LIBG723B=g723.1b/libg723b.a
32 endif
33
34 SPEEX_PATH:=/usr/local/include /usr/include /usr/include/speex /usr/local/include/speex
35 SPEEX_SYSTEM_HEADERS:=$(firstword $(wildcard $(SPEEX_PATH:%=$(CROSS_COMPILE_TARGET)%/speex.h)))
36 ifeq (${SPEEX_SYSTEM_HEADERS},)
37   MODS:=$(filter-out codec_speex.so,$(MODS))
38 else
39   CFLAGS+=-I$(subst /speex.h,,${SPEEX_SYSTEM_HEADERS})
40   LIBSPEEX=-lspeex -lm
41 endif
42
43 ifeq ($(wildcard ilbc/iLBC_decode.h),)
44   MODS:=$(filter-out codec_ilbc.so,$(MODS))
45 else
46   LIBILBC=ilbc/libilbc.a
47 endif
48
49 LIBGSM_PATH:=/usr/local/include /usr/include
50 LIBGSM_SYSTEM_HEADERS:=$(firstword $(wildcard $(LIBGSM_PATH:%=$(CROSS_COMPILE_TARGET)%/gsm/gsm.h)))
51 ifneq ($(LIBGSM_SYSTEM_HEADERS),)
52   LIBGSM=-lgsm
53   LIBGSMT=
54   CFLAGS+=-DUSE_EXTERNAL_GSM_LIB
55 else
56   LIBGSM=gsm/lib/libgsm.a
57   LIBGSMT=$(LIBGSM)
58   CFLAGS+=-I.
59 endif
60
61 LIBLPC10=lpc10/liblpc10.a
62
63 all: depend $(MODS)
64
65 clean-depend:
66         rm -f .depend
67
68 clean: clean-depend
69         rm -f *.so *.o
70         [ ! -d g723.1 ] || $(MAKE) -C g723.1 clean
71         [ ! -d g723.1b ] || $(MAKE) -C g723.1b clean
72         $(MAKE) -C gsm clean
73         $(MAKE) -C lpc10 clean
74         $(MAKE) -C ilbc clean
75
76 $(LIBG723):
77         $(MAKE) -C g723.1 all
78
79 $(LIBGSM):
80         $(MAKE) -C gsm lib/libgsm.a
81
82 $(LIBG723B):
83         $(MAKE) -C g723.1b all
84
85 $(LIBLPC10):
86         $(MAKE) -C lpc10 all
87
88 $(LIBILBC):
89         $(MAKE) -C ilbc all
90
91 codec_ilbc.so: codec_ilbc.o $(LIBILBC)
92         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBILBC)
93
94 codec_g723_1.so : codec_g723_1.o $(LIBG723)
95         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBG723)
96
97 codec_g723_1b.o : codec_g723_1.c
98         $(CC) -c -o $@ $(CFLAGS) -DANNEX_B -Dsingle $<
99
100 codec_g723_1b.so : codec_g723_1b.o $(LIBG723B)
101         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBG723B) -lm
102
103 codec_gsm.so: codec_gsm.o $(LIBGSMT) 
104         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBGSM)
105
106 codec_speex.so: codec_speex.o
107         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBSPEEX)
108
109 codec_lpc10.so: codec_lpc10.o $(LIBLPC10)
110         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB} $(LIBLPC10) -lm
111
112 %.so : %.o
113         $(CC) $(SOLINK) -o $@ ${CYGSOLINK} $< ${CYGSOLIB}
114
115 ifneq ($(wildcard .depend),)
116   include .depend
117 endif
118
119 install: all
120         for x in $(MODS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
121
122 uninstall:
123
124 depend: .depend
125
126 .depend:
127         ../build_tools/mkdep $(CFLAGS) `ls *.c`