meson build fails: arch:i686 , cc:gcc-7
The compiler complains of inline functions calling functions declared in header "emmintrin.h"
. (which use SSE2)
Below are terminal input and output (edited down to relevance).
I already have a solution which works, which I will submit as a merge request.
> meson builddir . The Meson build system Version: 0.45.1 Source dir: /home/randall/dev/src/babl Build dir: /home/randall/dev/src/babl/builddir Build type: native build Project name: babl Native C compiler: cc (gcc 7.3.0 "cc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0") Build machine cpu family: x86 Build machine cpu: i686 Message: Architecture: i686 Message: Host os: linux Message: Build os: linux Compiler for C supports argument -Wdeclaration-after-statement: YES Compiler for C supports argument -Winit-self: YES Compiler for C supports argument -Wmissing-declarations: YES Compiler for C supports argument -Wmissing-prototypes: YES Compiler for C supports argument -Wold-style-definition: YES Compiler for C supports argument -Wpointer-arith: YES Compiler for C supports argument -mmmx: YES Message: mmx assembly available Compiler for C supports argument -msse: YES Message: sse assembly available Compiler for C supports argument -mfpmath=sse: YES Compiler for C supports argument -msse2: YES Message: sse2 assembly available Compiler for C supports argument -msse4.1: YES Message: sse4.1 assembly available Compiler for C supports argument -mf16c: YES Message: Can compile half-floating point code (f16c) Has header "dlfcn.h": YES Has header "dl.h": NO Checking for function "gettimeofday": YES Checking for function "srandom": YES Library lcms2 found: YES Library m found: YES Library log found: NO Library dl found: YES Dependency threads found: YES Program env found: YES (/usr/bin/env) Program git found: YES (/usr/bin/git) Program rsvg-convert found: YES (/usr/bin/rsvg-convert) Program test found: YES (/usr/bin/test) Program w3m found: YES (/usr/bin/w3m) Configuring config.h using configuration Configuring babl-version.h using configuration Configuring git-version.h using configuration Configuring index.html using configuration Configuring babl-16x16.svg using configuration Configuring babl-48x48.svg using configuration Configuring babl-a4poster.svg using configuration Program tools/xml_insert.sh found: YES (/home/randall/dev/src/babl/docs/tools/xml_insert.sh) Configuring index-static.html using configuration Configuring babl.css using configuration Build targets in project: 69 Found ninja-1.8.2 at /usr/bin/ninja > ninja -C builddir ninja: Entering directory `builddir' [1/172] Compiling C object 'babl/base/babl_base@sta/babl-base.c.o'. ... [45/172] Compiling C object 'babl/babl-0.1@sha/babl-space.c.o'. FAILED: babl/babl-0.1@sha/babl-space.c.o cc -Ibabl/babl-0.1@sha -Ibabl -I../babl -I. -I../ -Ibabl/base -I../babl/base -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O0 -g -mmmx -msse -mfpmath=sse -fPIC -pthread '-DLIBDIR="/usr/local/lib"' -MD -MQ 'babl/babl-0.1@sha/babl-space.c.o' -MF 'babl/babl-0.1@sha/babl-space.c.o.d' -o 'babl/babl-0.1@sha/babl-space.c.o' -c ../babl/babl-space.c In file included from ../babl/babl-space.c:814:0: ../babl/babl-space.c: In function ‘babl_matrix_mul_vectorff_buf4_sse2’: ../babl/babl-space.c:828:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 a = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(0,0,0,0)); ^ ../babl/babl-space.c:829:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 b = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(1,1,1,1)); ^ ../babl/babl-space.c:830:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 c = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(3,2,2,2)); ^ ninja: build stopped: subcommand failed. > ninja -C builddir test ninja: Entering directory `builddir' [1/127] Compiling C object 'extensions/u16@sha/u16.c.o'. ... [4/127] Compiling C object 'extensions/CIE@sha/CIE.c.o'. FAILED: extensions/CIE@sha/CIE.c.o cc -Iextensions/CIE@sha -Iextensions -I../extensions -I. -I../ -Ibabl -I../babl -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O0 -g -mmmx -msse -mfpmath=sse -fPIC -pthread -MD -MQ 'extensions/CIE@sha/CIE.c.o' -MF 'extensions/CIE@sha/CIE.c.o.d' -o 'extensions/CIE@sha/CIE.c.o' -c ../extensions/CIE.c In file included from ../extensions/CIE.c:28:0: ../extensions/CIE.c: In function ‘_cbrtf_ps_sse2’: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:1549:1: error: inlining failed in call to always_inline ‘_mm_castsi128_ps’: target specific option mismatch _mm_castsi128_ps(__m128i __A) ^~~~~~~~~~~~~~~~ ../extensions/CIE.c:1677:10: note: called from here __m128 a = _mm_castsi128_ps (ai); ^ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:1027:1: error: inlining failed in call to always_inline ‘_mm_add_epi32’: target specific option mismatch _mm_add_epi32 (__m128i __A, __m128i __B) ^~~~~~~~~~~~~ ../extensions/CIE.c:1676:11: note: called from here __m128i ai = _mm_add_epi32 (_mm_cvtps_epi32 (xi_3), magic); ^~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:811:1: error: inlining failed in call to always_inline ‘_mm_cvtps_epi32’: target specific option mismatch _mm_cvtps_epi32 (__m128 __A) ^~~~~~~~~~~~~~~ ../extensions/CIE.c:1676:16: note: called from here __m128i ai = _mm_add_epi32 (_mm_cvtps_epi32 (xi_3), magic); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:769:1: error: inlining failed in call to always_inline ‘_mm_cvtepi32_ps’: target specific option mismatch _mm_cvtepi32_ps (__m128i __A) ^~~~~~~~~~~~~~~ ../extensions/CIE.c:1675:17: note: called from here __m128 xi_3 = _mm_div_ps (_mm_cvtepi32_ps (xi), _mm_set1_ps (3.0f)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:1543:1: error: inlining failed in call to always_inline ‘_mm_castps_si128’: target specific option mismatch _mm_castps_si128(__m128 __A) ^~~~~~~~~~~~~~~~ ../extensions/CIE.c:1674:11: note: called from here __m128i xi = _mm_castps_si128 (x); ^~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:641:1: error: inlining failed in call to always_inline ‘_mm_set1_epi32’: target specific option mismatch _mm_set1_epi32 (int __A) ^~~~~~~~~~~~~~ ../extensions/CIE.c:1672:17: note: called from here const __m128i magic = _mm_set1_epi32 (709921077); ^~~~~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:769:1: error: inlining failed in call to always_inline ‘_mm_cvtepi32_ps’: target specific option mismatch _mm_cvtepi32_ps (__m128i __A) ^~~~~~~~~~~~~~~ ../extensions/CIE.c:1675:17: note: called from here __m128 xi_3 = _mm_div_ps (_mm_cvtepi32_ps (xi), _mm_set1_ps (3.0f)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:1549:1: error: inlining failed in call to always_inline ‘_mm_castsi128_ps’: target specific option mismatch _mm_castsi128_ps(__m128i __A) ^~~~~~~~~~~~~~~~ ../extensions/CIE.c:1677:10: note: called from here __m128 a = _mm_castsi128_ps (ai); ^ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:1027:1: error: inlining failed in call to always_inline ‘_mm_add_epi32’: target specific option mismatch _mm_add_epi32 (__m128i __A, __m128i __B) ^~~~~~~~~~~~~ ../extensions/CIE.c:1676:11: note: called from here __m128i ai = _mm_add_epi32 (_mm_cvtps_epi32 (xi_3), magic); ^~ In file included from ../extensions/CIE.c:28:0: /usr/lib/gcc/i686-linux-gnu/7/include/emmintrin.h:811:1: error: inlining failed in call to always_inline ‘_mm_cvtps_epi32’: target specific option mismatch _mm_cvtps_epi32 (__m128 __A) ^~~~~~~~~~~~~~~ ../extensions/CIE.c:1676:16: note: called from here __m128i ai = _mm_add_epi32 (_mm_cvtps_epi32 (xi_3), magic); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [5/127] Compiling C object 'babl/babl-0.1@sha/babl-space.c.o'. FAILED: babl/babl-0.1@sha/babl-space.c.o cc -Ibabl/babl-0.1@sha -Ibabl -I../babl -I. -I../ -Ibabl/base -I../babl/base -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O0 -g -mmmx -msse -mfpmath=sse -fPIC -pthread '-DLIBDIR="/usr/local/lib"' -MD -MQ 'babl/babl-0.1@sha/babl-space.c.o' -MF 'babl/babl-0.1@sha/babl-space.c.o.d' -o 'babl/babl-0.1@sha/babl-space.c.o' -c ../babl/babl-space.c In file included from ../babl/babl-space.c:814:0: ../babl/babl-space.c: In function ‘babl_matrix_mul_vectorff_buf4_sse2’: ../babl/babl-space.c:828:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 a = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(0,0,0,0)); ^ ../babl/babl-space.c:829:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 b = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(1,1,1,1)); ^ ../babl/babl-space.c:830:18: error: ‘__builtin_ia32_pshufd’ needs isa option -m32 -msse2 c = (__v4sf) _mm_shuffle_epi32((__m128i)c, _MM_SHUFFLE(3,2,2,2)); ^ ninja: build stopped: subcommand failed.