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.lin...@pantheon.tech>
Acked-by: Ruifeng Wang <ruifeng.w...@arm.com>
---
 config/arm/meson.build | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/config/arm/meson.build b/config/arm/meson.build
index 42b4e43c7..19a7ea194 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -62,6 +62,11 @@ flags_armada = [
        ['RTE_MAX_LCORE', 16]]
 
 flags_default_extra = []
+flags_aarch32_extra = [
+        ['RTE_ARCH_ARM_NEON_MEMCPY', false],
+        ['RTE_ARCH_STRICT_ALIGN', true],
+        ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+        ['RTE_MAX_LCORE', 256]]
 flags_thunderx_extra = [
        ['RTE_MACHINE', '"thunderx"'],
        ['RTE_USE_C11_MEM_MODEL', false]]
@@ -93,6 +98,7 @@ flags_n1generic_extra = [
 machine_args_generic = [
        ['default', ['-march=armv8-a+crc', '-moutline-atomics']],
        ['native', ['-march=native']],
+       ['aarch32', ['-march=armv8-a', '-mfpu=neon'], flags_aarch32_extra],
        ['0xd03', ['-mcpu=cortex-a53']],
        ['0xd04', ['-mcpu=cortex-a35']],
        ['0xd07', ['-mcpu=cortex-a57']],
@@ -133,21 +139,28 @@ impl_dpaa = ['NXP DPAA', flags_dpaa, machine_args_generic]
 
 dpdk_conf.set('RTE_ARCH_ARM', 1)
 dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)
-
+update_flags = false
 if dpdk_conf.get('RTE_ARCH_32')
        dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
        dpdk_conf.set('RTE_ARCH_ARMv7', 1)
        # the minimum architecture supported, armv7-a, needs the following,
        # mk/machine/armv7a/rte.vars.mk sets it too
-       machine_args += '-mfpu=neon'
+       if meson.is_cross_build()
+               update_flags = true
+               impl_id = meson.get_cross_property('implementor_id', 'aarch32')
+               impl_pn = meson.get_cross_property('implementor_pn', 'default')
+               machine = get_variable('impl_' + impl_id)
+       else
+               machine_args += '-mfpu=neon'
+       endif
 else
+       update_flags = true
        dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)
        dpdk_conf.set('RTE_ARCH_ARM64', 1)
 
        machine = []
        cmd_generic = ['generic', '', '', 'default', '']
        cmd_output = cmd_generic # Set generic by default
-       machine_args = [] # Clear previous machine args
        if arm_force_default_march and not meson.is_cross_build()
                machine = impl_generic
                impl_pn = 'default'
@@ -175,7 +188,10 @@ else
                impl_pn = meson.get_cross_property('implementor_pn', 'default')
                machine = get_variable('impl_' + impl_id)
        endif
+endif
 
+if update_flags == true
+       machine_args = [] # Clear previous machine args
        # Apply Common Defaults. These settings may be overwritten by machine
        # settings later.
        foreach flag: flags_common_default
-- 
2.20.1

Reply via email to