Make eigen and libblas able to build for API8 x86 target.

 - WAR for missing posix_memalign on API 8

bug: 22700067
bug: 22693954

(cherry picked from commit 8a387c93d83d5375edf414497775e6145b447f40)

Change-Id: Ic2b12d12e73821b825a7c17065de0a18cdfd64db
diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h
index 330bcf5..624b17b 100644
--- a/Eigen/src/Core/util/Memory.h
+++ b/Eigen/src/Core/util/Memory.h
@@ -72,7 +72,7 @@
   #define EIGEN_HAS_POSIX_MEMALIGN 0
 #endif
 
-#ifdef EIGEN_VECTORIZE_SSE
+#if defined(EIGEN_VECTORIZE_SSE) && !defined(EIGEN_ANDROID_POSIX_MEMALIGN_WR)
   #define EIGEN_HAS_MM_MALLOC 1
 #else
   #define EIGEN_HAS_MM_MALLOC 0
diff --git a/blas/Android.mk b/blas/Android.mk
index 1d4300b..edddaea 100644
--- a/blas/Android.mk
+++ b/blas/Android.mk
@@ -60,6 +60,9 @@
 # EIGEN_ANDROID_SSE_WR is for "Eigen Android SSE Work Around"
 # Will be removed after we understand it better.
 LOCAL_CFLAGS += -DEIGEN_ANDROID_SSE_WR
+# EIGEN_ANDROID_POSIX_MEMALIGN_WR is for "Eigen Android posix_memalign Work Around"
+# Only used for build for low Android API(x86 target) without posix_memalign.
+LOCAL_CFLAGS += -DEIGEN_ANDROID_POSIX_MEMALIGN_WR
 LOCAL_MODULE := libF77blasV8
 LOCAL_SDK_VERSION := 8
 LOCAL_NDK_STL_VARIANT := stlport_static