2
0

Makefile 3.2 KB

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