diff configure.in @ 2247:93994f65c74c

Removed hermes since it's LGPL and not compatible with a commercial license. Prepping for using MMX and SSE intrinsics instead of inline assembly. .. except for memcpy equivalents which only get faster if they can exploit the parallelism of loading into multiple SIMD registers. :)
author Sam Lantinga <slouken@libsdl.org>
date Wed, 15 Aug 2007 08:21:10 +0000
parents 93ea84f77d83
children c20476d7d7b3
line wrap: on
line diff
--- a/configure.in	Wed Aug 15 04:04:17 2007 +0000
+++ b/configure.in	Wed Aug 15 08:21:10 2007 +0000
@@ -276,6 +276,127 @@
               , enable_assembly=yes)
 if test x$enable_assembly = xyes; then
     AC_DEFINE(SDL_ASSEMBLY_ROUTINES)
+
+    dnl Check for various instruction support
+    AC_ARG_ENABLE(mmx,
+AC_HELP_STRING([--enable-mmx], [use MMX assembly routines [[default=yes]]]),
+                  , enable_mmx=yes)
+    if test x$enable_mmx = xyes; then
+        save_CFLAGS="$CFLAGS"
+        have_gcc_mmx=no
+        AC_MSG_CHECKING(for GCC -mmmx option)
+        mmx_CFLAGS="-mmmx"
+        CFLAGS="$save_CFLAGS $mmx_CFLAGS"
+
+        AC_TRY_COMPILE([
+        #include <mmintrin.h>
+        ],[
+        ],[
+        have_gcc_mmx=yes
+        ])
+        AC_MSG_RESULT($have_gcc_mmx)
+
+        if test x$have_gcc_mmx = xyes; then
+            EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS"
+        fi
+    fi
+
+    AC_ARG_ENABLE(sse,
+AC_HELP_STRING([--enable-sse], [use SSE assembly routines [[default=yes]]]),
+                  , enable_sse=yes)
+    if test x$enable_sse = xyes; then
+        save_CFLAGS="$CFLAGS"
+        have_gcc_sse=no
+        AC_MSG_CHECKING(for GCC -msse option)
+        sse_CFLAGS="-msse"
+        CFLAGS="$save_CFLAGS $sse_CFLAGS"
+
+        AC_TRY_COMPILE([
+        #include <xmmintrin.h>
+        ],[
+        ],[
+        have_gcc_sse=yes
+        ])
+        AC_MSG_RESULT($have_gcc_sse)
+
+        if test x$have_gcc_sse = xyes; then
+            EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS"
+        fi
+    fi
+
+    AC_ARG_ENABLE(altivec,
+AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes]]]),
+                  , enable_altivec=yes)
+    if test x$enable_altivec = xyes; then
+        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)
+        altivec_CFLAGS="-maltivec"
+        CFLAGS="$save_CFLAGS $altivec_CFLAGS"
+
+        if test x$have_altivec_h_hdr = xyes; then
+          AC_TRY_COMPILE([
+          #include <altivec.h>
+          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)
+            altivec_CFLAGS="-faltivec"
+            CFLAGS="$save_CFLAGS $altivec_CFLAGS"
+            if test x$have_altivec_h_hdr = xyes; then
+              AC_TRY_COMPILE([
+              #include <altivec.h>
+              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
+        CFLAGS="$save_CFLAGS"
+
+        if test x$have_gcc_altivec = xyes; then
+            AC_DEFINE(SDL_ALTIVEC_BLITTERS)
+            if test x$have_altivec_h_hdr = xyes; then
+              AC_DEFINE(HAVE_ALTIVEC_H)
+            fi
+            EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
+        fi
+    fi
 fi
 
 dnl See if the OSS audio interface is supported
@@ -629,167 +750,6 @@
     fi
 }
 
-dnl See if we can use x86 assembly blitters
-# NASM is available from: http://nasm.sourceforge.net
-CheckNASM()
-{
-    dnl Make sure we are running on an x86 platform
-    case $host in
-        i?86*)
-            ;;
-        *)
-        # Nope, bail early.
-            return
-            ;;
-    esac
-    dnl Check for NASM (for assembly blit routines)
-    AC_ARG_ENABLE(nasm,
-AC_HELP_STRING([--enable-nasm], [use nasm assembly blitters on x86 [[default=yes]]]),
-                  , enable_nasm=yes)
-    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_nasm = xyes; then
-        CompileNASM()
-        {
-            # Usage: CompileNASM <filename>
-            AC_MSG_CHECKING(to see if $NASM supports $1)
-            if $NASM $NASMFLAGS $1 -o $1.o >&AS_MESSAGE_LOG_FD 2>&1; then
-                CompileNASM_ret="yes"
-            else
-                CompileNASM_ret="no"
-            fi
-            rm -f $1 $1.o
-            AC_MSG_RESULT($CompileNASM_ret)
-            test "$CompileNASM_ret" = "yes"
-        }
-
-        if test x"$NASMFLAGS" = x; then
-            case $ARCH in
-              win32)
-                  NASMFLAGS="-f win32"
-                  ;;
-              openbsd)
-                  NASMFLAGS="-f aoutb"
-                  ;;
-              macosx)
-                  NASMFLAGS="-f macho"
-                  ;;
-              *)
-                  NASMFLAGS="-f elf"
-                  ;;
-            esac
-        fi
-
-        AC_PATH_PROG(NASM, yasm)
-        echo "%ifidn __OUTPUT_FORMAT__,elf" > unquoted-sections
-        echo "section .note.GNU-stack noalloc noexec nowrite progbits" >> unquoted-sections
-        echo "%endif" >> unquoted-sections
-        CompileNASM unquoted-sections || NASM=""
-
-        if test "x$NASM" = x -o "x$NASM" = x'"$NASM"'; then
-            $as_unset ac_cv_path_NASM
-            AC_PATH_PROG(NASM, nasm)
-        fi
-        if test "x$NASM" != x -a "x$NASM" != x'"$NASM"'; then
-            AC_DEFINE(SDL_HERMES_BLITTERS)
-            SOURCES="$SOURCES $srcdir/src/hermes/*.asm"
-            NASMFLAGS="$NASMFLAGS -I $srcdir/src/hermes/"
-
-            dnl See if hidden visibility is supported
-            echo "GLOBAL _bar:function hidden" > symbol-visibility
-            echo "_bar:" >> symbol-visibility
-            CompileNASM symbol-visibility && NASMFLAGS="$NASMFLAGS -DHIDDEN_VISIBILITY"
-
-            AC_SUBST(NASM)
-            AC_SUBST(NASMFLAGS)
-
-            case "$host" in
-                # this line is needed for QNX, because it's not defined the __ELF__
-                *-*-qnx*)
-                     EXTRA_CFLAGS="$EXTRA_CFLAGS -D__ELF__";;
-                *-*-solaris*)
-                     EXTRA_CFLAGS="$EXTRA_CFLAGS -D__ELF__";;
-            esac
-        fi
-    fi
-}
-
-dnl Check for altivec instruction support using gas syntax
-CheckAltivec()
-{
-    AC_ARG_ENABLE(altivec,
-AC_HELP_STRING([--enable-altivec], [use altivec assembly blitters on PPC [[default=yes]]]),
-                  , enable_altivec=yes)
-    if test x$enable_video = xyes -a x$enable_assembly = xyes -a x$enable_altivec = xyes; then
-        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)
-        altivec_CFLAGS="-maltivec"
-        CFLAGS="$save_CFLAGS $altivec_CFLAGS"
-
-        if test x$have_altivec_h_hdr = xyes; then
-          AC_TRY_COMPILE([
-          #include <altivec.h>
-          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)
-            altivec_CFLAGS="-faltivec"
-            CFLAGS="$save_CFLAGS $altivec_CFLAGS"
-            if test x$have_altivec_h_hdr = xyes; then
-              AC_TRY_COMPILE([
-              #include <altivec.h>
-              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
-        CFLAGS="$save_CFLAGS"
-
-        if test x$have_gcc_altivec = xyes; then
-            AC_DEFINE(SDL_ALTIVEC_BLITTERS)
-            if test x$have_altivec_h_hdr = xyes; then
-              AC_DEFINE(HAVE_ALTIVEC_H)
-            fi
-            EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS"
-        fi
-    fi
-}
-
 dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
 dnl  Details of this flag are here: http://gcc.gnu.org/wiki/Visibility
 CheckVisibilityHidden()
@@ -2043,8 +2003,6 @@
         CheckDiskAudio
         CheckDummyAudio
         CheckDLOPEN
-        CheckNASM
-        CheckAltivec
         CheckOSS
         CheckDMEDIA
         CheckMME
@@ -2153,7 +2111,6 @@
         CheckDummyVideo
         CheckDiskAudio
         CheckDummyAudio
-        # CheckNASM
         CheckDLOPEN
         CheckNAS
         CheckPHOTON
@@ -2197,7 +2154,6 @@
         CheckWIN32
         CheckWIN32GL
         CheckDIRECTX
-        CheckNASM
         # Set up files for the video library
         if test x$enable_video = xyes; then
             AC_DEFINE(SDL_VIDEO_DRIVER_WIN32)
@@ -2278,7 +2234,6 @@
         CheckDummyVideo
         CheckDiskAudio
         CheckDummyAudio
-        CheckNASM
         CheckBWINDOW
         CheckBeGL
         # Set up files for the audio library
@@ -2344,7 +2299,6 @@
         CheckDiskAudio
         CheckDummyAudio
         CheckDLOPEN
-        CheckNASM
 
         # Set up files for the shared object loading library
         # (this needs to be done before the dynamic X11 check)
@@ -2359,7 +2313,6 @@
         CheckMacGL
         CheckOpenGLX11
         CheckPTHREAD
-        CheckAltivec
 
         # Good optimization on Mac OS X, yes...
         EXTRA_CFLAGS="$EXTRA_CFLAGS -falign-loops=16"