configure script: Implement testing for build-time Metal SDK support.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
diff --git a/configure b/configure
index ff5f7fc..b584378 100755
--- a/configure
+++ b/configure
@@ -21230,11 +21230,47 @@ else
fi
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -x objective-c"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Metal framework" >&5
+$as_echo_n "checking for Metal framework... " >&6; }
+ have_metal=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #import <Cocoa/Cocoa.h>
+ #import <Metal/Metal.h>
+ #import <QuartzCore/CAMetalLayer.h>
+
+ #if !TARGET_CPU_X86_64
+ #error Metal doesn't work on this configuration
+ #endif
+
+int
+main ()
+{
+
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ have_metal=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$save_CFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_metal" >&5
+$as_echo "$have_metal" >&6; }
+ if test x$have_metal = xyes; then
$as_echo "#define SDL_VIDEO_RENDER_METAL 1" >>confdefs.h
- SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
- SUMMARY_video="${SUMMARY_video} metal"
+ SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
+ SUMMARY_video="${SUMMARY_video} metal"
+ fi
fi
}
diff --git a/configure.in b/configure.in
index fd0224c..669a3d8 100644
--- a/configure.in
+++ b/configure.in
@@ -2066,10 +2066,30 @@ CheckMETAL()
AC_HELP_STRING([--enable-render-metal], [enable the Metal render driver [[default=yes]]]),
, enable_render_metal=yes)
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
- dnl This should maybe make sure you have a supported SDK version.
- AC_DEFINE(SDL_VIDEO_RENDER_METAL, 1, [ ])
- SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
- SUMMARY_video="${SUMMARY_video} metal"
+ save_CFLAGS="$CFLAGS"
+ dnl Work around that we don't have Objective-C support in autoconf
+ CFLAGS="$CFLAGS -x objective-c"
+ AC_MSG_CHECKING(for Metal framework)
+ have_metal=no
+ AC_TRY_COMPILE([
+ #import <Cocoa/Cocoa.h>
+ #import <Metal/Metal.h>
+ #import <QuartzCore/CAMetalLayer.h>
+
+ #if !TARGET_CPU_X86_64
+ #error Metal doesn't work on this configuration
+ #endif
+ ],[
+ ],[
+ have_metal=yes
+ ])
+ CFLAGS="$save_CFLAGS"
+ AC_MSG_RESULT($have_metal)
+ if test x$have_metal = xyes; then
+ AC_DEFINE(SDL_VIDEO_RENDER_METAL, 1, [ ])
+ SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
+ SUMMARY_video="${SUMMARY_video} metal"
+ fi
fi
}