1885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#################### COMPILE OPTIONS ####################### 2885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Uncomment this for fixed-point build 4885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#FIXED_POINT=1 5885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# It is strongly recommended to uncomment one of these 7885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# VAR_ARRAYS: Use C99 variable-length arrays for stack allocation 8885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# USE_ALLOCA: Use alloca() for stack allocation 9885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If none is defined, then the fallback is a non-threadsafe global array 10885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCFLAGS := -DUSE_ALLOCA $(CFLAGS) 11885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#CFLAGS := -DVAR_ARRAYS $(CFLAGS) 12885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 13885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# These options affect performance 14885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# HAVE_LRINTF: Use C99 intrinsics to speed up float-to-int conversion 15885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#CFLAGS := -DHAVE_LRINTF $(CFLAGS) 16885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 17885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org###################### END OF OPTIONS ###################### 18885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 19e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org-include package_version 20e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 21885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginclude silk_sources.mk 22885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginclude celt_sources.mk 23885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginclude opus_sources.mk 24885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 25885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgifdef FIXED_POINT 26885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgSILK_SOURCES += $(SILK_SOURCES_FIXED) 27885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse 28885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgSILK_SOURCES += $(SILK_SOURCES_FLOAT) 29e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgOPUS_SOURCES += $(OPUS_SOURCES_FLOAT) 30885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgendif 31885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 32885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXESUFFIX = 33885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLIBPREFIX = lib 34885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLIBSUFFIX = .a 35885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOBJSUFFIX = .o 36885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 37885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCC = $(TOOLCHAIN_PREFIX)cc$(TOOLCHAIN_SUFFIX) 38885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgAR = $(TOOLCHAIN_PREFIX)ar 39885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRANLIB = $(TOOLCHAIN_PREFIX)ranlib 40885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCP = $(TOOLCHAIN_PREFIX)cp 41885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 42885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcppflags-from-defines = $(addprefix -D,$(1)) 43885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcppflags-from-includes = $(addprefix -I,$(1)) 44885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgldflags-from-ldlibdirs = $(addprefix -L,$(1)) 45e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgldlibs-from-libs = $(addprefix -l,$(1)) 46885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 47885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgWARNINGS = -Wall -W -Wstrict-prototypes -Wextra -Wcast-align -Wnested-externs -Wshadow 48885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCFLAGS += -O2 -g $(WARNINGS) -DOPUS_BUILD 49e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgCINCLUDES = include silk celt 50e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 51885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgifdef FIXED_POINT 52885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCFLAGS += -DFIXED_POINT=1 -DDISABLE_FLOAT_API 53e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgCINCLUDES += silk/fixed 54e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgelse 55e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgCINCLUDES += silk/float 56885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgendif 57885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 58885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 59885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLIBS = m 60885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 61885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLDLIBDIRS = ./ 62885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 63885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCFLAGS += $(call cppflags-from-defines,$(CDEFINES)) 64885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCFLAGS += $(call cppflags-from-includes,$(CINCLUDES)) 65885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLDFLAGS += $(call ldflags-from-ldlibdirs,$(LDLIBDIRS)) 66885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLDLIBS += $(call ldlibs-from-libs,$(LIBS)) 67885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 68885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCOMPILE.c.cmdline = $(CC) -c $(CFLAGS) -o $@ $< 69885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLINK.o = $(CC) $(LDPREFLAGS) $(LDFLAGS) 70885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLINK.o.cmdline = $(LINK.o) $^ $(LDLIBS) -o $@$(EXESUFFIX) 71885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 72885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgARCHIVE.cmdline = $(AR) $(ARFLAGS) $@ $^ && $(RANLIB) $@ 73885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 74885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org%$(OBJSUFFIX):%.c 75885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $(COMPILE.c.cmdline) 76885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 77885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org%$(OBJSUFFIX):%.cpp 78885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $(COMPILE.cpp.cmdline) 79885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 80885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Directives 81885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 82885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 83885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Variable definitions 84885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLIB_NAME = opus 85885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgTARGET = $(LIBPREFIX)$(LIB_NAME)$(LIBSUFFIX) 86885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 87885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgSRCS_C = $(SILK_SOURCES) $(CELT_SOURCES) $(OPUS_SOURCES) 88885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 89885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOBJS := $(patsubst %.c,%$(OBJSUFFIX),$(SRCS_C)) 90885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 91885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOPUSDEMO_SRCS_C = src/opus_demo.c 92885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOPUSDEMO_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSDEMO_SRCS_C)) 93885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 94885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOPUSCOMPARE_SRCS_C = src/opus_compare.c 95885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOPUSCOMPARE_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(OPUSCOMPARE_SRCS_C)) 96885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 97885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Rules 98e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgall: lib opus_demo opus_compare 99885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglib: $(TARGET) 101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$(TARGET): $(OBJS) 103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $(ARCHIVE.cmdline) 104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopus_demo$(EXESUFFIX): $(OPUSDEMO_OBJS) $(TARGET) 106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $(LINK.o.cmdline) 107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopus_compare$(EXESUFFIX): $(OPUSCOMPARE_OBJS) 109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $(LINK.o.cmdline) 110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 111e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgcelt/celt.o: CFLAGS += -DPACKAGE_VERSION='$(PACKAGE_VERSION)' 112e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgcelt/celt.o: package_version 113e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 114e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgpackage_version: force 115e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org @if [ -x ./update_version ]; then \ 116e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org ./update_version || true; \ 117e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org elif [ ! -e ./package_version ]; then \ 118e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org echo 'PACKAGE_VERSION="unknown"' > ./package_version; \ 119e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org fi 120e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 121e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.orgforce: 122e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgclean: 124e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org rm -f opus_demo$(EXESUFFIX) opus_compare$(EXESUFFIX) $(TARGET) \ 125e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org $(OBJS) $(OPUSDEMO_OBJS) $(OPUSCOMPARE_OBJS) 126e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org 127e3ea049fcaee2247e45f0ce793d4313babb4ef69tlegrand@chromium.org.PHONY: all lib clean 128