sdl2-compat: cmake: no need for -lmingw32 when using -Wl,-undefined,WinMain

From fa5cd89bd8281d1531ec9b29a7a9fb25f8e7bcda Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 29 Nov 2022 16:06:27 +0100
Subject: [PATCH] cmake: no need for -lmingw32 when using
 -Wl,-undefined,WinMain

---
 CMakeLists.txt | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b14f033..61ad2e3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -211,6 +211,13 @@ endif()
 #endif()
 add_library(SDL2::SDL2main ALIAS SDL2main)
 target_include_directories(SDL2main PRIVATE "include/SDL2")
+if(MINGW OR CYGWIN)
+  if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+    target_link_libraries(SDL2main PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-Wl,--undefined=_WinMain@16>")
+  else()
+    target_link_libraries(SDL2main PUBLIC "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-Wl,--undefined=WinMain>")
+  endif()
+endif()
 
 # SDLtest library...
 add_library(SDL2_test STATIC
@@ -262,11 +269,7 @@ if(SDL2COMPAT_TESTS)
   macro(test_program _NAME _SRCS)
     add_executable(${_NAME} ${_SRCS})
     target_include_directories(${_NAME} PRIVATE "include/SDL2")
-    if(MINGW)
-      target_link_libraries(${_NAME} PRIVATE mingw32 SDL2main SDL2_test SDL2)
-    else()
-      target_link_libraries(${_NAME} PRIVATE SDL2main SDL2_test SDL2)
-    endif()
+    target_link_libraries(${_NAME} PRIVATE SDL2::SDL2main SDL2::SDL2test SDL2::SDL2)
     # Turn off MSVC's aggressive C runtime warnings for the old test programs.
     if(MSVC)
       target_compile_definitions(${_NAME} PRIVATE ${HAVE_OPENGL_DEFINE} _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE)