diff --git a/pkg/android/phoenix/AndroidManifest.xml b/pkg/android/phoenix/AndroidManifest.xml
index 776ee3ab57..9158f7a3dd 100644
--- a/pkg/android/phoenix/AndroidManifest.xml
+++ b/pkg/android/phoenix/AndroidManifest.xml
@@ -22,8 +22,7 @@
android:icon="@drawable/ic_launcher"
android:label="RetroArch"
android:hasCode="true"
- android:banner="@drawable/banner"
- android:debuggable="false">
+ android:banner="@drawable/banner">
diff --git a/pkg/android/phoenix/jni/Android.mk b/pkg/android/phoenix/jni/Android.mk
index a220ce9545..37bc37a51d 100644
--- a/pkg/android/phoenix/jni/Android.mk
+++ b/pkg/android/phoenix/jni/Android.mk
@@ -54,11 +54,8 @@ LOCAL_CFLAGS += -Wall -pthread -Wno-unused-function -fno-stack-protector -funrol
LOCAL_CFLAGS += -DHAVE_7ZIP
LOCAL_CFLAGS += -DHAVE_CHEEVOS
-ifeq ($(NDK_DEBUG),1)
-LOCAL_CFLAGS += -O0 -g
-else
-LOCAL_CFLAGS += -O2 -DNDEBUG
-endif
+# Let ndk-build set the optimization flags but remove -O3 like in cf3c3
+LOCAL_CFLAGS := $(subst -O3,-O2,$(LOCAL_CFLAGS))
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -landroid -lEGL $(GLES_LIB) $(LOGGER_LDLIBS) -ldl
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(RARCH_DIR)/libretro-common/include/
@@ -66,5 +63,11 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(RARCH_DIR)/libretro-common/include/
LOCAL_CFLAGS += -DHAVE_SL
LOCAL_LDLIBS += -lOpenSLES -lz
+ifneq ($(SANITIZER),)
+ LOCAL_CFLAGS += -g -fsanitize=$(SANITIZER) -fno-omit-frame-pointer
+ LOCAL_CPPFLAGS += -g -fsanitize=$(SANITIZER) -fno-omit-frame-pointer
+ LOCAL_LDFLAGS += -fsanitize=$(SANITIZER)
+endif
+
include $(BUILD_SHARED_LIBRARY)
diff --git a/pkg/android/phoenix/jni/Application.mk b/pkg/android/phoenix/jni/Application.mk
index f16169ec36..97dd6dcb5b 100644
--- a/pkg/android/phoenix/jni/Application.mk
+++ b/pkg/android/phoenix/jni/Application.mk
@@ -17,3 +17,24 @@ ifndef TARGET_ABIS
else
APP_ABI := $(TARGET_ABIS)
endif
+
+# Run $NDK/toolchains/llvm-3.6/prebuilt/linux-x86_64/bin/asan_device_setup once
+# for each AVD you use, replacing llvm-3.6 with the latest you have and
+# linux-x86_64 with your host ABI.
+ifneq ($(SANITIZER),)
+ # AddressSanitizer doesn't run on mips
+ ifndef TARGET_ABIS
+ APP_ABI := armeabi-v7a x86
+ else
+ ifneq ($(findstring mips,$(TARGET_ABIS)),)
+ $(error "AddressSanitizer does not support mips.")
+ endif
+ endif
+ USE_CLANG := 1
+endif
+
+ifeq ($(USE_CLANG),1)
+ NDK_TOOLCHAIN_VERSION := clang
+ APP_CFLAGS := -Wno-invalid-source-encoding
+ APP_CPPFLAGS := -Wno-invalid-source-encoding
+endif