# __________ __ ___. # Open \______ \ ____ ____ | | _\_ |__ _______ ___ # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # $Id$ # ifndef V SILENT = @ endif SPEEXSRC = ../../apps/codecs/libspeex INCLUDES = -I $(SPEEXSRC) SPEEXOPTS = -DHAVE_CONFIG_H -DROCKBOX_VOICE_ENCODER CFLAGS = $(SPEEXOPTS) $(INCLUDES) -O3 -fomit-frame-pointer -Wno-unused-parameter #build standalone win32 executables on cygwin ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) CFLAGS+=-mno-cygwin endif ifdef RBARCH CFLAGS += -arch $(RBARCH) endif # don't try to use the systems libspeex when building a static binary. ifndef STATIC SYS_SPEEX ?= $(shell pkg-config --silence-errors --libs speex speexdsp) endif # fall back to our own librbspeex if no suitable found. ifeq ($(SYS_SPEEX),) # This sets up 'SRC' based on the files mentioned in SOURCES SRC := $(shell cat $(SPEEXSRC)/SOURCES | $(CC) $(CFLAGS) -E -P - | grep -v "^\#" | grep -v "^$$") LIBS = $(TARGET_DIR)librbspeex$(RBARCH).a else LIBS = $(SYS_SPEEX) endif OUT = $(TARGET_DIR)build$(RBARCH) SOURCES = $(SRC:%.c=$(SPEEXSRC)/%.c) rbspeex.c rbspeexenc.c rbspeexdec.c OBJS = $(addprefix $(OUT)/,$(SRC:%.c=%.o)) DEPFILE = $(OUT)/dep-speex DIRS = .PHONY : all all: ../rbspeexenc ../rbspeexdec $(DEPFILE): $(SOURCES) @echo MKDIR $(OUT) $(SILENT)mkdir -p $(OUT) @echo Creating dependencies $(SILENT)rm -f $(DEPFILE) $(SILENT)(for each in $(SOURCES) x; do \ if test "x" != "$$each"; then \ obj=`echo $$each | sed -e 's/\.[cS]/.o/' | sed -e 's/^.*\///' `; \ $(CC) -MG -MM -MT "$(OUT)/$$obj" $(CFLAGS) $$each 2>/dev/null; \ fi; \ if test -n "$$del"; then \ rm $$del; \ del=""; \ fi \ done > $(DEPFILE); \ echo "oo" > /dev/null ) -include $(DEPFILE) $(OUT)/librbspeex.a: $(OBJS) $(DEPFILE) $(OUT)/rbspeex.o @echo AR $(OUT)/librbspeex$(RBARCH).a $(SILENT)$(AR) rucs $@ $+ > /dev/null 2>&1 librbspeex$(RBARCH).a: $(OUT)/librbspeex.a $(SILENT)cp $(OUT)/librbspeex.a $(TARGET_DIR)librbspeex$(RBARCH).a ../rbspeexenc: $(OBJS) $(OUT)/rbspeexenc.o librbspeex$(RBARCH).a @echo Linking ../rbspeexenc $(SILENT)$(CC) $(CFLAGS) -o ../rbspeexenc $(OUT)/rbspeexenc.o $(LIBS) -lm $(TARGET_DIR)librbspeex$(RBARCH).a ../rbspeexdec: $(OBJS) librbspeex$(RBARCH).a $(OUT)/rbspeexdec.o @echo Linking ../rbspeexdec $(SILENT)$(CC) $(CFLAGS) -o ../rbspeexdec $(OUT)/rbspeexdec.o $(LIBS) -lm $(TARGET_DIR)librbspeex$(RBARCH).a %.o: @echo CC $< $(SILENT)$(CC) $(CFLAGS) -c $< -o $@ # some trickery to build ppc and i386 from a single call ifeq ($(RBARCH),) librbspeexi386.a: make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) librbspeexi386.a librbspeexppc.a: make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) librbspeexppc.a endif librbspeex-universal: librbspeexi386.a librbspeexppc.a @echo lipo librbspeex.a $(SILENT) rm -f $(TARGET_DIR)librbspeex.a $(SILENT)lipo -create $(TARGET_DIR)librbspeexppc.a $(TARGET_DIR)librbspeexi386.a -output $(TARGET_DIR)librbspeex.a clean: rm -f $(OBJS) $(TARGET_DIR)librbspeex* ../rbspeexenc ../rbspeexdec $(TARGET_DIR)dep-speex rm -rf build* $(OUT): @echo MKDIR $(OUT) $(SILENT)mkdir $(OUT)