During compilation on i386 architecture with GCC 4.9.0 I get the attached errors. It's related to xmmintr.h (sse) and maybe due to a false detection of cpu capabilities (intel atom).
To reproduce on my system (both lame 3.98.4 and 3.99.5):
./configure
make
cpuinfo
configure output
I think the configure script needs to check if gcc needs -msse to compile anything using SSE intrinsincs. Checking for the usability of xmmintrins.h doesn't seem to be enough. Passing -msse for the build of xmm_quantize_sub.c then fixes issue.
For some odd reason that msse.patch file wasn't enough. This fixed it [though might not be the right way]
https://gist.github.com/rdp/3581e2c51916f3d8056e
based on this:
http://lists.linuxfromscratch.org/pipermail/blfs-dev/2014-April/027260.html
It seems that many people have run into this you may want to consider fixing it and releasing a new version. Cheers!
Hi Roger,
1) Your patch applies against ./configure which is an auto-generated file that gets overridden the next time autoconf is run.
2) All that the code that your patch removes does is check for presence of the xmmintrin.h header. If this header is available, it will build the functions in the libmp3lame/vector/xmm_quantize_sub.c file ("the internal vector lib"). Given that the prototypes in xmmintrin.h are there, this should even work on an Intel Atom if "-msse" is passed on the command line.
If this still does not compile for you with the patch provided by Sebastian Ramacher, please post the build log somewhere.
Thank you,
Fabian
The patch provided by Sebastian Ramacher that adds -msse on i386 is correct (it builds and runs) except that for some reason the change in Makefile.am does not get propagated to the actual Makefile. Modifying the Makefile does the job.
For lame 3.100 a fix was committed which tests the header in a different way. Always adding -msse is not valid. If you want SSE then you need to specify it in CFLAGS (-msse). The fix is to not only enalbe the header exists, but when it compiles correctly.