diff -urN a/source/CMakeLists.txt b/source/CMakeLists.txt --- a/source/CMakeLists.txt 2015-02-10 14:15:13.000000000 -0700 +++ b/source/CMakeLists.txt 2015-02-12 06:25:01.334927114 -0700 @@ -46,10 +46,18 @@ set(X64 1) add_definitions(-DX86_64=1) endif() +elseif(${SYSPROC} MATCHES "armv5.*") + message(STATUS "Detected ARMV5 system processor") + set(ARMV5 1) + add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=0 -DHAVE_NEON=0) elseif(${SYSPROC} STREQUAL "armv6l") - message(STATUS "Detected ARM target processor") - set(ARM 1) - add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1) + message(STATUS "Detected ARMV6 system processor") + set(ARMV6 1) + add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0) +elseif(${SYSPROC} STREQUAL "armv7l") + message(STATUS "Detected ARMV7 system processor") + set(ARMV7 1) + add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=0) else() message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown") message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}") @@ -133,8 +141,8 @@ if(X86 AND NOT X64) add_definitions(-march=i686) endif() - if(ARM) - add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp) + if(ARMV7) + add_definitions(-fPIC) endif() check_cxx_compiler_flag(-Wno-narrowing CC_HAS_NO_NARROWING) check_cxx_compiler_flag(-Wno-array-bounds CC_HAS_NO_ARRAY_BOUNDS) diff -urN a/source/common/cpu.cpp b/source/common/cpu.cpp --- a/source/common/cpu.cpp 2015-02-10 14:15:13.000000000 -0700 +++ b/source/common/cpu.cpp 2015-02-12 06:25:01.334927114 -0700 @@ -37,7 +37,7 @@ #include #endif -#if X265_ARCH_ARM && !defined(HAVE_NEON) +#if X265_ARCH_ARM && (!defined(HAVE_NEON) || HAVE_NEON==0) #include #include static sigjmp_buf jmpbuf; @@ -340,7 +340,6 @@ } canjump = 1; - x265_cpu_neon_test(); canjump = 0; signal(SIGILL, oldsig); #endif // if !HAVE_NEON @@ -356,7 +355,7 @@ // which may result in incorrect detection and the counters stuck enabled. // right now Apple does not seem to support performance counters for this test #ifndef __MACH__ - flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0; + //flags |= x265_cpu_fast_neon_mrc_test() ? X265_CPU_FAST_NEON_MRC : 0; #endif // TODO: write dual issue test? currently it's A8 (dual issue) vs. A9 (fast mrc) #endif // if HAVE_ARMV6