[Bug 670690] New: missing checks for SSE / SSE2

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Feb 23 07:07:16 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=670690
  GStreamer | gst-plugins-base | 0.10.36

           Summary: missing checks for SSE / SSE2
    Classification: Platform
           Product: GStreamer
           Version: 0.10.36
        OS/Version: OpenBSD
            Status: UNCONFIRMED
          Severity: major
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: ajacoutot at gnome.org
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=208281)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=208281)
define _USE_SSE only if __SSE__ is defined

Hi.

Trying to build gstreamer-plugins-base om OpenBSD/i386 fails with the following
error:

cc -std=gnu99 -DHAVE_CONFIG_H -I.
-I/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample
-I../.. -I/usr/local/include -I/usr/local/include/libpng -I/usr/X11R6/include
-I/usr/p
orts/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst-libs
-I../../gst-libs -I/usr/local/include/gstreamer-0.10 -pthread
-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/loca
l/include/libxml2 -I/usr/local/include -pthread -I/usr/local/include/glib-2.0
-I/usr/local/lib/glib-2.0/include -I/usr/local/include/gstreamer-0.10 -pthread
-I/usr/local/include/glib-2.0 -I/usr/local/lib/gl
ib-2.0/include -I/usr/local/include/libxml2 -I/usr/local/include
-DG_THREADS_MANDATORY -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT -Wall
-Wdeclaration-after-statement -Wpointer-arith -Wmissing-declarations -
Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings
-Wformat-nonliteral -Wformat-security -Winit-self -Wmissing-include-dirs
-Waddress -Waggregate-return -Wno-multichar -Wnested-externs -g -I/usr/
local/include/orc-0.4 -O2 -pipe -MT
libgstaudioresample_la-speex_resampler_float.lo -MD -MP -MF
.deps/libgstaudioresample_la-speex_resampler_float.Tpo -c
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins
-base-0.10.36/gst/audioresample/speex_resampler_float.c -fPIC -DPIC -o
.libs/libgstaudioresample_la-speex_resampler_float.o
In file included from /usr/local/include/glib-2.0/glib/gbacktrace.h:35,
                 from /usr/local/include/glib-2.0/glib.h:36,
                 from
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/resample.c:71,
                 from
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/speex_resampler_float.c:26:
/usr/include/signal.h: In function 'sigdelset':
/usr/include/signal.h:82: warning: redundant redeclaration of '__errno'
/usr/include/signal.h:71: warning: previous declaration of '__errno' was here
/usr/include/signal.h: In function 'sigismember':
/usr/include/signal.h:93: warning: redundant redeclaration of '__errno'
/usr/include/signal.h:82: warning: previous declaration of '__errno' was here
In file included from
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/resample.c:134,
                 from
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/speex_resampler_float.c:26:
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/resample_sse.h:
In function 'inner_product_single':
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/resample_sse.h:46:
error: '__m128' undeclared (first use in this function)
/usr/ports/pobj/gst-plugins-base-0.10.36/gst-plugins-base-0.10.36/gst/audioresample/resample_sse.h:46:
error: (Each undeclared identifier is reported only once


__m128 is declared in  /usr/include/xmmintrin.h

On OpenBSD, the file /usr/include/xmmintrin.h has the following:
#ifndef __SSE__
# error "SSE instructions set not enabled"
#else
...
#endif

This is not an issue on amd64 since __SSE__ and __SSE2__ are defined there, but
not on i386:
$ gcc -E -dM - < /dev/null | grep SSE
$

Here's the relevant output of the different configure output on amd64 and i386:

* amd64
checking for sys/wait.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking xmmintrin.h usability... yes
checking xmmintrin.h presence... yes
checking for xmmintrin.h... yes
checking emmintrin.h usability... yes
checking emmintrin.h presence... yes
checking for emmintrin.h... yes

* i386
checking for sys/wait.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking xmmintrin.h usability... no
checking xmmintrin.h presence... no
checking for xmmintrin.h... no
checking emmintrin.h usability... yes
checking emmintrin.h presence... yes
checking for emmintrin.h... yes

And the config.log on i386:
configure:21882: checking xmmintrin.h usability
configure:21882: cc -std=gnu99 -c -O2 -pipe  -I/usr/local/include 
-I/usr/local/include/libpng  -I/usr/X11R6/include conftest.c >&5
In file included from conftest.c:73:
/usr/include/xmmintrin.h:35:3: error: #error "SSE instruction set not enabled"
configure:21882: $? = 1
configure: failed program was:
| /* confdefs.h */


We are currently using the attached patch but I think there should be a cleaner
check (in configure or ...?).
Thanks.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list