From 37f90ba0b2d9797de93477aaa9e113329e50f93d Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=B8ren=20Sandmann?= Date: Tue, 22 May 2007 09:49:23 -0400 Subject: [PATCH] Check for MMX in the build system --- configure.ac | 37 +++++++++++++++++++++++++++++++++++++ pixman/Makefile.am | 5 +++-- pixman/pixman-compose.c | 4 +--- pixman/pixman-image.c | 2 ++ pixman/pixman-mmx.c | 4 +--- pixman/pixman-pict.c | 1 + pixman/pixman-private.h | 4 ++++ pixman/pixman-region.c | 1 + pixman/pixman-utils.c | 1 + 9 files changed, 51 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index 18a0ce4..20e335b 100644 --- a/configure.ac +++ b/configure.ac @@ -31,6 +31,9 @@ AM_CONFIG_HEADER(config.h) AC_PROG_CC AC_PROG_LIBTOOL +# endianness +AC_C_BIGENDIAN + # Check for dependencies #PKG_CHECK_MODULES(DEP, x11) @@ -41,6 +44,40 @@ if test "x$GCC" = "xyes"; then *) CFLAGS="$CFLAGS -Wall" ;; esac fi changequote([,])dnl +dnl =========================================================================== +dnl Check for MMX + +MMX_CFLAGS="-mmmx -msse -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" + +have_mmx_intrinsics=no +AC_MSG_CHECKING(For MMX/SSE intrinsics in the compiler) +xserver_save_CFLAGS=$CFLAGS +CFLAGS="$CFLAGS $MMX_CFLAGS" +AC_COMPILE_IFELSE([ +#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)) +#error "Need GCC >= 3.4 for MMX intrinsics" +#endif +#include +#include +int main () { + __m64 v = _mm_cvtsi32_si64 (1); + v = _mm_shuffle_pi16 (v, _MM_SHUFFLE(3, 3, 3, 3)); + return _mm_cvtsi64_si32 (v); +}], have_mmx_intrinsics=yes) +CFLAGS=$xserver_save_CFLAGS +AC_MSG_RESULT($have_mmx_intrinsics) + +if test $have_mmx_intrinsics = yes ; then + AC_DEFINE(USE_MMX, 1, [use MMX compiler intrinsics]) +else + MMX_CFLAGS= +fi +AC_SUBST(MMX_CFLAGS) + +AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes) + +dnl ======================================================== + PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no]) AM_CONDITIONAL(HAVE_GTK, [test "x$HAVE_GTK" = xyes]) diff --git a/pixman/Makefile.am b/pixman/Makefile.am index 1a336c1..19f5cf8 100644 --- a/pixman/Makefile.am +++ b/pixman/Makefile.am @@ -1,6 +1,5 @@ lib_LTLIBRARIES = libpixman.la -libpixman_la_CFLAGS = -DUSE_MMX # FIXME - detect it properly libpixman_la_LIBADD = @DEP_LIBS@ -lm libpixman_la_SOURCES = \ @@ -13,13 +12,15 @@ libpixman_la_SOURCES = \ pixman-utils.c +if USE_MMX noinst_LTLIBRARIES = libpixman-mmx.la libpixman_mmx_la_SOURCES = \ pixman-mmx.c \ pixman-mmx.h -libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) -mmmx -DUSE_MMX +libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS) libpixman_mmx_la_LIBADD = $(DEP_LIBS) libpixman_la_LIBADD += libpixman-mmx.la +endif libpixmanincludedir = $(includedir)/pixman libpixmaninclude_HEADERS = pixman.h diff --git a/pixman/pixman-compose.c b/pixman/pixman-compose.c index ea153a4..6293ce9 100644 --- a/pixman/pixman-compose.c +++ b/pixman/pixman-compose.c @@ -23,9 +23,7 @@ * SOFTWARE. */ -#ifdef HAVE_DIX_CONFIG_H -#include -#endif +#include #include #include diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c index 7b0c574..0802b86 100644 --- a/pixman/pixman-image.c +++ b/pixman/pixman-image.c @@ -20,6 +20,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include + #include #include #include diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c index 0335a09..7645d2e 100644 --- a/pixman/pixman-mmx.c +++ b/pixman/pixman-mmx.c @@ -28,9 +28,7 @@ * * Based on work by Owen Taylor */ -#ifdef HAVE_DIX_CONFIG_H -#include -#endif +#include #ifdef USE_MMX diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c index e9cc3db..f486305 100644 --- a/pixman/pixman-pict.c +++ b/pixman/pixman-pict.c @@ -22,6 +22,7 @@ * Author: Keith Packard, SuSE, Inc. */ +#include #include #include #include "pixman.h" diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h index f34506a..ab3f2d2 100644 --- a/pixman/pixman-private.h +++ b/pixman/pixman-private.h @@ -1,3 +1,7 @@ +#ifndef PACKAGE +# error config.h must be included before pixman-private.h +#endif + #ifndef PIXMAN_PRIVATE_H #define PIXMAN_PRIVATE_H diff --git a/pixman/pixman-region.c b/pixman/pixman-region.c index 8d0b06b..f5d2f45 100644 --- a/pixman/pixman-region.c +++ b/pixman/pixman-region.c @@ -45,6 +45,7 @@ SOFTWARE. ******************************************************************/ +#include #include #include #include diff --git a/pixman/pixman-utils.c b/pixman/pixman-utils.c index d3b7f4a..e27d0d6 100644 --- a/pixman/pixman-utils.c +++ b/pixman/pixman-utils.c @@ -21,6 +21,7 @@ * Author: Keith Packard, SuSE, Inc. */ +#include #include "pixman.h" #include "pixman-private.h" -- 2.7.4