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()