I'm trying to cross compile the Bloomd library for development purposes, but it's failing on the a single file's calls to mmintrin.h/emmintrin.h/xmmintrin.h with a series of errors. Here's one of the errors as representation (the others only differ in the specific file, location, and function):
> /home/ubuntu/source/build_dir/toolchain-mipsel_74kc_gcc-5.4.0_musl-1.1.15/gcc-5.4.0/gcc/config/i386/emmintrin.h: In function '_mm_mulhi_epu16':
> /home/ubuntu/source/build_dir/toolchain-mipsel_74kc_gcc-5.4.0_musl-1.1.15/gcc-5.4.0/gcc/config/i386/emmintrin.h:1398:3: error: can't convert between vector values of different size
With the same build of toolchain, I can build other files successfully, including the rest of the Bloomd library. Has anyone else had issues with *mmintrin.h?
Try using -std=gnu++11 instead of -std=c++11. If you still encounter errors, provide a log with more context so that we can see the compiler ocmmand line etc.
Thanks for getting back with me! I guess I should have clarified - Bloomd is a C library typically compiled via SCons with -std=c99 (see line 18 of log below)
With -std=gnu99, the compiler can't find emmintrin.h (see line 21). That file is in the build_dir (see line 25). Tried adding -I to the CCFLAGS to include the directory where emmintrin.h is located, and now I'm getting the same errors as with -std=c99: http://pastebin.com/y0icsHXc
I found this issue was caused by SSE functions being called by art.c (_mm_* function calls in find_child(...) and add_child16(...)). I've submitted a pull request to bloomd and libart to enable non-x86 support by executing those functions without the SSE functions when on a non-x86 architecture.