1# 2# Makefile for Silk SDK 3# 4# Copyright (c) 2010, Skype Limited 5# All rights reserved. 6# 7 8#Platform detection and settings 9 10BUILD_OS := $(shell uname | sed -e 's/^.*Darwin.*/MacOS-X/ ; s/^.*CYGWIN.*/Windows/') 11 12BUILD_ARCHITECTURE := $(shell uname -m | sed -e 's/i686/i386/') 13 14EXESUFFIX = 15LIBPREFIX = lib 16LIBSUFFIX = .a 17OBJSUFFIX = .o 18 19CC ?= $(TOOLCHAIN_PREFIX)gcc$(TOOLCHAIN_SUFFIX) 20AR ?= $(TOOLCHAIN_PREFIX)ar 21RANLIB ?= $(TOOLCHAIN_PREFIX)ranlib 22CP ?= $(TOOLCHAIN_PREFIX)cp 23 24cflags-from-defines = $(addprefix -D,$(1)) 25cflags-from-includes = $(addprefix -I,$(1)) 26ldflags-from-ldlibdirs = $(addprefix -L,$(1)) 27ldlibs-from-libs = $(addprefix -l,$(1)) 28 29CFLAGS += -Wall -enable-threads -O3 -fPIC 30 31CFLAGS += $(call cflags-from-defines,$(CDEFINES)) 32CFLAGS += $(call cflags-from-defines,$(ADDED_DEFINES)) 33CFLAGS += $(call cflags-from-includes,$(CINCLUDES)) 34LDFLAGS += $(call ldflags-from-ldlibdirs,$(LDLIBDIRS)) 35LDLIBS += $(call ldlibs-from-libs,$(LIBS)) 36 37COMPILE.c.cmdline = $(CC) -c $(CFLAGS) -o $@ $< 38LINK.o.cmdline = $(LINK.o) $^ -lm $(LDLIBS) -o $@$(EXESUFFIX) 39ARCHIVE.cmdline = $(AR) $(ARFLAGS) $@ $^ && $(RANLIB) $@ 40 41%$(OBJSUFFIX):%.c 42 $(COMPILE.c.cmdline) 43 44# Directives 45 46CINCLUDES += interface src test 47 48# VPATH e.g. VPATH = src:../headers 49VPATH = ./ \ 50 interface \ 51 src \ 52 test 53 54# Variable definitions 55LIB_NAME = SKP_SILK_SDK 56TARGET = $(LIBPREFIX)$(LIB_NAME)$(LIBSUFFIX) 57 58SRCS_C = $(wildcard src/*.c) 59 60OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(SRCS_C)) 61 62ENCODER_SRCS_C = test/Encoder.c 63ENCODER_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(ENCODER_SRCS_C)) 64 65DECODER_SRCS_C = test/Decoder.c 66DECODER_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(DECODER_SRCS_C)) 67 68SIGNALCMP_SRCS_C = test/signalCompare.c 69SIGNALCMP_OBJS := $(patsubst %.c,%$(OBJSUFFIX),$(SIGNALCMP_SRCS_C)) 70 71LIBS = \ 72 $(LIB_NAME) 73 74LDLIBDIRS = ./ 75 76# Rules 77default: all 78 79all: $(TARGET) encoder decoder signalcompare 80 81lib: $(TARGET) 82 83$(TARGET): $(OBJS) 84 $(ARCHIVE.cmdline) 85 86encoder$(EXESUFFIX): $(TARGET) $(ENCODER_OBJS) 87 $(LINK.o.cmdline) 88 89decoder$(EXESUFFIX): $(TARGET) $(DECODER_OBJS) 90 $(LINK.o.cmdline) 91 92signalcompare$(EXESUFFIX): $(TARGET) $(SIGNALCMP_OBJS) 93 $(LINK.o.cmdline) 94 95clean: 96 $(RM) $(TARGET)* $(OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) \ 97 $(SIGNALCMP_OBJS) $(TEST_OBJS) \ 98 encoder$(EXESUFFIX) decoder$(EXESUFFIX) signalcompare$(EXESUFFIX) 99 100install uninstall: 101 @true 102