From 872e1ac6f221b990092baf9cbba09862ddcffbfe Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 17 Nov 2005 03:43:42 +0000 Subject: [PATCH] Fixed Altivec support on Mac OS X. --- configure.in | 76 +++++++++++++++++++++++++++++------------- src/video/SDL_blit_A.c | 2 ++ src/video/SDL_blit_N.c | 2 ++ 3 files changed, 56 insertions(+), 24 deletions(-) diff --git a/configure.in b/configure.in index af574f488..f8581222d 100644 --- a/configure.in +++ b/configure.in @@ -1922,42 +1922,70 @@ CheckUSBHID() dnl Check for altivec instruction support using gas syntax CheckAltivec() { - dnl FIXME: Theoretically, you might not have altivec.h, we should check - dnl FIXME: that seperately, but I think all major platforms have it - dnl FIXME: at the moment... --ryan. + have_altivec_h_hdr=no + AC_CHECK_HEADER(altivec.h, have_altivec_h_hdr=yes) save_CFLAGS="${CFLAGS}" have_gcc_altivec=no AC_MSG_CHECKING(for Altivec with GCC -maltivec option) CFLAGS="${save_CFLAGS} -DGCC_ALTIVEC -DUSE_ALTIVEC_BLITTERS -maltivec" - AC_TRY_COMPILE([ - #include - vector unsigned int vzero() { - return vec_splat_u32(0); - } - ],[ - ],[ - have_gcc_altivec=yes - ]) - AC_MSG_RESULT($have_gcc_altivec) + + if test x$have_altivec_h_hdr = xyes; then + AC_TRY_COMPILE([ + #include + vector unsigned int vzero() { + return vec_splat_u32(0); + } + ],[ + ],[ + have_gcc_altivec=yes + ]) + AC_MSG_RESULT($have_gcc_altivec) + else + AC_TRY_COMPILE([ + vector unsigned int vzero() { + return vec_splat_u32(0); + } + ],[ + ],[ + have_gcc_altivec=yes + ]) + AC_MSG_RESULT($have_gcc_altivec) + fi if test x$have_gcc_altivec = xno; then AC_MSG_CHECKING(for Altivec with GCC -faltivec option) - CFLAGS="${CFLAGS} -DGCC_ALTIVEC -DUSE_ALTIVEC_BLITTERS -faltivec" - AC_TRY_COMPILE([ - #include - vector unsigned int vzero() { - return vec_splat_u32(0); - } - ],[ - ],[ - have_gcc_altivec=yes - ]) - AC_MSG_RESULT($have_gcc_altivec) + CFLAGS="${save_CFLAGS} -DGCC_ALTIVEC -DUSE_ALTIVEC_BLITTERS -faltivec" + if test x$have_altivec_h_hdr = xyes; then + AC_TRY_COMPILE([ + #include + vector unsigned int vzero() { + return vec_splat_u32(0); + } + ],[ + ],[ + have_gcc_altivec=yes + ]) + AC_MSG_RESULT($have_gcc_altivec) + else + AC_TRY_COMPILE([ + vector unsigned int vzero() { + return vec_splat_u32(0); + } + ],[ + ],[ + have_gcc_altivec=yes + ]) + AC_MSG_RESULT($have_gcc_altivec) + fi fi if test x$have_gcc_altivec = xno; then CFLAGS="${save_CFLAGS}" + else + if test x$have_altivec_h_hdr = xyes; then + CFLAGS="${CFLAGS} -DHAVE_ALTIVEC_H" + fi fi } diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index 2e39dad96..3bacb5d93 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -422,7 +422,9 @@ static void BlitRGBtoRGBPixelAlphaMMX(SDL_BlitInfo *info) #endif #ifdef USE_ALTIVEC_BLITTERS +#ifdef HAVE_ALTIVEC_H #include +#endif #include #if ((defined MACOSX) && (__GNUC__ < 4)) diff --git a/src/video/SDL_blit_N.c b/src/video/SDL_blit_N.c index 549dcb660..fa924ec28 100644 --- a/src/video/SDL_blit_N.c +++ b/src/video/SDL_blit_N.c @@ -36,7 +36,9 @@ static char rcsid = /* Functions to blit from N-bit surfaces to other surfaces */ #ifdef USE_ALTIVEC_BLITTERS +#ifdef HAVE_ALTIVEC_H #include +#endif #include #include #ifdef MACOSX