SDL: cmake: check essential headers even when building with SDL_LIBC=OFF

From 5151cbf4d194fe9a2ddc19807ca9d37a47c8061b Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 26 Nov 2022 02:05:22 +0100
Subject: [PATCH] cmake: check essential headers even when building with
 SDL_LIBC=OFF

---
 CMakeLists.txt | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 23b528939765..ef8d76ca5394 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1156,11 +1156,18 @@ if(SDL_LIBC)
     check_struct_has_member("struct sigaction" "sa_sigaction" "signal.h" HAVE_SA_SIGACTION)
   endif()
 else()
-  if(WINDOWS)
-    set(HAVE_STDARG_H 1)
-    set(HAVE_STDDEF_H 1)
-    check_include_file(stdint.h HAVE_STDINT_H)
-  endif()
+  set(headers
+    stdarg.h
+    stddef.h
+    stdint.h
+  )
+  foreach(_HEADER ${headers})
+    string(TOUPPER "${_HEADER}" HEADER_IDENTIFIER)
+    string(REGEX REPLACE "[./]" "_" HEADER_IDENTIFIER "${HEADER_IDENTIFIER}")
+    set(LIBC_HAS_VAR "LIBC_HAS_${HEADER_IDENTIFIER}")
+    check_include_file("${_HEADER}" "${LIBC_HAS_VAR}")
+    set(HAVE_${HEADER_IDENTIFIER} ${${LIBC_HAS_VAR}})
+  endforeach()
 endif()