aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Khimenko <khim@google.com>2016-06-04 04:24:15 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-04 04:24:15 +0000
commit232858ab359c214c2b0006f298531ce8565acf08 (patch)
tree56b357ada73f6ec18b5413b62665306bd916d977
parentb4d981b5e461ac3287205746b3bfed9b700f79fd (diff)
parent0313b5aedbb4fb6e9bbc05f15dbca874b5e69cec (diff)
downloadlibopus-232858ab359c214c2b0006f298531ce8565acf08.tar.gz
Fix NEON and SSE handling am: da5155b2f5
am: 0313b5aedb * commit '0313b5aedbb4fb6e9bbc05f15dbca874b5e69cec': Fix NEON and SSE handling Change-Id: Iaa076031931a62b2f7332ae3af5e1052e7504480
-rw-r--r--Android.mk43
1 files changed, 27 insertions, 16 deletions
diff --git a/Android.mk b/Android.mk
index 3a57f206..512adb18 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,31 +19,42 @@ LOCAL_CFLAGS := -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED \
-DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -O2 -fno-math-errno
LOCAL_CPPFLAGS := -DBSD=1 -ffast-math -O2 -funroll-loops
-ifneq ($(findstring $(TARGET_ARCH_ABI), armeabi-v7a arm64-v8a),)
-LOCAL_SRC_FILES += $(CELT_SOURCES_ARM) $(CELT_SOURCES_ARM_NEON_INTR)
-LOCAL_SRC_FILES += celt/arm/armopts_gnu.s.neon
-LOCAL_SRC_FILES += $(subst .s,_gnu.s.neon,$(CELT_SOURCES_ARM_ASM))
-LOCAL_ARM_NEON := true
-LOCAL_CFLAGS += -DOPUS_ARM_ASM -DOPUS_ARM_INLINE_ASM -DOPUS_ARM_INLINE_EDSP \
- -DOPUS_ARM_INLINE_MEDIA -DOPUS_ARM_INLINE_NEON \
- -DOPUS_ARM_MAY_HAVE_NEON -DOPUS_ARM_MAY_HAVE_MEDIA \
- -DOPUS_ARM_MAY_HAVE_EDSP -DOPUS_ARM_MAY_HAVE_NEON_INTR \
- -DOPUS_HAVE_RTCD -DOPUS_ARM_PRESUME_EDSP \
- -DOPUS_ARM_PRESUME_MEDIA -DOPUS_ARM_PRESUME_NEON
+# Note: OPUS enhanced DSP/NEON implementation is not yet compatible with arm64.
+# Only add the appropriate defines for 32-bit arm architecture.
+LOCAL_SRC_FILES_arm += $(CELT_SOURCES_ARM)
+LOCAL_CFLAGS_arm += -DOPUS_ARM_ASM -DOPUS_ARM_INLINE_ASM \
+ -DOPUS_ARM_MAY_HAVE_EDSP -DOPUS_ARM_PRESUME_EDSP \
+ -DOPUS_ARM_INLINE_EDSP -DOPUS_ARM_MAY_HAVE_MEDIA \
+ -DOPUS_ARM_PRESUME_MEDIA -DOPUS_ARM_INLINE_MEDIA \
+ -DOPUS_HAVE_RTCD
+# DSP, MEDIA and NEON instructions are in the same assembler file - thus we
+# need to include it even if NEON is not supported on target platform.
+LOCAL_SRC_FILES_arm += $(subst .s,_gnu.s,$(CELT_SOURCES_ARM_ASM))
+ifeq ($(ARCH_ARM_HAVE_NEON),true)
+LOCAL_SRC_FILES_arm += $(CELT_SOURCES_ARM_NEON_INTR)
+LOCAL_CFLAGS_arm += -DOPUS_ARM_MAY_HAVE_NEON -DOPUS_ARM_MAY_HAVE_NEON_INTR \
+ -DOPUS_ARM_PRESUME_NEON -DOPUS_ARM_INLINE_NEON
endif
+LIBOPUS_X86_FILES :=
+LIBOPUS_X86_CFLAGS :=
ifeq ($(ARCH_X86_HAVE_SSSE3),true)
-LOCAL_CFLAGS += -DOPUS_X86_MAY_HAVE_SSE -DOPUS_X86_PRESUME_SSE \
- -DOPUS_X86_MAY_HAVE_SSE2 -DOPUS_X86_PRESUME_SSE2
-LOCAL_SRC_FILES += $(CELT_SOURCES_SSE) $(CELT_SOURCES_SSE2)
+LIBOPUS_X86_FILES += $(CELT_SOURCES_SSE) $(CELT_SOURCES_SSE2)
+LIBOPUS_X86_CFLAGS += -DOPUS_X86_MAY_HAVE_SSE -DOPUS_X86_PRESUME_SSE \
+ -DOPUS_X86_MAY_HAVE_SSE2 -DOPUS_X86_PRESUME_SSE2
endif
ifeq ($(ARCH_X86_HAVE_SSE4_1),true)
-LOCAL_CFLAGS += -DOPUS_X86_MAY_HAVE_SSE4_1 -DOPUS_X86_PRESUME_SSE4_1
-LOCAL_SRC_FILES += $(CELT_SOURCES_SSE4_1) \
+LIBOPUS_X86_FILES += $(CELT_SOURCES_SSE4_1) \
$(SILK_SOURCES_SSE4_1) $(SILK_SOURCES_FIXED_SSE4_1)
+LIBOPUS_X86_CFLAGS += -DOPUS_X86_MAY_HAVE_SSE4_1 -DOPUS_X86_PRESUME_SSE4_1
endif
+LOCAL_SRC_FILES_x86 += $(LIBOPUS_X86_FILES)
+LOCAL_SRC_FILES_x86_64 += $(LIBOPUS_X86_FILES)
+LOCAL_CFLAGS_x86 += $(LIBOPUS_X86_CFLAGS)
+LOCAL_CFLAGS_x86_64 += $(LIBOPUS_X86_CFLAGS)
+
LOCAL_STATIC_LIBRARIES := libogg
include $(BUILD_SHARED_LIBRARY)