config/x86: fix MinGW cross build with Meson 0.49
Cross build with MinGW was broken for the baseline meson 0.49.2. Cause: in c_args = '-mno-avx512f' from config/x86/cross-mingw, each character was treated as a separate compiler option: meson.build:4:0: ERROR: Compiler x86_64-w64-mingw32-gcc can not compile programs. With c_args = ['-mno-avx512f'] configuration passed, but build failed, because Meson placed -mno-avx512f after -mavx512f in CFLAGS: In file included from /usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/include/immintrin.h:55, from /usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/include/x86intrin.h:32, from ../dpdk/lib/net/net_crc_avx512.c:13: /usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/include/avx512fintrin.h:1650:1: error: inlining failed in call to always_inline _mm512_ternarylogic_epi64: target specific option mismatch 1650 | _mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C, | ^~~~~~~~~~~~~~~~~~~~~~~~~ ../dpdk/lib/net/net_crc_avx512.c:59:9: note: called from here 59 | return _mm512_ternarylogic_epi64(tmp0, tmp1, data_block, 0x96); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Additionally, -m[no-]avx512f flag is expected to be in machine_args by all the checks in meson.build files. Commit419c6e9af6
("net/i40e: fix build for Windows MinGW") fixed the errors cause by MinGW using AVX512F on Windows. The binutils AVX512F bug check is now portable, so enable it for Windows to switch AVX512 support on and off without any special logic for MinGW. Fixes:549bfc8316
("config: disable AVX512 with MinGW") Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
This commit is contained in:
parent
bb9cd91095
commit
ab5ac1adee
@ -5,12 +5,10 @@ ld = 'x86_64-w64-mingw32-ld'
|
||||
ar = 'x86_64-w64-mingw32-ar'
|
||||
strip = 'x86_64-w64-mingw32-strip'
|
||||
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
|
||||
objdump = 'x86_64-w64-mingw32-objdump'
|
||||
|
||||
[host_machine]
|
||||
system = 'windows'
|
||||
cpu_family = 'x86_64'
|
||||
cpu = 'native'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
c_args = '-mno-avx512f'
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
# get binutils version for the workaround of Bug 97
|
||||
binutils_ok = true
|
||||
if not is_windows and (is_linux or cc.get_id() == 'gcc')
|
||||
if is_linux or cc.get_id() == 'gcc'
|
||||
binutils_ok = run_command(binutils_avx512_check).returncode() == 0
|
||||
if not binutils_ok and cc.has_argument('-mno-avx512f')
|
||||
machine_args += '-mno-avx512f'
|
||||
|
Loading…
Reference in New Issue
Block a user