Build fails

Hi all,

With latest sources (after a git pull) the build fails. Kubuntu 14.04 32
bit, and a new gnuradio folder did not change things. Here the output:

[ 5%] Building C object
volk/lib/CMakeFiles/volk.dir/volk_machine_avx_32_mmx_orc.c.o

In file included from
/home/ras/gnuradio/build/volk/lib/volk_machine_avx_32_mmx_orc.c:65:0:

/home/ras/gnuradio/volk/kernels/volk/volk_64u_popcntpuppet_64u.h: In
function ‘volk_64u_popcntpuppet_64u_a_sse4_2’:

/home/ras/gnuradio/volk/kernels/volk/volk_64u_popcntpuppet_64u.h:43:9:
warning: implicit declaration of function ‘volk_64u_popcnt_a_sse4_2’
[-Wimplicit-function-declaration]

     volk_64u_popcnt_a_sse4_2(outVector+ii, num_points );

     ^

In file included from
/home/ras/gnuradio/build/volk/lib/volk_machine_avx_32_mmx_orc.c:149:0:

/home/ras/gnuradio/volk/kernels/volk/volk_32f_log2_32f.h: At top level:

/home/ras/gnuradio/volk/kernels/volk/volk_32f_log2_32f.h:64:0: warning:
“LOG_POLY_DEGREE” redefined [enabled by default]

#define LOG_POLY_DEGREE 6

^

In file included from
/home/ras/gnuradio/build/volk/lib/volk_machine_avx_32_mmx_orc.c:140:0:

/home/ras/gnuradio/volk/kernels/volk/volk_32f_x2_pow_32f.h:35:0: note:
this
is the location of the previous definition

#define LOG_POLY_DEGREE 3

^

Linking C shared library libvolk.so

[ 5%] Built target volk

Scanning dependencies of target test_all

[ 5%] Building CXX object volk/lib/CMakeFiles/test_all.dir/testqa.cc.o

[ 5%] Building CXX object
volk/lib/CMakeFiles/test_all.dir/qa_utils.cc.o

Linking CXX executable test_all

libvolk.so.0.0.0: undefined reference to `volk_64u_popcnt_a_sse4_2’

collect2: error: ld returned 1 exit status

make[2]: *** [volk/lib/test_all] Error 1

make[1]: *** [volk/lib/CMakeFiles/test_all.dir/all] Error 2

make: *** [all] Error 2

ras@ubuntu:~/gnuradio/build$

Ralph.

A fix for this is to change line 39 in
volk/kernels/volk/volk_64u_popcntpuppet_64u.h

from

#ifdef LV_HAVE_SSE4_2

to

#if LV_HAVE_SSE4_2 && LV_HAVE_64

Ron

It’s a bug on 32-bit systems. Verified here on Ubuntu 13.10 32-bit.
Re-running cmake is not going to help.

Ron

On Wed, Dec 24, 2014 at 2:42 AM, Ron E. [email protected] wrote:

bit, and a new gnuradio folder did not change things. Here the output:
/home/ras/gnuradio/volk/kernels/volk/volk_64u_popcntpuppet_64u.h:43:9:
/home/ras/gnuradio/volk/kernels/volk/volk_32f_log2_32f.h: At top level:

collect2: error: ld returned 1 exit status

Ralph.

You could also just rerun cmake.