cmake: Enable CET compatibility for x86/x64 targets using VS 16.7+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa36eb0..276c31e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -688,6 +688,11 @@ if(MSVC)
target_compile_definitions(sdl-build-options INTERFACE "-D_CRT_SECURE_NO_DEPRECATE")
target_compile_definitions(sdl-build-options INTERFACE "-D_CRT_NONSTDC_NO_DEPRECATE")
target_compile_definitions(sdl-build-options INTERFACE "-D_CRT_SECURE_NO_WARNINGS")
+
+ # CET support was added in VS 16.7
+ if(MSVC_VERSION GREATER 1926 AND NOT CMAKE_GENERATOR_PLATFORM MATCHES ARM)
+ list(APPEND EXTRA_LDFLAGS_BUILD "-CETCOMPAT")
+ endif()
endif()
if(MSVC)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 9639b60..8b2738a 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -47,6 +47,11 @@ if(WINDOWS)
link_libraries(mingw32)
endif()
+ # CET support was added in VS 16.7
+ if(MSVC_VERSION GREATER 1926 AND NOT CMAKE_GENERATOR_PLATFORM MATCHES ARM)
+ link_libraries(-CETCOMPAT)
+ endif()
+
# FIXME: Parent directory CMakeLists.txt only sets these for mingw/cygwin,
# but we need them for VS as well.
link_libraries(SDL2main)