DPDK patches and discussions
 help / color / mirror / Atom feed
From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
To: dev@dpdk.org
Cc: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>,
	leyi.rong@intel.com,
	Bruce Richardson <bruce.richardson@intel.com>,
	Konstantin Ananyev <konstantin.ananyev@intel.com>
Subject: [PATCH 3/3] config/x86: fix MinGW cross build with meson 0.49
Date: Sat, 13 Nov 2021 00:48:26 +0300	[thread overview]
Message-ID: <20211112214826.333853-4-dmitry.kozliuk@gmail.com> (raw)
In-Reply-To: <20211112214826.333853-1-dmitry.kozliuk@gmail.com>

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.

Commit 419c6e9af69e ("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: 549bfc83168f ("config: disable AVX512 with MinGW")
Cc: leyi.rong@intel.com

Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
---
 config/x86/cross-mingw | 4 +---
 config/x86/meson.build | 2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/config/x86/cross-mingw b/config/x86/cross-mingw
index 48a82b457e..09f7af0928 100644
--- a/config/x86/cross-mingw
+++ b/config/x86/cross-mingw
@@ -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'
diff --git a/config/x86/meson.build b/config/x86/meson.build
index 603359e55a..e25ed316f4 100644
--- a/config/x86/meson.build
+++ b/config/x86/meson.build
@@ -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'
-- 
2.29.3


  parent reply	other threads:[~2021-11-12 21:48 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-12 21:48 [PATCH 0/3] config/x86: improve AVX512 availability check Dmitry Kozlyuk
2021-11-12 21:48 ` [PATCH 1/3] config/x86: skip GNU binutils bug check for LLVM Dmitry Kozlyuk
2021-11-15  9:17   ` Bruce Richardson
2021-11-12 21:48 ` [PATCH 2/3] buildtools: make AVX512 check script portable Dmitry Kozlyuk
2021-11-15  9:28   ` Bruce Richardson
2021-11-12 21:48 ` Dmitry Kozlyuk [this message]
2021-11-15  9:30   ` [PATCH 3/3] config/x86: fix MinGW cross build with meson 0.49 Bruce Richardson
2021-11-17  8:42 ` [PATCH 0/3] config/x86: improve AVX512 availability check Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211112214826.333853-4-dmitry.kozliuk@gmail.com \
    --to=dmitry.kozliuk@gmail.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=leyi.rong@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).