Get the following build error from very-recent GIT sources, on Ubuntu
10.04, on x86 machine:
libtool: compile:gcc -DHAVE_CONFIG_H -I. -I… -I…/include -I…/lib
-I/usr/include -I…/include -m32 -m3dnow -mmmx -msse -g -O2 -MT volk.lo
-MD -MP -MF
.deps/volk.Tpo -c volk.c-fPIC -DPIC -o .libs/volk.o
In file included from …/include/volk/volk_32fc_index_max_16u_a16.h:4,
from volk.c:40:
…/include/volk/volk_common.h:12: error: expected
specifier-qualifier-list before ‘__m128i’
make[4]: *** [volk.lo] Error 1
make[4]: Leaving directory /root/gnuradio/volk/lib' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory
/root/gnuradio/volk’
make[2]: *** [all] Error 2
make[2]: Leaving directory /root/gnuradio/volk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/root/gnuradio’
make: *** [all] Error 2
On Wed, Mar 30, 2011 at 6:17 PM, Marcus D. Leech [email protected]
wrote:
before __m128i
make[4]: *** [volk.lo] Error 1
make[4]: Leaving directory /root/gnuradio/volk/lib' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory
/root/gnuradio/volk’
make[2]: *** [all] Error 2
make[2]: Leaving directory /root/gnuradio/volk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/root/gnuradio’
make: *** [all] Error 2
Marcus,
Is this a new installation of Ubuntu? I’ve installed this on many
machines
using Ubuntu 10.04 and 10.10 without a problem. I’m guessing (hoping?)
that
this is related to an unknown dependency. It almost seems like you don’t
have the SSE intrinsics installed. Maybe there’s some part of a
developers’
package that you don’t have?
If you find that it’s a missing dependency, let me know and we’ll add it
to
things to look for and to install.
Tom
On Wed, 2011-03-30 at 20:44 -0400, Marcus D. Leech wrote:
In file included
make[1]: *** [all-recursive] Error 1
It’s an Athlon XP2500 machine, which apparently has SSE, but no SSE2.
That’s it, all right. volk_common.h defines a union which includes
__m128i, which is only defined in SSE2 (emmintrin.h) and higher – but
the test Volk uses for this union is only (if LV_HAS_MMX). That test
should be (if LV_HAS_SSE2). Ordinarily, on SSE2 machines, there’s an
#ifdef at the end of xmmintrin.h which includes emmintrin, where __m128i
is defined.
I don’t know what making that change will break on non-SSE2 machines;
can you try it?
–n
On 03/31/2011 01:36 PM, Nick F. wrote:
–n
Funortunately, it’s not my machine. I was asking on behalf of a
customer, who has decided to go off and
purchase a more-modern machine, which likely has “all the microcode
bells and whistles”
But we do need to deal with this for older, non-SSE2-or-better machines.
–
Marcus L.
Principal Investigator
Shirleys Bay Radio Astronomy Consortium
On Thu, Mar 31, 2011 at 2:44 PM, Marcus D. Leech [email protected]
wrote:
I don’t know what making that change will break on non-SSE2 machines;
can you try it?
–n
Funortunately, it’s not my machine. I was asking on behalf of a
customer, who has decided to go off and
purchase a more-modern machine, which likely has “all the microcode bells
and whistles”
But we do need to deal with this for older, non-SSE2-or-better machines.
I agree, and this looks like a mistake. Wish we had the machine to test
it
on
Tom