1# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
2#
3# Use of this source code is governed by a BSD-style license
4# that can be found in the LICENSE file in the root of the source
5# tree. An additional intellectual property rights grant can be found
6# in the file PATENTS.  All contributing project authors may
7# be found in the AUTHORS file in the root of the source tree.
8
9#############################
10# Build the non-neon library.
11
12LOCAL_PATH := $(call my-dir)
13
14include $(CLEAR_VARS)
15
16include $(LOCAL_PATH)/../../../../../../../android-webrtc.mk
17
18LOCAL_ARM_MODE := arm
19LOCAL_MODULE_CLASS := STATIC_LIBRARIES
20LOCAL_MODULE := libwebrtc_isacfix
21LOCAL_VENDOR_MODULE := true
22LOCAL_MODULE_TAGS := optional
23LOCAL_SRC_FILES := \
24    arith_routines.c \
25    arith_routines_hist.c \
26    arith_routines_logist.c \
27    bandwidth_estimator.c \
28    decode.c \
29    decode_bwe.c \
30    decode_plc.c \
31    encode.c \
32    entropy_coding.c \
33    fft.c \
34    filterbank_tables.c \
35    filterbanks.c \
36    filters.c \
37    initialize.c \
38    isacfix.c \
39    lattice.c \
40    lpc_masking_model.c \
41    lpc_tables.c \
42    pitch_estimator.c \
43    pitch_estimator_c.c \
44    pitch_filter.c \
45    pitch_gain_tables.c \
46    pitch_lag_tables.c \
47    spectrum_ar_model_tables.c \
48    transform_tables.c \
49    transform.c
50
51# TODO: Use pitch_estimator_mips.c for mips, pitch_estimator_c.c
52
53# Using .S (instead of .s) extention is to include a C header file in assembly.
54my_as_src := \
55    lattice_armv7.S \
56    pitch_filter_armv6.S
57my_c_src := \
58    lattice_c.c \
59    pitch_filter_c.c
60LOCAL_SRC_FILES_arm += $(my_as_src)
61LOCAL_SRC_FILES_x86 += $(my_c_src)
62LOCAL_SRC_FILES_mips += $(my_c_src)
63LOCAL_SRC_FILES_arm64 += $(my_c_src)
64LOCAL_SRC_FILES_x86_64 += $(my_c_src)
65LOCAL_SRC_FILES_mips64 += $(my_c_src)
66
67# Flags passed to both C and C++ files.
68LOCAL_CFLAGS := \
69    $(MY_WEBRTC_COMMON_DEFS)
70
71LOCAL_CFLAGS_arm := $(MY_WEBRTC_COMMON_DEFS_arm)
72LOCAL_CFLAGS_x86 := $(MY_WEBRTC_COMMON_DEFS_x86)
73LOCAL_CFLAGS_mips := $(MY_WEBRTC_COMMON_DEFS_mips)
74LOCAL_CFLAGS_arm64 := $(MY_WEBRTC_COMMON_DEFS_arm64)
75LOCAL_CFLAGS_x86_64 := $(MY_WEBRTC_COMMON_DEFS_x86_64)
76LOCAL_CFLAGS_mips64 := $(MY_WEBRTC_COMMON_DEFS_mips64)
77
78LOCAL_CFLAGS += -Wno-unused-parameter
79
80LOCAL_C_INCLUDES := \
81    $(LOCAL_PATH)/../interface \
82    $(LOCAL_PATH)/../../../../../../.. \
83    $(LOCAL_PATH)/../../../../../../common_audio/signal_processing/include
84
85ifdef WEBRTC_STL
86LOCAL_NDK_STL_VARIANT := $(WEBRTC_STL)
87LOCAL_SDK_VERSION := 14
88LOCAL_MODULE := $(LOCAL_MODULE)_$(WEBRTC_STL)
89endif
90
91include $(BUILD_STATIC_LIBRARY)
92
93#########################
94# Build the neon library.
95ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
96
97include $(CLEAR_VARS)
98
99LOCAL_ARM_MODE := arm
100LOCAL_MODULE_CLASS := STATIC_LIBRARIES
101LOCAL_MODULE := libwebrtc_isacfix_neon
102LOCAL_VENDOR_MODULE := true
103LOCAL_MODULE_TAGS := optional
104LOCAL_SRC_FILES := \
105    filters_neon.c \
106    lattice_neon.S \
107    lpc_masking_model_neon.S
108
109# Flags passed to both C and C++ files.
110LOCAL_CFLAGS := \
111    $(MY_WEBRTC_COMMON_DEFS) \
112    -mfpu=neon \
113    -mfloat-abi=softfp \
114    -flax-vector-conversions
115
116LOCAL_MODULE_TARGET_ARCH := arm
117LOCAL_CFLAGS_arm := $(MY_WEBRTC_COMMON_DEFS_arm)
118
119LOCAL_C_INCLUDES := \
120    $(LOCAL_PATH)/../interface \
121    $(LOCAL_PATH)/../../../../../../.. \
122    $(LOCAL_PATH)/../../../../../../common_audio/signal_processing/include
123
124ifdef WEBRTC_STL
125LOCAL_NDK_STL_VARIANT := $(WEBRTC_STL)
126LOCAL_SDK_VERSION := 14
127LOCAL_MODULE := $(LOCAL_MODULE)_$(WEBRTC_STL)
128endif
129
130include $(BUILD_STATIC_LIBRARY)
131
132endif # ifeq ($(WEBRTC_BUILD_NEON_LIBS),true)
133