SDL: cmake: Don't trust the HAVE_IMMINTRIN_H check on Apple targets.

From bf1d7a3a15a6c090188974bec8ca84eb1903d4f7 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Sat, 18 Sep 2021 10:31:37 -0400
Subject: [PATCH] cmake: Don't trust the HAVE_IMMINTRIN_H check on Apple
 targets.

Otherwise universal builds might try to include an Intel-specific header
on ARM builds, etc.

Fixes #4753.
---
 include/SDL_config.h.cmake | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake
index 7b20a1d686..446c094686 100644
--- a/include/SDL_config.h.cmake
+++ b/include/SDL_config.h.cmake
@@ -222,7 +222,19 @@
 #cmakedefine HAVE_INOTIFY_INIT 1
 #cmakedefine HAVE_INOTIFY_INIT1 1
 #cmakedefine HAVE_INOTIFY 1
-#cmakedefine HAVE_IMMINTRIN_H 1
+
+/* Apple platforms might be building universal binaries, where Intel builds
+   can use immintrin.h but other architectures can't. */
+#ifdef __APPLE__
+#  if defined(__has_include) && (defined(__i386__) || defined(__x86_64))
+#    if __has_include(<immintrin.h>)
+#       define HAVE_IMMINTRIN_H 1
+#    endif
+#  endif
+#else  /* non-Apple platforms can use the normal CMake check for this.
+#  cmakedefine HAVE_IMMINTRIN_H 1
+#endif
+
 #cmakedefine HAVE_LIBUDEV_H 1
 #cmakedefine HAVE_LIBSAMPLERATE_H 1
 #cmakedefine HAVE_LIBDECOR_H  1