From 8ff405bc0622d3f2031da8fc535fcd9ec9894d10 Mon Sep 17 00:00:00 2001 From: Anthony Roberts Date: Thu, 20 Feb 2025 11:24:22 +0100 Subject: [PATCH] Windows: Enable OpenMP on ARM64, and quiet new noisy warning New versions of LLVM now ship with OpenMP for these devices, so enable accordingly. The disabled warning was causing substantial spam in buildbot logs. Pull Request: https://projects.blender.org/blender/blender/pulls/134583 --- CMakeLists.txt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d6e1dae7af..63d16b245a1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -411,10 +411,17 @@ option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON) if(UNIX AND NOT APPLE) option(WITH_OPENMP_STATIC "Link OpenMP statically (only used by the release environment)" OFF) mark_as_advanced(WITH_OPENMP_STATIC) -elseif(WIN32 AND CMAKE_C_COMPILER_ID MATCHES "Clang" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") - # At time of testing (LLVM 18.1.6) OMP is not included in public LLVM builds for Windows ARM64 - set(WITH_OPENMP OFF) - set(WITH_OPENMP_STATIC OFF) +elseif(WIN32 AND CMAKE_C_COMPILER_ID MATCHES "Clang" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.1) + # Prior to LLVM 19.1, OpenMP was not included in public LLVM builds for Windows ARM64 + if(WITH_OPENMP) + if(WITH_STRICT_BUILD_OPTIONS) + message(SEND_ERROR "OpenMP enabled, but LLVM ${CMAKE_CXX_COMPILER_VERSION} detected, minimum of 19.1 required for OpenMP functionality") + else() + message(STATUS "Disabling OpenMP, LLVM ${CMAKE_CXX_COMPILER_VERSION} detected, minimum of 19.1 required for OpenMP functionality") + endif() + set(WITH_OPENMP OFF) + set(WITH_OPENMP_STATIC OFF) + endif() endif() if(WITH_GHOST_X11) @@ -2228,6 +2235,8 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") # And some additional ones that came up when using LLVM 18.1.8 on Windows ARM64 C_WARN_CLANG_CL_SWITCH_DEFAULT -Wno-switch-default C_WARN_CLANG_CL_NAN_INFINITY_DISABLED -Wno-nan-infinity-disabled + # And another from 19.1.5 + C_WARN_CLANG_CL_PRE_C11_COMPAT -Wno-pre-c11-compat ) add_check_cxx_compiler_flags( @@ -2362,6 +2371,8 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") # And some additional ones that came up when using LLVM 18.1.8 on Windows ARM64 CXX_WARN_CLANG_CL_SWITCH_DEFAULT -Wno-switch-default CXX_WARN_CLANG_CL_NAN_INFINITY_DISABLED -Wno-nan-infinity-disabled + # And another from 19.1.5 + CXX_WARN_CLANG_CL_PRE_C11_COMPAT -Wno-pre-c11-compat ) endif()