diff --git a/pkgs/by-name/op/openvino/gcc-16-fix.patch b/pkgs/by-name/op/openvino/gcc-16-fix.patch new file mode 100644 index 000000000000..26d3183ea093 --- /dev/null +++ b/pkgs/by-name/op/openvino/gcc-16-fix.patch @@ -0,0 +1,17 @@ +diff --git a/cmake/developer_package/compile_flags/functions.cmake b/cmake/developer_package/compile_flags/functions.cmake +index baff79893fe0..a2ca8fa764c1 100644 +--- a/cmake/developer_package/compile_flags/functions.cmake ++++ b/cmake/developer_package/compile_flags/functions.cmake +@@ -290,7 +290,11 @@ macro(ov_arm_sve_optimization_flags flags) + # (svld1/svmla_f32/...) and are unaffected. Both GCC and Clang auto-vectorize to SVE here, + # but the knob is compiler-specific (Android/MSVC/IntelLLVM handled above). + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") +- list(APPEND ${flags} --param=aarch64-autovec-preference=1) ++ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16) ++ list(APPEND ${flags} --param=aarch64-autovec-preference=asimd-only) ++ else() ++ list(APPEND ${flags} --param=aarch64-autovec-preference=1) ++ endif() + elseif(CMAKE_CXX_COMPILER_ID MATCHES "^(Clang|AppleClang)$") + list(APPEND ${flags} -mllvm -scalable-vectorization=off) + endif() diff --git a/pkgs/by-name/op/openvino/package.nix b/pkgs/by-name/op/openvino/package.nix index 5ac50fcc31d0..5b97a543359d 100644 --- a/pkgs/by-name/op/openvino/package.nix +++ b/pkgs/by-name/op/openvino/package.nix @@ -92,6 +92,10 @@ stdenv.mkDerivation (finalAttrs: { patches = [ # https://aur.archlinux.org/cgit/aur.git/tree/010-openvino-change-install-paths.patch?h=openvino ./cmake-install-paths.patch + + # Fix aarch64 build on GCC 16 + # Upstream PR: https://github.com/openvinotoolkit/openvino/pull/38268/changes + ./gcc-16-fix.patch ]; # Fix arm computelib ar/ranlib toolchain paths for LTO awareness