[Bug 671206] New: Failed to build on i386

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Mar 2 04:45:32 PST 2012


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

           Summary: Failed to build on i386
    Classification: Platform
           Product: GStreamer
           Version: 0.10.36
        OS/Version: NetBSD
            Status: UNCONFIRMED
          Severity: critical
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: obata at lins.jp
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


On NetBSD-5.1.2-i386, failed to build gst-plugins-base-0.10.36,
without CPU tune flags for gcc.

gmake[3]: Entering directory
`/work/obj/pkgsrc/multimedia/gst-plugins0.10-base/work/gst-plugins-base-0.10.36/gst/audioresample'
  CC     libgstaudioresample_la-speex_resampler_float.lo
In file included from resample.c:134,
                 from speex_resampler_float.c:26:
resample_sse.h: In function 'inner_product_single':
resample_sse.h:46: error: '__m128' undeclared (first use in this function)
resample_sse.h:46: error: (Each undeclared identifier is reported only once
resample_sse.h:46: error: for each function it appears in.)
resample_sse.h:46: error: expected ';' before 'sum'
resample_sse.h:49: error: 'sum' undeclared (first use in this function)
...


% ls -1 /usr/include*mmintrin.h
/usr/include/emmintrin.h
/usr/include/mmintrin.h
/usr/include/pmmintrin.h
/usr/include/xmmintrin.h

configure script fail to detect xmmintrin.h, because it contains
#ifndef __SSE__
# error "SSE instruction set not enabled"
#else
...(sse related difinitions)...
#endif

configure script success to detect emmintrin.h, because it just
#ifdef __SSE2__
...(sse2 related difinitions)...
#endif

In gst/audioresample/speex_resampler_float.c:
#define _USE_SSE
#define _USE_SSE2
In gst/audioresample/speex_resampler_double.c:
#define _USE_SSE2

Then
#include "resample.c"

In resample.c:
...
#ifndef HAVE_XMMINTRIN_H
#undef _USE_SSE
#endif
...
#ifndef HAVE_EMMINTRIN_H
#undef _USE_SSE2
#endif
...

Now, _USE_SSE is not defined whereas _USE_SSE2 is defined
(but compiler is not enabled neither SSE nor SSE2).

#if defined _USE_SSE || defined _USE_SSE2
#include "resample_sse.h"
#endif

In resample_sse.h,
SSE features are used unconditionally, so compile will fail.
SSE2 features are used conditionally, but as said before,
SSE2 is not enabled, and emmintrin.h is no-op, so compile will fail.

In resample.c,
Are there any reason not using __SSE_ instead of HAVE_XMMINTRIN_H
for _USE_SSE (and __SSE2__ instead of HAVE_EMMINTRIN_H for _USE_SSE2)?

-- 
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