[linphone-desktop] [Compiling procedure]

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[linphone-desktop] [Compiling procedure]

B. KRiSTóF

Hello!


Today (2018-03-07) I was compiling the linphone-desktop project (commit 732a5b7e5e9fa64a4ac34453385153b3d3c12f57) from the GitHub repository.


I encountered some errors, like this one:

LINPHONE/submodules/mswebrtc/webrtc/webrtc/modules/audio_processing/aec/aec_core_sse2.c:61:7: error: called from here
       _mm_storeu_ps(&yf[1][j], h);
       ^
In file included from /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:31:0,
                 from LINPHONE/submodules/mswebrtc/webrtc/webrtc/modules/audio_processing/aec/aec_core_sse2.c:15:
/usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:978:1: error: inlining failed in call to always_inline ‘_mm_storeu_ps’: target specific option mismatch
 _mm_storeu_ps (float *__P, __m128 __A)
 ^
That occoured only in the MSWEBRTC submodule. The problem is that it claims that the CPU does not support SSE2 instructions.

However, it does support.


To fix this issue, please follow the steps below.


In the following file
"LINPHONE-DIRECTORY/submodules/mswebrtc/CMakeLists.txt"
add the lines
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-msse -msse2 -msse3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse -msse2 -msse3")
after the statements like
set(ISAC_FLAVOUR "fix" CACHE STRING "ISAC audio codec flavour.")
set_property(CACHE ISAC_FLAVOUR PROPERTY STRINGS "fix" "main")
around line 43-44.

It now enables 32 bit builds. I don't know if it is necessary for the 64 bit builds but it would be appreciated if the 32 bit builds can be built easier.
I have no knowledge on CMake. If it is only a 32-bit issue please wrap it in a conditional.
LINPHONE and LINPHONE-DIRECTORY denotes a path where the dowloaded repository is located.

Also, if technically possible, take into consideration that the compiled output has hardcoded paths in binaries and shared objects. Since the compilation creates a reasonable hierarchy of directories, it would be so simple to move to another machine the entire output directory. It seems to me that it is carrying its important dependencies. (Excluding Qt, but it is okay.) To clarify this issue, I'm talking about the Linux build. (There's no option to create any kind of installable package on this platform.)

Best Regards


_______________________________________________
Linphone-developers mailing list
[hidden email]
https://lists.nongnu.org/mailman/listinfo/linphone-developers