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