Commit bf1d7a3a15a6c090188974bec8ca84eb1903d4f7

Ryan C. Gordon 2021-09-18T10:31:37

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.

diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake
index 7b20a1d..446c094 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