diff --git a/cmake/PreseedMSVCCache.cmake b/cmake/PreseedMSVCCache.cmake index a4095275e9..d0b5ebfe4b 100644 --- a/cmake/PreseedMSVCCache.cmake +++ b/cmake/PreseedMSVCCache.cmake @@ -1,5 +1,6 @@ if(MSVC) function(SDL_Preseed_CMakeCache) + set(COMPILER_SUPPORTS_W3 "1" CACHE INTERNAL "Test /W3") set(COMPILER_SUPPORTS_FDIAGNOSTICS_COLOR_ALWAYS "" CACHE INTERNAL "Test COMPILER_SUPPORTS_FDIAGNOSTICS_COLOR_ALWAYS") set(HAVE_ALLOCA_H "" CACHE INTERNAL "Have include alloca.h") set(HAVE_AUDIOCLIENT_H "1" CACHE INTERNAL "Have include audioclient.h") diff --git a/cmake/sdlcompilers.cmake b/cmake/sdlcompilers.cmake index 9db746021b..fc352e19c8 100644 --- a/cmake/sdlcompilers.cmake +++ b/cmake/sdlcompilers.cmake @@ -30,6 +30,14 @@ function(SDL_AddCommonCompilerFlags TARGET) option(SDL_WERROR "Enable -Werror" OFF) get_property(TARGET_TYPE TARGET "${TARGET}" PROPERTY TYPE) + if(MSVC) + cmake_push_check_state() + check_c_compiler_flag("/W3" COMPILER_SUPPORTS_W3) + if(COMPILER_SUPPORTS_W3) + target_compile_options(${TARGET} PRIVATE "/W3") + endif() + cmake_pop_check_state() + endif() if(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QCC) if(MINGW)