[Android] [PATCH 2/2] src: Enforce x86 build checking as well

Edward Wang edward.c.wang at compdigitec.com
Thu Jul 26 02:32:16 CEST 2012


---
 vlc-android/src/org/videolan/vlc/Util.java |   37 ++++++++++++++++++++-------
 1 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/Util.java b/vlc-android/src/org/videolan/vlc/Util.java
index 55ee858..c990e9b 100644
--- a/vlc-android/src/org/videolan/vlc/Util.java
+++ b/vlc-android/src/org/videolan/vlc/Util.java
@@ -237,6 +237,16 @@ public class Util {
         boolean NO_FPU = properties.getProperty("NO_FPU","0").equals("1");
         boolean NO_ARMV6 = properties.getProperty("NO_ARMV6","0").equals("1");
         boolean hasNeon = false, hasFpu = false, hasArmV6 = false, hasArmV7 = false;
+        boolean hasX86 = false;
+
+        if(android.os.Build.CPU_ABI.equals("armeabi-v7a")) {
+            hasArmV7 = true;
+            hasArmV6 = true; /* Armv7 is backwards compatible to < v6 */
+        } else if(android.os.Build.CPU_ABI.equals("armeabi")) {
+            hasArmV6 = true;
+        } else if(android.os.Build.CPU_ABI.equals("x86")) {
+            hasX86 = true;
+        }
 
         try {
             FileReader fileReader = new FileReader("/proc/cpuinfo");
@@ -245,12 +255,6 @@ public class Util {
             while((line = br.readLine()) != null) {
                 if(!hasNeon && line.contains("neon"))
                     hasNeon = true;
-                if(!hasArmV7 && line.contains("ARMv7")) {
-                    hasArmV7 = true;
-                    hasArmV6 = true; /* Armv7 is backwards compatible to < v6 */
-                }
-                if(!hasArmV7 && !hasArmV6 && line.contains("ARMv6"))
-                    hasArmV6 = true;
                 if(!hasFpu && line.contains("vfp"))
                     hasFpu = true;
             }
@@ -262,6 +266,17 @@ public class Util {
             return false;
         }
 
+        // Enforce proper architecture to prevent problems
+        if(ANDROID_ABI.equals("x86") && !hasX86) {
+            errorMsg = "x86 build on non-x86 device";
+            isCompatible = false;
+            return false;
+        } else if(hasX86 && ANDROID_ABI.contains("armeabi")) {
+            errorMsg = "ARM build on x86 device";
+            isCompatible = false;
+            return false;
+        }
+
         if(ANDROID_ABI.equals("armeabi-v7a") && !hasArmV7) {
             errorMsg = "ARMv7 build on non-ARMv7 device";
             isCompatible = false;
@@ -278,10 +293,12 @@ public class Util {
                 return false;
             }
         }
-        if(!NO_NEON && !hasNeon) {
-            errorMsg = "NEON build on non-NEON device";
-            isCompatible = false;
-            return false;
+        if(ANDROID_ABI.equals("armeabi") || ANDROID_ABI.equals("armeabi-v7a")) {
+            if(!NO_NEON && !hasNeon) {
+                errorMsg = "NEON build on non-NEON device";
+                isCompatible = false;
+                return false;
+            }
         }
         errorMsg = null;
         isCompatible = true;
-- 
1.7.5.4



More information about the Android mailing list