configure.ac: Detect and indicate if GCC inline assembly syntax is available.
authorJan Schmidt <thaytan@mad.scientist.com>
Tue, 26 Feb 2008 10:09:38 +0000 (10:09 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Tue, 26 Feb 2008 10:09:38 +0000 (10:09 +0000)
Original commit message from CVS:
* configure.ac:
Detect and indicate if GCC inline assembly syntax is
available.
* gst/goom/Makefile.am:
* gst/goom/convolve_fx.c:
* gst/goom/flying_stars_fx.c:
* gst/goom/goom_config.h:
* gst/goom/goom_core.c:
* gst/goom/goomsl.c:
* gst/goom/ifs.c:
* gst/goom/mmx.c:
* gst/goom/plugin_info.c:
* gst/goom/xmmx.c:
Fix various GCC-isms, and only build the inline assembly
with compilers that support GCC inline assembly.
Fix a couple of other warnings shown with Forte.

13 files changed:
ChangeLog
common
configure.ac
gst/goom/Makefile.am
gst/goom/convolve_fx.c
gst/goom/flying_stars_fx.c
gst/goom/goom_config.h
gst/goom/goom_core.c
gst/goom/goomsl.c
gst/goom/ifs.c
gst/goom/mmx.c
gst/goom/plugin_info.c
gst/goom/xmmx.c

index 2d2017b..1b4f029 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2008-02-26  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * configure.ac:
+       Detect and indicate if GCC inline assembly syntax is
+       available.
+
+       * gst/goom/Makefile.am:
+       * gst/goom/convolve_fx.c:
+       * gst/goom/flying_stars_fx.c:
+       * gst/goom/goom_config.h:
+       * gst/goom/goom_core.c:
+       * gst/goom/goomsl.c:
+       * gst/goom/ifs.c:
+       * gst/goom/mmx.c:
+       * gst/goom/plugin_info.c:
+       * gst/goom/xmmx.c:
+       Fix various GCC-isms, and only build the inline assembly
+       with compilers that support GCC inline assembly.
+
+       Fix a couple of other warnings shown with Forte.
+
 2008-02-25  Stefan Kost  <ensonic@users.sf.net>
 
        * gst/goom/xmmx.c:
diff --git a/common b/common
index 1c5138e..e746d20 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 1c5138efc5679d9eaee66c84dcfabdec5b727493
+Subproject commit e746d20ef536a73aea9964666c7d5f6d5c9465df
index a6c3170..1580d75 100644 (file)
@@ -337,6 +337,13 @@ dnl Check for Yacc and Lex for the goom plugin
 AG_GST_BISON_CHECK
 AG_GST_FLEX_CHECK
 AM_PROG_AS
+dnl Check if we have GCC inline-asm
+AS_GCC_INLINE_ASSEMBLY([HAVE_GCC_ASM=yes], [HAVE_GCC_ASM=no])
+if test x$HAVE_GCC_ASM = xyes ; then
+  AC_DEFINE(HAVE_GCC_ASM, 1,
+    [Define if compiler supports gcc inline assembly])
+fi
+AM_CONDITIONAL(HAVE_GCC_ASM, test "x$HAVE_GCC_ASM" = "xyes")
 
 dnl *** sys plug-ins ***
 
index 02bb6b2..0dec96a 100644 (file)
@@ -11,7 +11,7 @@ ARCH_FILES = $(PPC_FILES)
 endif
 if HAVE_CPU_I386
 ARCH_FILES = $(MMX_FILES)
-ARCH_CFLAGS = -DHAVE_MMX
+ARCH_CFLAGS = -DBUILD_MMX
 endif
 
 libgstgoom_la_SOURCES =                                                \
index fb5e0b5..c5d8f29 100644 (file)
@@ -340,10 +340,10 @@ VisualFX
 convolve_create (void)
 {
   VisualFX vfx = {
-  init:convolve_init,
-  free:convolve_free,
-  apply:convolve_apply,
-  fx_data:0
+    convolve_init,
+    convolve_free,
+    convolve_apply,
+    NULL
   };
   return vfx;
 }
index c323c7c..384b54a 100644 (file)
@@ -200,8 +200,7 @@ fs_sound_event_occured (VisualFX * _this, PluginInfo * info)
   FSData *data = (FSData *) _this->fx_data;
   int i;
 
-  int max =
-      (int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
+  int max = (int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
           150)) + 100;
   float radius =
       (1.0f + info->sound.goomPower) * (float) (goom_irand (info->gRandom,
@@ -332,10 +331,10 @@ VisualFX
 flying_star_create (void)
 {
   VisualFX vfx = {
-  init:fs_init,
-  free:fs_free,
-  apply:fs_apply,
-  fx_data:0
+    fs_init,
+    fs_free,
+    fs_apply,
+    NULL
   };
   return vfx;
 }
index 5f6f158..d44e23d 100644 (file)
@@ -26,3 +26,7 @@
 #define gint16 signed short int
 #define gint32 signed int
 #endif
+
+#if defined (BUILD_MMX) && defined (HAVE_GCC_ASM)
+#define HAVE_MMX
+#endif
index 5dee827..14df03a 100644 (file)
@@ -11,6 +11,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <strings.h>
 #include <inttypes.h>
 
 #include "goom.h"
@@ -721,8 +722,7 @@ goom_update (PluginInfo * goomInfo, gint16 data[2][512],
     goomInfo->update.lineMode--;
     if (goomInfo->update.lineMode == -1)
       goomInfo->update.lineMode = 0;
-  } else
-      if ((goomInfo->cycle % 80 == 0)
+  } else if ((goomInfo->cycle % 80 == 0)
       && (goom_irand (goomInfo->gRandom, 5) == 0) && goomInfo->update.lineMode)
     goomInfo->update.lineMode--;
 
index 6d3254a..759be10 100644 (file)
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <glib.h>
 #include "goomsl.h"
 #include "goomsl_private.h"
 #include "goomsl_yacc.h"
@@ -465,7 +466,6 @@ gsl_instr_validate (Instruction * _this)
     default:
       return VALIDATE_TODO;
   }
-  return VALIDATE_ERROR;
 }                               /* }}} */
 
   /*************/
index ccadaa7..1a90e2d 100644 (file)
@@ -470,7 +470,7 @@ static void
 ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
     IfsData * fx_data)
 {
-  static int couleur = 0xc0c0c0c0;
+  static unsigned int couleur = 0xc0c0c0c0;
   static int v[4] = { 2, 4, 3, 2 };
   static int col[4] = { 2, 4, 3, 2 };
 
@@ -486,7 +486,7 @@ ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
   IFSPoint *points;
   int i;
 
-  int couleursl = couleur;
+  unsigned int couleursl = couleur;
   int width = goomInfo->screen.width;
   int height = goomInfo->screen.height;
 
index 4cee0ac..73546a8 100644 (file)
@@ -1,6 +1,10 @@
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
 
-#if defined (HAVE_CPU_I386) || defined (HAVE_CPU_X86_64)
+#include "goom_config.h"
+
+#ifdef HAVE_MMX
 
 #define BUFFPOINTNB 16
 #define BUFFPOINTMASK 0xffff
@@ -252,5 +256,10 @@ end_of_line:
   emms ();
   /* __asm__ __volatile__ ("emms"); */
 }
