diff -urN a/source/CMakeLists.txt b/source/CMakeLists.txt --- a/source/CMakeLists.txt 2015-09-22 02:10:07.000000000 -0600 +++ b/source/CMakeLists.txt 2015-10-11 08:11:59.385611550 -0600 @@ -56,10 +56,22 @@ message(STATUS "Detected POWER target processor") set(POWER 1) add_definitions(-DX265_ARCH_POWER=1) +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) +elseif(${SYSPROC} STREQUAL "aarch64") + message(STATUS "Detected AArch64 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}") @@ -169,8 +181,8 @@ elseif(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() if(FPROFILE_GENERATE) if(INTEL_CXX) diff -urN a/source/common/cpu.cpp b/source/common/cpu.cpp --- a/source/common/cpu.cpp 2015-09-22 02:10:07.000000000 -0600 +++ b/source/common/cpu.cpp 2015-10-11 07:48:42.745386369 -0600 @@ -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;