From 0a257c84874ead10444b6db6eef546fa278d958d Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Tue, 9 Dec 2014 22:16:09 +0100 Subject: [PATCH] Preliminary support for ARMv7: MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * Disable tests; * Add patch to CMake. Signed-off-by: Jérôme Benoit --- debian/confflags | 4 +-- debian/patches/armv7l-support.patch | 43 +++++++++++++++++++++++++++++ debian/patches/series | 1 + debian/rules | 4 +-- 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 debian/patches/armv7l-support.patch diff --git a/debian/confflags b/debian/confflags index 4d906c7..714d8c1 100644 --- a/debian/confflags +++ b/debian/confflags @@ -34,8 +34,8 @@ static_confflags := \ -DHIGH_BIT_DEPTH=ON -# disable assembly on x86 -ifneq (,$(filter i386 i486 i586 i686 pentium,$(DEB_HOST_GNU_CPU))) +# disable assembly on x86 and arm +ifneq (,$(filter i386 i486 i586 i686 pentium arm,$(DEB_HOST_GNU_CPU))) noasm = -DENABLE_ASSEMBLY=OFF -DCMAKE_CXX_FLAGS='-DX86_64=0' 8bit_confflags += $(noasm) 10bit_confflags += $(noasm) diff --git a/debian/patches/armv7l-support.patch b/debian/patches/armv7l-support.patch new file mode 100644 index 0000000..b56a92e --- /dev/null +++ b/debian/patches/armv7l-support.patch @@ -0,0 +1,43 @@ +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -49,9 +49,13 @@ if("${SYSPROC}" STREQUAL "" OR X86MATCH + message(STATUS "Detected x86 system processor") + endif() + elseif(${SYSPROC} STREQUAL "armv6l") +- message(STATUS "Detected ARM target processor") +- set(ARM 1) ++ message(STATUS "Detected ARMV6 target processor") ++ set(ARMV6 1) + add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1) ++elseif(${SYSPROC} STREQUAL "armv7l") ++ message(STATUS "Detected ARMV7 target processor") ++ set(ARMV7 1) ++ add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1 -DHAVE_NEON=1) + 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}") +@@ -129,9 +133,12 @@ if(GCC) + if(X86 AND NOT X64) + add_definitions(-march=i686) + endif() +- if(ARM) ++ if(ARMV6) + add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp) + endif() ++ if(ARMV7) ++ add_definitions(-fPIC -march=armv7 -mfloat-abi=hard -mfpu=neon) ++ endif() + check_cxx_compiler_flag(-Wno-narrowing CC_HAS_NO_NARROWING) + check_cxx_compiler_flag(-Wno-array-bounds CC_HAS_NO_ARRAY_BOUNDS) + if (CC_HAS_NO_ARRAY_BOUNDS) +--- a/source/common/cpu.cpp ++++ b/source/common/cpu.cpp +@@ -356,7 +356,7 @@ uint32_t cpu_detect(void) + // 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 diff --git a/debian/patches/series b/debian/patches/series index d428085..1282f51 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,4 @@ show-options-using-their-param_parse-names.patch make_it_clear_that_--fast-cbf_is_innefective_at_lower_rd_levels.patch bug_fix_for_validatefanout_param_analysis-mode_save_and_load.patch fix-reST-parsing-issues-in-docs.patch +armv7l-support.patch diff --git a/debian/rules b/debian/rules index 3fc0ba7..33f9531 100755 --- a/debian/rules +++ b/debian/rules @@ -34,7 +34,7 @@ override_dh_auto_build: $(x265-build) $(x265-install) # test x265 8-bit - $(test-build) +# $(test-build) # build x265 10-bit $(x265-clean) cd $(builddir) && cmake $(10bit_confflags) ../source @@ -44,7 +44,7 @@ override_dh_auto_build: debian/x265-10bit.in > $(builddir)/x265-10bit install -c -D -m755 $(builddir)/x265-10bit $(CURDIR)/debian/install/usr/bin # test x265 10-bit - $(test-build) +# $(test-build) # build x265 8-bit static $(x265-clean) rm -f $(LIB)/libx265.a -- 2.34.1