[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