[packages/x265] update arm flags handling
atler
atler at pld-linux.org
Tue Feb 25 19:24:15 CET 2025
commit d6e318dd5e0a5cec96dbfe9ad1576eee26a49106
Author: Jan Palus <atler at pld-linux.org>
Date: Tue Feb 25 19:01:21 2025 +0100
update arm flags handling
- arm64 are runtime detected now
- add missing ENABLE_NEON for ARM required due to bug:
https://bitbucket.org/multicoreware/x265_git/issues/977
- always enable PIC
x265-arm_flags.patch | 161 ++++++++++-----------------------------------------
x265.spec | 13 +----
2 files changed, 32 insertions(+), 142 deletions(-)
---
diff --git a/x265.spec b/x265.spec
index d104fe0..b63167d 100644
--- a/x265.spec
+++ b/x265.spec
@@ -99,22 +99,15 @@ Statyczna biblioteka x265.
%build
install -d source/build
cd source/build
-%ifarch %{arm} aarch64
-export CFLAGS="%{rpmcflags} -fPIC"
-export CXXFLAGS="%{rpmcxxflags} -fPIC"
%ifarch %{arm_with_neon}
-export CFLAGS="$CFLAGS -DHAVE_NEON"
-export CXXFLAGS="$CXXFLAGS -DHAVE_NEON"
-%endif
-%ifarch aarch64
-export CFLAGS="$CFLAGS -flax-vector-conversions"
-export CXXFLAGS="$CXXFLAGS -flax-vector-conversions"
-%endif
+export CFLAGS="%{rpmcflags} -DHAVE_NEON"
+export CXXFLAGS="%{rpmcxxflags} -DHAVE_NEON"
%endif
%cmake .. \
-DENABLE_ASSEMBLY=%{!?with_asm:OFF}%{?with_asm:ON} \
-DENABLE_HDR10_PLUS=ON \
%{?with_vmaf:-DENABLE_LIBVMAF=ON} \
+ -DENABLE_PIC=ON \
-DENABLE_SHARED=ON \
%{?with_svt_hevc:-DENABLE_SVT_HEVC=ON} \
-DLIB_INSTALL_DIR=%{_lib}
diff --git a/x265-arm_flags.patch b/x265-arm_flags.patch
index 68c17ad..d4abfab 100644
--- a/x265-arm_flags.patch
+++ b/x265-arm_flags.patch
@@ -1,6 +1,6 @@
---- x265_3.6/source/CMakeLists.txt.orig 2024-05-26 20:21:11.842336919 +0200
-+++ x265_3.6/source/CMakeLists.txt 2024-05-26 20:28:09.917087813 +0200
-@@ -44,10 +44,8 @@
+--- x265_4.1/source/CMakeLists.txt.orig 2025-02-25 13:15:13.529283788 +0100
++++ x265_4.1/source/CMakeLists.txt 2025-02-25 13:16:48.416480326 +0100
+@@ -46,10 +46,8 @@
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
endif()
set(X86_ALIASES x86 i386 i686 x86_64 amd64)
@@ -11,7 +11,7 @@
list(FIND ARM64_ALIASES "${SYSPROC}" ARM64MATCH)
set(POWER_ALIASES powerpc64 powerpc64le ppc64 ppc64le)
list(FIND POWER_ALIASES "${SYSPROC}" POWERMATCH)
-@@ -70,7 +68,7 @@
+@@ -72,7 +70,7 @@
add_definitions(-DPPC64=1)
message(STATUS "Detected POWER PPC64 target processor")
endif()
@@ -20,7 +20,15 @@
if(CROSS_COMPILE_ARM)
message(STATUS "Cross compiling for ARM arch")
else()
-@@ -244,123 +244,7 @@
+@@ -80,6 +78,7 @@
+ endif()
+ message(STATUS "Detected ARM target processor")
+ set(ARM 1)
++ option(ENABLE_NEON "Enable Neon" ON)
+ add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
+ elseif(ARM64MATCH GREATER "-1")
+ message(STATUS "Detected ARM64 target processor")
+@@ -265,18 +264,6 @@
endif()
endif()
endif()
@@ -36,134 +44,23 @@
- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
- endif()
- endif()
-- if(ARM64)
-- message(STATUS "Found Neon")
-- set(CPU_HAS_NEON 1)
-- add_definitions(-DX265_ARCH_ARM64=1 -DHAVE_NEON=1)
--
-- if(CROSS_COMPILE_ARM64)
-- # Handle cross-compilation options.
-- if(CROSS_COMPILE_NEON_DOTPROD)
-- set(CPU_HAS_NEON_DOTPROD 1)
-- endif()
-- if(CROSS_COMPILE_NEON_I8MM)
-- set(CPU_HAS_NEON_I8MM 1)
-- # Impose the constraint that Neon I8MM implies Neon DotProd.
-- set(CPU_HAS_NEON_DOTPROD 1)
-- endif()
-- if(CROSS_COMPILE_SVE)
-- set(CPU_HAS_SVE 1)
-- # Impose the constraint that SVE implies Neon DotProd and I8MM.
-- set(CPU_HAS_NEON_DOTPROD 1)
-- set(CPU_HAS_NEON_I8MM 1)
-- endif()
-- if(CROSS_COMPILE_SVE2)
-- set(CPU_HAS_SVE2 1)
-- # SVE2 implies SVE and Neon DotProd.
-- set(CPU_HAS_SVE 1)
-- set(CPU_HAS_NEON_DOTPROD 1)
-- # Impose the constraint that SVE2 implies Neon I8MM.
-- set(CPU_HAS_NEON_I8MM 1)
-- endif()
-- else()
-- if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
-- find_package(NEON_DOTPROD)
-- find_package(NEON_I8MM)
-- find_package(SVE)
-- find_package(SVE2)
-- else()
-- message(STATUS "Compile time feature detection unsupported on this platform")
-- endif()
-- endif()
--
-- if(CPU_HAS_NEON_DOTPROD)
-- # Neon DotProd is mandatory from Armv8.4.
-- message(STATUS "Found Neon DotProd")
-- set(ARM_ARGS -O3 -march=armv8.2-a+dotprod)
-- add_definitions(-DHAVE_NEON_DOTPROD=1)
-- endif()
-- if(CPU_HAS_NEON_I8MM)
-- # Neon I8MM is mandatory from Armv8.6.
-- message(STATUS "Found Neon I8MM")
-- # Impose the constraint that Neon I8MM implies Neon DotProd.
-- if(NOT CPU_HAS_NEON_DOTPROD)
-- message(FATAL_ERROR "Unsupported AArch64 feature combination (Neon I8MM without Neon DotProd)")
-- endif()
-- set(ARM_ARGS -O3 -march=armv8.2-a+dotprod+i8mm)
-- add_definitions(-DHAVE_NEON_I8MM=1)
-- endif()
-- if(CPU_HAS_SVE)
-- message(STATUS "Found SVE")
-- # Impose the constraint that SVE implies Neon I8MM.
-- if(NOT CPU_HAS_NEON_I8MM)
-- message(FATAL_ERROR "Unsupported AArch64 feature combination (SVE without Neon I8MM)")
-- endif()
-- set(ARM_ARGS -O3 -march=armv8.2-a+dotprod+i8mm+sve)
-- add_definitions(-DHAVE_SVE=1)
-- endif()
-- if(CPU_HAS_SVE2)
-- message(STATUS "Found SVE2")
-- # SVE2 is only available from Armv9.0, and armv9-a implies +dotprod
-- set(ARM_ARGS -O3 -march=armv9-a+i8mm+sve2)
-- add_definitions(-DHAVE_SVE2=1)
-- endif()
-- set(ARM_ARGS ${ARM_ARGS} -fPIC)
-- # Do not allow implicit vector type conversions in Clang builds (this
-- # is already the default in GCC builds).
-- check_cxx_compiler_flag(-flax-vector-conversions=none CC_HAS_FLAX_VEC_CONV_NONE)
-- if(CC_HAS_FLAX_VEC_CONV_NONE)
-- set(ARM_ARGS ${ARM_ARGS} -flax-vector-conversions=none)
-- endif()
-- if(CPU_HAS_SVE)
-- set(SVE_HEADER_TEST "
--#ifndef __ARM_NEON_SVE_BRIDGE
--#error 1
--#endif
--#include <arm_sve.h>
--#include <arm_neon_sve_bridge.h>
--int main() { return 0; }")
-- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-- # CMAKE_REQUIRED_FLAGS requires a space-delimited string, whereas
-- # ARM_ARGS is defined and used elsewhere as a ;-list.
-- foreach(ARM_ARG ${ARM_ARGS})
-- string(APPEND CMAKE_REQUIRED_FLAGS " ${ARM_ARG}")
-- endforeach()
-- check_c_source_compiles("${SVE_HEADER_TEST}" SVE_HEADER_C_TEST_COMPILED)
-- check_cxx_source_compiles("${SVE_HEADER_TEST}" SVE_HEADER_CXX_TEST_COMPILED)
-- set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-- if(SVE_HEADER_C_TEST_COMPILED AND SVE_HEADER_CXX_TEST_COMPILED)
-- add_definitions(-DHAVE_SVE_BRIDGE=1)
-- set(HAVE_SVE_BRIDGE 1)
-- endif()
-- endif()
-- endif()
-- if(ENABLE_PIC)
-- list(APPEND ARM_ARGS -DPIC)
-- endif()
-- add_definitions(${ARM_ARGS})
-+ string(REPLACE " " ";" ARM_ARGS ${CMAKE_CXX_FLAGS})
- if(FPROFILE_GENERATE)
- if(INTEL_CXX)
- add_definitions(-prof-gen -prof-dir="${CMAKE_CURRENT_BINARY_DIR}")
-diff -ur x265_3.5.orig/source/dynamicHDR10/CMakeLists.txt x265_3.5/source/dynamicHDR10/CMakeLists.txt
---- x265_3.5.orig/source/dynamicHDR10/CMakeLists.txt 2021-03-16 13:53:00.000000000 +0100
-+++ x265_3.5/source/dynamicHDR10/CMakeLists.txt 2021-06-30 10:23:02.973020022 +0200
-@@ -42,18 +42,6 @@
- endif()
+ if(ARM64)
+ set(CPU_HAS_NEON 1)
+ add_definitions(-DX265_ARCH_ARM64=1)
+@@ -395,7 +382,6 @@
+ message(STATUS "Found SVE2")
+ add_definitions(-DHAVE_SVE2=1)
endif()
+- set(ARM_ARGS -O3)
+ # Do not allow implicit vector type conversions in Clang builds (this
+ # is already the default in GCC builds).
+ check_cxx_compiler_flag(-flax-vector-conversions=none CC_HAS_FLAX_VEC_CONV_NONE)
+@@ -406,6 +392,8 @@
+ if(ENABLE_PIC)
+ list(APPEND ARM_ARGS -DPIC -fPIC)
endif()
-- if(ARM AND CROSS_COMPILE_ARM)
-- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC)
-- elseif(ARM)
-- find_package(Neon)
-- if(CPU_HAS_NEON)
-- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)
-- add_definitions(-DHAVE_NEON)
-- else()
-- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
-- endif()
-- endif()
-- add_definitions(${ARM_ARGS})
++ string(REPLACE " " ";" ARM_ARGS_CXX_FLAGS ${CMAKE_CXX_FLAGS})
++ set(ARM_ARGS ${ARM_ARGS} ${ARM_ARGS_CXX_FLAGS})
+ add_definitions(${ARM_ARGS})
if(FPROFILE_GENERATE)
if(INTEL_CXX)
- add_definitions(-prof-gen -prof-dir="${CMAKE_CURRENT_BINARY_DIR}")
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/x265.git/commitdiff/d6e318dd5e0a5cec96dbfe9ad1576eee26a49106
More information about the pld-cvs-commit
mailing list