DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
To: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com,
	bruce.richardson@intel.com, Ruifeng.Wang@arm.com
Cc: dev@dpdk.org, "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Subject: [PATCH v1] config/arm: update aarch32 build with gcc13
Date: Thu, 21 Sep 2023 11:59:16 +0200	[thread overview]
Message-ID: <20230921095916.344076-1-juraj.linkes@pantheon.tech> (raw)

The aarch32 with gcc13 fails with:

Compiler for C supports arguments -march=armv8-a: NO

../config/arm/meson.build:714:12: ERROR: Problem encountered: No
suitable armv8 march version found.

This is because we test -march=armv8-a without the -mpfu option, which
is required for aarch32 build with gcc13.

On top of that, the most recent recommendation from the compiler team to
build with -march=armv8-a+simd -mfpu=auto.

We can address this by first testing compiler options and only test the
march after that (coupled with supported options). This doesn't fully
work though, as just -march=armv8 in not enough to be accepted with
-mfpu=auto. To address this other issue, add the force_march parameter
to part number config which will force the configured march to be used,
even if the compiler doesn't support the particular combination of march
and other compiler options, such as mfpu. This then allows the check to
proceed to the -march=armv8-a+simd -mfpu=auto, which is valid.

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
 config/arm/meson.build | 40 ++++++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 3f22d8a2fc..0b42d74876 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -43,7 +43,9 @@ implementer_generic = {
         },
         'generic_aarch32': {
             'march': 'armv8-a',
-            'compiler_options': ['-mfpu=neon'],
+            'force_march': true,
+            'march_features': ['simd'],
+            'compiler_options': ['-mfpu=auto'],
             'flags': [
                 ['RTE_ARCH_ARM_NEON_MEMCPY', false],
                 ['RTE_ARCH_STRICT_ALIGN', true],
@@ -692,6 +694,19 @@ if update_flags
 
     machine_args = [] # Clear previous machine args
 
+    # test supported compiler options
+    compiler_options = []
+    if part_number_config.has_key('compiler_options')
+        foreach flag: part_number_config['compiler_options']
+            if cc.has_argument(flag)
+                compiler_options += flag
+            else
+                warning('Configuration compiler option ' +
+                        '@0@ isn\'t supported.'.format(flag))
+            endif
+        endforeach
+    endif
+
     # probe supported archs and their features
     candidate_march = ''
     if part_number_config.has_key('march')
@@ -704,14 +719,18 @@ if update_flags
                 check_compiler_support = true
             endif
             if (check_compiler_support and
-                cc.has_argument('-march=' + supported_march))
+                cc.has_multi_arguments('-march=' + supported_march, compiler_options))
                 candidate_march = supported_march
                 # highest supported march version found
                 break
             endif
         endforeach
         if candidate_march == ''
-            error('No suitable armv8 march version found.')
+            if part_number_config.get('force_march', false)
+                candidate_march = part_number_config['march']
+            else
+                error('No suitable armv8 march version found.')
+            endif
         endif
         if candidate_march != part_number_config['march']
             warning('Configuration march version is ' +
@@ -728,27 +747,16 @@ if update_flags
             march_features += soc_config['extra_march_features']
         endif
         foreach feature: march_features
-            if cc.has_argument('+'.join([candidate_march, feature]))
+            if cc.has_multi_arguments('+'.join([candidate_march, feature]), compiler_options)
                 candidate_march = '+'.join([candidate_march, feature])
             else
                 warning('The compiler does not support feature @0@'
                     .format(feature))
             endif
         endforeach
-        machine_args += candidate_march
     endif
 
-    # apply supported compiler options
-    if part_number_config.has_key('compiler_options')
-        foreach flag: part_number_config['compiler_options']
-            if cc.has_argument(flag)
-                machine_args += flag
-            else
-                warning('Configuration compiler option ' +
-                        '@0@ isn\'t supported.'.format(flag))
-            endif
-        endforeach
-    endif
+    machine_args += [candidate_march] + compiler_options
 
     # apply flags
     foreach flag: dpdk_flags
-- 
2.34.1


             reply	other threads:[~2023-09-21  9:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-21  9:59 Juraj Linkeš [this message]
2023-10-09  9:53 ` [PATCH v2] " Juraj Linkeš
2023-10-10  2:55   ` Ruifeng Wang
2023-10-12 12:40   ` Paul Szczepanek
2023-10-13  7:35     ` Juraj Linkeš
2023-10-25 12:57   ` [PATCH v3] " Juraj Linkeš
2023-10-26  7:04     ` Ruifeng Wang
2023-11-01 12:57     ` Paul Szczepanek
2023-11-06 14:22       ` 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=20230921095916.344076-1-juraj.linkes@pantheon.tech \
    --to=juraj.linkes@pantheon.tech \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=Ruifeng.Wang@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /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).