-
-#endif /* HAVE_CPU_I386 || HAVE_CPU_X86_64 */
+#else
+int
+mmx_supported (void)
+{
+  return (0);
+}
+#endif /* HAVE_MMX */
index 420f45a..1218b78 100644 (file)
@@ -1,7 +1,11 @@
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
 
 #include <gst/gst.h>
 
+#include "goom_config.h"
+
 #include "goom_plugin_info.h"
 #include "goom_fx.h"
 #include "default_scripts.h"
@@ -18,9 +22,9 @@
 #endif /* HAVE_CPU_PPC64 || HAVE_CPU_PPC */
 
 
-#ifdef HAVE_CPU_I386
+#ifdef HAVE_MMX
 #include "mmx.h"
-#endif /* HAVE_CPU_I386 */
+#endif /* HAVE_MMX */
 
 #include <liboil/liboil.h>
 #include <liboil/liboilfunction.h>
@@ -44,6 +48,7 @@ setOptimizedMethods (PluginInfo * p)
 
 /* FIXME: what about HAVE_CPU_X86_64 ? */
 #ifdef HAVE_CPU_I386
+#ifdef HAVE_MMX
   GST_INFO ("have an x86");
   if (cpuFlavour & OIL_IMPL_FLAG_MMXEXT) {
     GST_INFO ("Extended MMX detected. Using the fastest methods!");
@@ -56,6 +61,7 @@ setOptimizedMethods (PluginInfo * p)
   } else {
     GST_INFO ("Too bad ! No SIMD optimization available for your CPU.");
   }
+#endif
 #endif /* HAVE_CPU_I386 */
 
 #ifdef HAVE_CPU_PPC64
index a9e9dfb..1d68ef6 100644 (file)
@@ -1,3 +1,8 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "goom_config.h"
 
 #ifdef HAVE_MMX
 
@@ -362,5 +367,10 @@ end_of_line:
   /* this was femms, which is AMD 3dnow */
   __asm__ __volatile__ ("emms\n");
 }
-
+#else
+int
+xmmx_supported (void)
+{
+  return (0);
+}
 #endif