blob: b1bfb6d2ccd0a6a3ee8d5045d7e090a0b9ea3347 [file] [log] [blame]
Jean-Marc Valin445d5f42011-03-09 14:15:32 -05001#################### COMPILE OPTIONS #######################
2
3#Uncomment this for fixed-point build
4#FIXED_POINT=1
5
6#If you have a C99 compiler, you don't need this
7CFLAGS += -Drestrict=
8
9#It is strongly recommended to uncomment one of these
10#VAR_ARRAYS: Use C99 variable-length arrays for stack allocation
11#USE_ALLOCA: Use alloca() for stack allocation
12#If none is defined, then the fallback is a non-threadsafe global array
13#CFLAGS += -DUSE_ALLOCA
14#CFLAGS += -DVAR_ARRAYS
15
16###################### END OF OPTIONS ######################
Jean-Marc Valinedaf7882011-03-09 11:42:15 -050017
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -050018include silk_sources.mk
19include celt_sources.mk
20include opus_sources.mk
21
22EXESUFFIX =
23LIBPREFIX = lib
24LIBSUFFIX = .a
25OBJSUFFIX = .o
26
27CC = $(TOOLCHAIN_PREFIX)gcc$(TOOLCHAIN_SUFFIX)
28CXX = $(TOOLCHAIN_PREFIX)g++$(TOOLCHAIN_SUFFIX)
29AR = $(TOOLCHAIN_PREFIX)ar
30RANLIB = $(TOOLCHAIN_PREFIX)ranlib
31CP = $(TOOLCHAIN_PREFIX)cp
32
33cppflags-from-defines = $(addprefix -D,$(1))
34cppflags-from-includes = $(addprefix -I,$(1))
35ldflags-from-ldlibdirs = $(addprefix -L,$(1))
36ldlibs-from-libs = $(addprefix -l,$(1))
37
Jean-Marc Valinf85bc8a2011-02-03 12:08:38 -050038WARNINGS = -Wall -W -Wstrict-prototypes -Wextra -Wcast-align -Wnested-externs -Wshadow -Wno-parentheses -Wno-unused-parameter -Wno-sign-compare
Jean-Marc Valin445d5f42011-03-09 14:15:32 -050039CFLAGS += -O2 -g $(WARNINGS) -DOPUS_BUILD
Jean-Marc Valinedaf7882011-03-09 11:42:15 -050040ifdef FIXED_POINT
Jean-Marc Valin445d5f42011-03-09 14:15:32 -050041CFLAGS += -DFIXED_POINT=1 -DDISABLE_FLOAT_API
Jean-Marc Valinedaf7882011-03-09 11:42:15 -050042endif
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -050043
44CFLAGS += $(call cppflags-from-defines,$(CDEFINES))
45CFLAGS += $(call cppflags-from-includes,$(CINCLUDES))
46LDFLAGS += $(call ldflags-from-ldlibdirs,$(LDLIBDIRS))
47LDLIBS += $(call ldlibs-from-libs,$(LIBS))
48
49COMPILE.c.cmdline = $(CC) -c $(CFLAGS) -o $@ $<
50COMPILE.cpp.cmdline = $(CXX) -c $(CFLAGS) -o $@ $<
51LINK.o = $(CC) $(LDPREFLAGS) $(LDFLAGS)
52LINK.o.cmdline = $(LINK.o) $^ $(LDLIBS) -o $@$(EXESUFFIX)
53
54ARCHIVE.cmdline = $(AR) $(ARFLAGS) $@ $^ && $(RANLIB) $@
55
56%$(OBJSUFFIX):%.c
57 $(COMPILE.c.cmdline)
58
59%$(OBJSUFFIX):%.cpp
60 $(COMPILE.cpp.cmdline)
61
62# Directives
63
Jean-Marc Valin79f30392011-04-28 16:41:47 -040064CINCLUDES += silk/ \
65 libcelt/ \
66 src/
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -050067
68# VPATH e.g. VPATH = src:../headers
69VPATH = ./ \
70 silk/interface \
71 silk/src_FIX \
72 silk/src_FLP \
73 silk/src_SigProc_FIX \
74 silk/src_SigProc_FLP \
75 test
76
77# Variable definitions
Jean-Marc Valinf85bc8a2011-02-03 12:08:38 -050078LIB_NAME = opus
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -050079TARGET = $(LIBPREFIX)$(LIB_NAME)$(LIBSUFFIX)
80
81SRCS_C = $(SILK_SOURCES) $(CELT_SOURCES) $(OPUS_SOURCES)
82
83OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(SRCS_C))
84
85TESTOPUS_SRCS_C = src/test_opus.c
86TESTOPUS_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(TESTOPUS_SRCS_C))
87
Jean-Marc Valinb9f0e332011-02-03 14:03:10 -050088LIBS = m
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -050089
90LDLIBDIRS = ./
91
92# Rules
93default: all
94
95all: $(TARGET) lib test_opus
96
97lib: $(TARGET)
98
99$(TARGET): $(OBJS)
100 $(ARCHIVE.cmdline)
101
Jean-Marc Valinb9f0e332011-02-03 14:03:10 -0500102test_opus$(EXESUFFIX): $(TESTOPUS_OBJS) $(TARGET)
Jean-Marc Valin1c09feb2011-02-03 11:34:11 -0500103 $(LINK.o.cmdline)
104
Jean-Marc Valin34e99da2011-02-03 13:46:32 -0500105clean:
Jean-Marc Valinb9f0e332011-02-03 14:03:10 -0500106 rm -f test_opus$(EXESUFFIX) $(TARGET) $(OBJS) $(TESTOPUS_OBJS)