Git init
[external/opencore-amr.git] / amrnb / Makefile.alt
1 # Just set OC_BASE to the opencore root, or set AMR_BASE directly to
2 # a detached gsm_amr directory
3 OC_BASE = ../opencore
4 AMR_BASE = $(OC_BASE)/codecs_v2/audio/gsm_amr
5 LIBDIR=lib
6 BINDIR=bin
7
8 # To compile as C instead of C++, define BUILD_AS_C
9 ifneq (, $(BUILD_AS_C))
10     CXX = $(CC)
11     CXXFLAGS += -x c -std=c99
12 endif
13
14 ifeq (, $(PREFIX))
15     PREFIX = /usr/local
16 endif
17
18 DEC_DIR = $(AMR_BASE)/amr_nb/dec
19 ENC_DIR = $(AMR_BASE)/amr_nb/enc
20 COMMON_DIR = $(AMR_BASE)/amr_nb/common
21 DEC_SRC_DIR = $(DEC_DIR)/src
22 ENC_SRC_DIR = $(ENC_DIR)/src
23 COMMON_SRC_DIR = $(COMMON_DIR)/src
24 OSCL = ../oscl
25
26 CPPFLAGS = -I$(OSCL) -I$(DEC_SRC_DIR) -I$(COMMON_DIR)/include -I$(DEC_DIR)/include -I$(AMR_BASE)/common/dec/include -I$(ENC_SRC_DIR)
27
28 # Find all the source files
29 DEC_SRC := $(shell cd $(DEC_SRC_DIR) && echo *.cpp)
30 ENC_SRC := $(shell cd $(ENC_SRC_DIR) && echo *.cpp)
31 COMMON_SRC := $(shell cd $(COMMON_SRC_DIR) && echo *.cpp)
32
33 # Exclude these files
34 DEC_SRC := $(DEC_SRC:decoder_gsm_amr.cpp=)
35 DEC_SRC := $(DEC_SRC:pvgsmamrdecoder.cpp=)
36 ENC_SRC := $(ENC_SRC:gsmamr_encoder_wrapper.cpp=)
37 COMMON_SRC := $(COMMON_SRC:bits2prm.cpp=)
38 COMMON_SRC := $(COMMON_SRC:copy.cpp=)
39 COMMON_SRC := $(COMMON_SRC:div_32.cpp=)
40 COMMON_SRC := $(COMMON_SRC:l_abs.cpp=)
41 COMMON_SRC := $(COMMON_SRC:vad1.cpp=)
42 COMMON_SRC := $(COMMON_SRC:r_fft.cpp=)
43 COMMON_SRC := $(COMMON_SRC:vad2.cpp=)
44
45 DEC_OBJS := $(DEC_SRC:.cpp=.o)
46 DEC_OBJS := $(patsubst %,$(DEC_SRC_DIR)/%, $(DEC_OBJS))
47 ENC_OBJS := $(ENC_SRC:.cpp=.o)
48 ENC_OBJS := $(patsubst %,$(ENC_SRC_DIR)/%, $(ENC_OBJS))
49 COMMON_OBJS := $(COMMON_SRC:.cpp=.o)
50 COMMON_OBJS := $(patsubst %,$(COMMON_SRC_DIR)/%, $(COMMON_OBJS))
51
52 OBJS = wrapper.o $(DEC_OBJS) $(ENC_OBJS) $(COMMON_OBJS)
53 SOBJS = $(OBJS:%.o=%.lo)
54
55 #Versioning
56 MAJOR = 0
57 MINOR = 1
58 REVISION = 1
59 VERSION = $(MAJOR).$(MINOR).$(REVISION)
60
61 ifeq ($(shell uname), Darwin)
62     SHLIB_EXT = dylib
63     SHLIB_FLAGS = -dynamiclib
64 else
65     ifeq ($(shell uname | sed -e 's/\(MINGW32_NT\)\(.*\)/\1/'), MINGW32_NT)
66         SHLIB_EXT = $(MAJOR).$(MINOR).$(REVISION).dll
67         SHLIB_FLAGS = -shared
68         SONAME = libopencore-amrnb-$(MAJOR).dll
69     else
70         SHLIB_EXT = so.$(MAJOR).$(MINOR).$(REVISION)
71         SHLIB_FLAGS = -shared
72         SONAME = libopencore-amrnb.so.$(MAJOR)
73     endif
74 endif
75 SHLIB = libopencore-amrnb.$(SHLIB_EXT)
76
77 all: libopencore-amrnb.a $(SHLIB)
78
79 $(SHLIB): $(SOBJS)
80 ifeq ($(shell uname), Darwin)
81         $(CXX) $(SHLIB_FLAGS) -o $@ $+ $(LDFLAGS)
82 else
83         $(CXX) $(SHLIB_FLAGS) -o $@ $+ -Wl,-soname,$(SONAME) $(LDFLAGS)
84 endif
85
86 %.lo: %.c
87         $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -DPIC -c $< -o $@
88
89 %.lo: %.cpp
90         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -DPIC -c $< -o $@
91
92 libopencore-amrnb.a: $(OBJS)
93         ar rcs $@ $+
94
95 install: libopencore-amrnb.a $(SHLIB)
96         install -d $(DESTDIR)$(PREFIX)/$(LIBDIR)
97         install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/$(LIBDIR)
98 ifeq ($(shell uname | sed -e 's/\(MINGW32_NT\)\(.*\)/\1/'), MINGW32_NT)
99         install -d $(DESTDIR)$(PREFIX)/$(BINDIR)
100         install $(SHLIB) $(DESTDIR)$(PREFIX)/$(BINDIR)
101 else
102         install $(SHLIB) $(DESTDIR)$(PREFIX)/$(LIBDIR)
103 endif
104 ifneq ($(shell uname), Darwin)
105 ifeq ($(shell uname | sed -e 's/\(MINGW32_NT\)\(.*\)/\1/'), MINGW32_NT)
106         ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/$(BINDIR)/$(SONAME)
107         ln -sf $(DESTDIR)$(PREFIX)/$(BINDIR)/$(SONAME) $(DESTDIR)$(PREFIX)/$(BINDIR)/libopencore-amrnb.dll
108 else
109         ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/$(LIBDIR)/$(SONAME)
110         ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/$(LIBDIR)/libopencore-amrnb.so
111 endif
112 endif
113         install -d $(DESTDIR)$(PREFIX)/include/opencore-amrnb
114         install -m 644 interf_dec.h $(DESTDIR)$(PREFIX)/include/opencore-amrnb
115         install -m 644 interf_enc.h $(DESTDIR)$(PREFIX)/include/opencore-amrnb
116
117 clean:
118         rm -f $(SHLIB) libopencore-amrnb.a *.o *.lo $(OBJS) $(SOBJS)
119