From ef1014ac68eda75d8cb0940f3d389ea5ec02eb39 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Tue, 2 Jan 2018 19:06:14 -0400 Subject: [PATCH] configure script: Implement testing for build-time Metal SDK support. --- configure | 40 ++++++++++++++++++++++++++++++++++++++-- configure.in | 28 ++++++++++++++++++++++++---- 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/configure b/configure index ff5f7fc24..b58437841 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 + #import + #import + + #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 fd0224c23..669a3d885 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 + #import + #import + + #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 }