[dpdk-dev] [PATCH v17 5/8] build: add aarch32 meson build flags

Juraj Linkeš juraj.linkes at pantheon.tech
Thu Apr 22 14:49:06 CEST 2021


Add aarch32 extra build flags and aarch32 machine flags to generic
machine args.
Also modify how arm flags are updated in meson build - for 32-bit build,
update only if cross-compiling.

Signed-off-by: Juraj Linkeš <juraj.linkes at pantheon.tech>
Acked-by: Ruifeng Wang <ruifeng.wang at arm.com>
---
 config/arm/meson.build | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 22cd81319c..f0da1b8cb9 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -67,7 +67,15 @@ part_number_config_arm = {
             ['RTE_MAX_LCORE', 64],
             ['RTE_MAX_NUMA_NODES', 1]
         ]
-    }
+    },
+    'aarch32': {
+        'machine_args': ['-march=armv8-a',
+                 '-mfpu=neon'],
+        'flags': [
+            ['RTE_ARCH_ARM_NEON_MEMCPY', false],
+            ['RTE_ARCH_STRICT_ALIGN', true],
+            ['RTE_ARCH_ARMv8_AARCH32', true]
+        ]}
 }
 implementer_arm = {
     'description': 'Arm',
@@ -342,14 +350,25 @@ socs = {
 dpdk_conf.set('RTE_ARCH_ARM', 1)
 dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
 
+update_flags = false
+soc_flags = []
 if dpdk_conf.get('RTE_ARCH_32')
-    # armv7 build
+    # 32-bit build
     dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
-    dpdk_conf.set('RTE_ARCH_ARMv7', 1)
-    # the minimum architecture supported, armv7-a, needs the following,
-    machine_args += '-mfpu=neon'
+    if meson.is_cross_build()
+        update_flags = true
+        implementer_id = meson.get_cross_property('implementer_id')
+        part_number = meson.get_cross_property('part_number')
+        flags_common = []
+    else
+        # armv7 build
+        dpdk_conf.set('RTE_ARCH_ARMv7', true)
+        # the minimum architecture supported, armv7-a, needs the following,
+        machine_args += '-mfpu=neon'
+    endif
 else
     # aarch64 build
+    update_flags = true
     soc = get_option('platform')
     soc_config = {}
     if not meson.is_cross_build()
@@ -386,7 +405,6 @@ else
         soc_config = socs.get(soc, {'not_supported': true})
     endif
 
-    soc_flags = []
     if soc_config.has_key('not_supported')
         error('SoC @0@ not supported.'.format(soc))
     elif soc_config != {}
@@ -401,7 +419,9 @@ else
         disable_drivers += ',' + soc_config.get('disable_drivers', '')
         enable_drivers += ',' + soc_config.get('enable_drivers', '')
     endif
+endif
 
+if update_flags
     if implementers.has_key(implementer_id)
         implementer_config = implementers[implementer_id]
     else
-- 
2.20.1



More information about the dev mailing list