* [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
@ 2020-04-09 14:14 Juraj Linkeš
2020-04-10 9:46 ` Bruce Richardson
2020-04-13 6:23 ` Ruifeng Wang
0 siblings, 2 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-09 14:14 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Juraj Linkeš
* Add arm-linux-gnueabihf cross-file
* Add generic and default arm 32 bit flags to arm meson.build
* Add support for disabling drivers using flags defined in Meson
* Change checks from dpdk_conf.has() to dpdk.conf.get()
* When processing which drivers to build, check whether the
appropriate RTE flag isn't set to false
Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
app/test-pmd/meson.build | 4 +-
app/test/meson.build | 2 +-
config/arm/arm_armv7a_linux_gcc | 17 ++++
config/arm/meson.build | 157 +++++++++++++++++++++-------------
drivers/meson.build | 13 ++-
drivers/net/kni/meson.build | 2 +-
examples/ethtool/meson.build | 2 +-
examples/ioat/meson.build | 2 +-
examples/kni/meson.build | 2 +-
examples/vm_power_manager/meson.build | 4 +-
lib/librte_port/meson.build | 2 +-
lib/meson.build | 2 +-
12 files changed, 133 insertions(+), 76 deletions(-)
create mode 100644 config/arm/arm_armv7a_linux_gcc
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build
index 6006c60f9..eac092d94 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -31,10 +31,10 @@ endif
if dpdk_conf.has('RTE_LIBRTE_BNXT_PMD')
deps += 'pmd_bnxt'
endif
-if dpdk_conf.has('RTE_LIBRTE_I40E_PMD')
+if dpdk_conf.has('RTE_LIBRTE_I40E_PMD') and dpdk_conf.get('RTE_LIBRTE_I40E_PMD')
deps += 'pmd_i40e'
endif
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
deps += 'pmd_ixgbe'
endif
if dpdk_conf.has('RTE_LIBRTE_SOFTNIC_PMD')
diff --git a/app/test/meson.build b/app/test/meson.build
index 351d29cb6..64d5d7bdb 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -348,7 +348,7 @@ endif
if dpdk_conf.has('RTE_LIBRTE_POWER')
test_deps += 'power'
endif
-if dpdk_conf.has('RTE_LIBRTE_KNI')
+if dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
test_deps += 'kni'
endif
if dpdk_conf.has('RTE_LIBRTE_PDUMP')
diff --git a/config/arm/arm_armv7a_linux_gcc b/config/arm/arm_armv7a_linux_gcc
new file mode 100644
index 000000000..39566d2ea
--- /dev/null
+++ b/config/arm/arm_armv7a_linux_gcc
@@ -0,0 +1,17 @@
+[binaries]
+c = 'arm-linux-gnueabihf-gcc'
+cpp = 'arm-linux-gnueabihf-cpp'
+ar = 'arm-linux-gnueabihf-gcc-ar'
+strip = 'arm-linux-gnueabihf-strip'
+pkgconfig = 'arm-linux-gnueabihf-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'arm'
+cpu = 'armv7-a'
+endian = 'little'
+
+[properties]
+implementor_id = 'generic_arm32'
+implementor_pn = 'default_arm32'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 6e75e6d97..d359f2e14 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -34,6 +34,11 @@ flags_generic = [
['RTE_MAX_LCORE', 256],
['RTE_USE_C11_MEM_MODEL', true],
['RTE_CACHE_LINE_SIZE', 128]]
+flags_generic_arm32 = [
+ ['RTE_MACHINE', '"armv7a"'],
+ ['RTE_MAX_LCORE', 128],
+ ['RTE_USE_C11_MEM_MODEL', false],
+ ['RTE_CACHE_LINE_SIZE', 64]]
flags_arm = [
['RTE_MACHINE', '"armv8a"'],
['RTE_MAX_LCORE', 16],
@@ -63,6 +68,32 @@ flags_armada = [
['RTE_MAX_LCORE', 16]]
flags_default_extra = []
+flags_default_arm32_extra = [
+ ['RTE_ARCH_ARM_NEON_MEMCPY', false],
+ ['RTE_FORCE_INTRINSICS', true],
+ ['RTE_ARCH_STRICT_ALIGN', true],
+ ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+ ['RTE_LIBRTE_VHOST_NUMA', false],
+ ['RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT', false],
+ ['RTE_LIBRTE_KNI', false],
+ ['RTE_LIBRTE_ARK_PMD', false],
+ ['RTE_LIBRTE_EM_PMD', false],
+ ['RTE_LIBRTE_IGB_PMD', false],
+ ['RTE_LIBRTE_CXGBE_PMD', false],
+ ['RTE_LIBRTE_E1000_PMD', false],
+ ['RTE_LIBRTE_ENIC_PMD', false],
+ ['RTE_LIBRTE_FM10K_PMD', false],
+ ['RTE_LIBRTE_I40E_PMD', false],
+ ['RTE_LIBRTE_IXGBE_PMD', false],
+ ['RTE_LIBRTE_VMXNET3_PMD', false],
+ ['RTE_LIBRTE_QEDE_PMD', false],
+ ['RTE_LIBRTE_SFC_EFX_PMD', false],
+ ['RTE_LIBRTE_AVP_PMD', false],
+ ['RTE_LIBRTE_NFP_PMD', false],
+ ['RTE_LIBRTE_HINIC_PMD', false],
+ ['RTE_LIBRTE_HNS3_PMD', false],
+ ['RTE_LIBRTE_PMD_IOAT_RAWDEV', false],
+ ['RTE_LIBRTE_IONIC_PMD', false]]
flags_n1sdp_extra = [
['RTE_MACHINE', '"n1sdp"'],
['RTE_MAX_NUMA_NODES', 1],
@@ -99,6 +130,9 @@ machine_args_generic = [
['0xd0b', ['-mcpu=cortex-a76']],
['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], flags_n1sdp_extra]]
+machine_args_generic_arm32 = [
+ ['default_arm32', ['-march=armv7-a', '-mtune=cortex-a9', '-mfpu=neon'], flags_default_arm32_extra]]
+
machine_args_cavium = [
['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
['native', ['-march=native']],
@@ -114,6 +148,7 @@ machine_args_emag = [
## Arm implementer ID (ARM DDI 0487C.a, Section G7.2.106, Page G7-5321)
impl_generic = ['Generic armv8', flags_generic, machine_args_generic]
+impl_generic_arm32 = ['Generic armv7', flags_generic_arm32, machine_args_generic_arm32]
impl_0x41 = ['Arm', flags_arm, machine_args_generic]
impl_0x42 = ['Broadcom', flags_generic, machine_args_generic]
impl_0x43 = ['Cavium', flags_cavium, machine_args_cavium]
@@ -136,74 +171,74 @@ if not dpdk_conf.get('RTE_ARCH_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'
else
dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)
dpdk_conf.set('RTE_ARCH_ARM64', 1)
+endif
- 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 = []
+machine_args = [] # Clear previous machine args
+cmd_generic = ['generic', '', '', 'default', '']
+cmd_output = cmd_generic # Set generic by default
+if arm_force_default_march and not meson.is_cross_build()
+ machine = impl_generic
+ impl_pn = 'default'
+elif not meson.is_cross_build()
+ # The script returns ['Implementer', 'Variant', 'Architecture',
+ # 'Primary Part number', 'Revision']
+ detect_vendor = find_program(join_paths(
+ meson.current_source_dir(), 'armv8_machine.py'))
+ cmd = run_command(detect_vendor.path())
+ if cmd.returncode() == 0
+ cmd_output = cmd.stdout().to_lower().strip().split(' ')
+ endif
+ # Set to generic if variable is not found
+ machine = get_variable('impl_' + cmd_output[0], ['generic'])
+ if machine[0] == 'generic'
machine = impl_generic
- impl_pn = 'default'
- elif not meson.is_cross_build()
- # The script returns ['Implementer', 'Variant', 'Architecture',
- # 'Primary Part number', 'Revision']
- detect_vendor = find_program(join_paths(
- meson.current_source_dir(), 'armv8_machine.py'))
- cmd = run_command(detect_vendor.path())
- if cmd.returncode() == 0
- cmd_output = cmd.stdout().to_lower().strip().split(' ')
- endif
- # Set to generic if variable is not found
- machine = get_variable('impl_' + cmd_output[0], ['generic'])
- if machine[0] == 'generic'
- machine = impl_generic
- cmd_output = cmd_generic
- endif
- impl_pn = cmd_output[3]
- if arm_force_native_march == true
- impl_pn = 'native'
- endif
- else
- impl_id = meson.get_cross_property('implementor_id', 'generic')
- impl_pn = meson.get_cross_property('implementor_pn', 'default')
- machine = get_variable('impl_' + impl_id)
+ cmd_output = cmd_generic
endif
-
- # Apply Common Defaults. These settings may be overwritten by machine
- # settings later.
- foreach flag: flags_common_default
- if flag.length() > 0
- dpdk_conf.set(flag[0], flag[1])
- endif
- endforeach
-
- message('Implementer : ' + machine[0])
- foreach flag: machine[1]
- if flag.length() > 0
- dpdk_conf.set(flag[0], flag[1])
- endif
- endforeach
-
- foreach marg: machine[2]
- if marg[0] == impl_pn
- foreach flag: marg[1]
- if cc.has_argument(flag)
- machine_args += flag
- endif
- endforeach
- # Apply any extra machine specific flags.
- foreach flag: marg.get(2, flags_default_extra)
- if flag.length() > 0
- dpdk_conf.set(flag[0], flag[1])
- endif
- endforeach
- endif
- endforeach
+ impl_pn = cmd_output[3]
+ if arm_force_native_march == true
+ impl_pn = 'native'
+ endif
+else
+ impl_id = meson.get_cross_property('implementor_id', 'generic')
+ impl_pn = meson.get_cross_property('implementor_pn', 'default')
+ machine = get_variable('impl_' + impl_id)
endif
+
+# Apply Common Defaults. These settings may be overwritten by machine
+# settings later.
+foreach flag: flags_common_default
+ if flag.length() > 0
+ dpdk_conf.set(flag[0], flag[1])
+ endif
+endforeach
+
+message('Implementer : ' + machine[0])
+foreach flag: machine[1]
+ if flag.length() > 0
+ dpdk_conf.set(flag[0], flag[1])
+ endif
+endforeach
+
+foreach marg: machine[2]
+ if marg[0] == impl_pn
+ foreach flag: marg[1]
+ if cc.has_argument(flag)
+ machine_args += flag
+ endif
+ endforeach
+ # Apply any extra machine specific flags.
+ foreach flag: marg.get(2, flags_default_extra)
+ if flag.length() > 0
+ dpdk_conf.set(flag[0], flag[1])
+ message('Setting flag: @0@: @1@'.format(flag[0], flag[1]))
+ endif
+ endforeach
+ endif
+endforeach
message(machine_args)
if (cc.get_define('__ARM_NEON', args: machine_args) != '' or
diff --git a/drivers/meson.build b/drivers/meson.build
index 5502bf992..5763752fc 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -71,6 +71,14 @@ foreach class:dpdk_driver_classes
reason = 'Explicitly disabled via build config'
endif
endforeach
+ if fmt_name == ''
+ fmt_name = name
+ endif
+ conf_flag = config_flag_fmt.format(fmt_name.to_upper())
+ if dpdk_conf.has(conf_flag) and not dpdk_conf.get(conf_flag)
+ build = false
+ reason = 'Explicitly disabled via build config'
+ endif
if build
# get dependency objs from strings
shared_deps = ext_deps
@@ -100,10 +108,7 @@ foreach class:dpdk_driver_classes
else
class_drivers += name
- if fmt_name == ''
- fmt_name = name
- endif
- dpdk_conf.set(config_flag_fmt.format(fmt_name.to_upper()),1)
+ dpdk_conf.set(conf_flag, true)
lib_name = driver_name_fmt.format(fmt_name)
if allow_experimental_apis
diff --git a/drivers/net/kni/meson.build b/drivers/net/kni/meson.build
index 0539b4768..79a16ae5b 100644
--- a/drivers/net/kni/meson.build
+++ b/drivers/net/kni/meson.build
@@ -2,7 +2,7 @@
# Copyright(c) 2018 Intel Corporation
# this driver can be built if-and-only-if KNI library is buildable
-build = dpdk_conf.has('RTE_LIBRTE_KNI')
+build = dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
reason = 'missing dependency, DPDK KNI library'
sources = files('rte_eth_kni.c')
deps += 'kni'
diff --git a/examples/ethtool/meson.build b/examples/ethtool/meson.build
index bc7a35514..814b8ada1 100644
--- a/examples/ethtool/meson.build
+++ b/examples/ethtool/meson.build
@@ -13,7 +13,7 @@ sources = files('lib/rte_ethtool.c',
includes = include_directories('lib', 'ethtool-app')
deps += 'bus_pci'
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
deps += 'pmd_ixgbe'
endif
diff --git a/examples/ioat/meson.build b/examples/ioat/meson.build
index ed8328963..029126353 100644
--- a/examples/ioat/meson.build
+++ b/examples/ioat/meson.build
@@ -6,7 +6,7 @@
# To build this example as a standalone application with an already-installed
# DPDK instance, use 'make'
-build = dpdk_conf.has('RTE_LIBRTE_PMD_IOAT_RAWDEV')
+build = dpdk_conf.has('RTE_LIBRTE_PMD_IOAT_RAWDEV') and dpdk_conf.get('RTE_LIBRTE_PMD_IOAT_RAWDEV')
deps += ['rawdev_ioat']
diff --git a/examples/kni/meson.build b/examples/kni/meson.build
index fd6ae4442..d9514b155 100644
--- a/examples/kni/meson.build
+++ b/examples/kni/meson.build
@@ -7,7 +7,7 @@
# DPDK instance, use 'make'
# this app can be built if-and-only-if KNI library is buildable
-build = dpdk_conf.has('RTE_LIBRTE_KNI')
+build = dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
deps += ['kni', 'bus_pci']
sources = files(
'main.c'
diff --git a/examples/vm_power_manager/meson.build b/examples/vm_power_manager/meson.build
index 20a4a05b3..9d591813c 100644
--- a/examples/vm_power_manager/meson.build
+++ b/examples/vm_power_manager/meson.build
@@ -17,11 +17,11 @@ if dpdk_conf.has('RTE_LIBRTE_BNXT_PMD')
deps += ['pmd_bnxt']
endif
-if dpdk_conf.has('RTE_LIBRTE_I40E_PMD')
+if dpdk_conf.has('RTE_LIBRTE_I40E_PMD') and dpdk_conf.get('RTE_LIBRTE_I40E_PMD')
deps += ['pmd_i40e']
endif
-if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD')
+if dpdk_conf.has('RTE_LIBRTE_IXGBE_PMD') and dpdk_conf.get('RTE_LIBRTE_IXGBE_PMD')
deps += ['pmd_ixgbe']
endif
diff --git a/lib/librte_port/meson.build b/lib/librte_port/meson.build
index 0d5ede44a..5f3d190fa 100644
--- a/lib/librte_port/meson.build
+++ b/lib/librte_port/meson.build
@@ -28,7 +28,7 @@ if dpdk_conf.has('RTE_PORT_PCAP')
ext_deps += pcap_dep # dependency provided in config/meson.build
endif
-if dpdk_conf.has('RTE_LIBRTE_KNI')
+if dpdk_conf.has('RTE_LIBRTE_KNI') and dpdk_conf.get('RTE_LIBRTE_KNI')
sources += files('rte_port_kni.c')
headers += files('rte_port_kni.h')
deps += 'kni'
diff --git a/lib/meson.build b/lib/meson.build
index 9c3cc55d5..59ccfed9d 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -86,7 +86,7 @@ foreach l:libraries
set_variable(name.underscorify() + '_disable_reason', reason)
else
enabled_libs += name
- dpdk_conf.set('RTE_LIBRTE_' + name.to_upper(), 1)
+ dpdk_conf.set('RTE_LIBRTE_' + name.to_upper(), true)
install_headers(headers)
libname = 'rte_' + name
--
2.11.0
NOTES: tested here: https://travis-ci.com/github/jlinkes/dpdk/builds/159597484
There are two issues I would like to get feedback for:
1. the aarch64 -> arm cross compilation fails when compiling l3fwd example [0].
I think this failure needs to be fixed by arm devs, but I would like to have
this confirmed.
2. the patch breaks ABI checks on aarch64 [1]. The reason is that the
RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in config/arm/meson.build
get properly applied, the libs don't get built and then check the fails when
it doesn't find them. I don't know whether the application of these flags is
desirable (and we would need to fix the ABI check) or whether we should
remove the flags.
[0] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622662#L2672
[1] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622661#L4488
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
@ 2020-04-10 9:46 ` Bruce Richardson
2020-04-14 6:48 ` Juraj Linkeš
2020-04-13 6:23 ` Ruifeng Wang
1 sibling, 1 reply; 5+ messages in thread
From: Bruce Richardson @ 2020-04-10 9:46 UTC (permalink / raw)
To: Juraj Linkeš; +Cc: dev
On Thu, Apr 09, 2020 at 04:14:48PM +0200, Juraj Linkeš wrote:
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
> * Change checks from dpdk_conf.has() to dpdk.conf.get()
> * When processing which drivers to build, check whether the
> appropriate RTE flag isn't set to false
>
This is probably best done as separate patches that can be reviewed
separately. While the first two seem straight-forward, the last item seems
strange and should be reviewed separately. Why do you want flags defined
in meson to enable/disable drivers? It's taking a big step back towards
having a statically defined configuration, which is something we really
want to get away from.
/Bruce
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
2020-04-10 9:46 ` Bruce Richardson
@ 2020-04-13 6:23 ` Ruifeng Wang
2020-04-14 7:05 ` Juraj Linkeš
1 sibling, 1 reply; 5+ messages in thread
From: Ruifeng Wang @ 2020-04-13 6:23 UTC (permalink / raw)
To: Juraj Linkeš, bruce.richardson
Cc: dev, Honnappa Nagarahalli, Gavin Hu, nd, nd
Hi Juraj,
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Juraj Linke?
> Sent: Thursday, April 9, 2020 10:15 PM
> To: bruce.richardson@intel.com
> Cc: dev@dpdk.org; Juraj Linkeš <juraj.linkes@pantheon.tech>
> Subject: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
>
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
> * Change checks from dpdk_conf.has() to dpdk.conf.get()
> * When processing which drivers to build, check whether the
> appropriate RTE flag isn't set to false
>
The changes are not small as a single patch.
Could you split it into series of smaller patches?
I think each bullet in commit message can be a separate patch.
> Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
> ---
> app/test-pmd/meson.build | 4 +-
> app/test/meson.build | 2 +-
> config/arm/arm_armv7a_linux_gcc | 17 ++++
> config/arm/meson.build | 157 +++++++++++++++++++++-------------
> drivers/meson.build | 13 ++-
> drivers/net/kni/meson.build | 2 +-
> examples/ethtool/meson.build | 2 +-
> examples/ioat/meson.build | 2 +-
> examples/kni/meson.build | 2 +-
> examples/vm_power_manager/meson.build | 4 +-
> lib/librte_port/meson.build | 2 +-
> lib/meson.build | 2 +-
> 12 files changed, 133 insertions(+), 76 deletions(-) create mode 100644
> config/arm/arm_armv7a_linux_gcc
>
<snip>
> --
> 2.11.0
> NOTES: tested here: https://travis-
> ci.com/github/jlinkes/dpdk/builds/159597484
> There are two issues I would like to get feedback for:
> 1. the aarch64 -> arm cross compilation fails when compiling l3fwd example
> [0].
> I think this failure needs to be fixed by arm devs, but I would like to have
> this confirmed.
Yes, this should be fixed in source code.
> 2. the patch breaks ABI checks on aarch64 [1]. The reason is that the
> RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in
> config/arm/meson.build
> get properly applied, the libs don't get built and then check the fails when
> it doesn't find them. I don't know whether the application of these flags is
> desirable (and we would need to fix the ABI check) or whether we should
> remove the flags.
Does the changes impact not only aarch32 but also aarch64?
>
> [0] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622662#L2672
> [1] https://travis-ci.com/github/jlinkes/dpdk/jobs/317622661#L4488
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
2020-04-10 9:46 ` Bruce Richardson
@ 2020-04-14 6:48 ` Juraj Linkeš
0 siblings, 0 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-14 6:48 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev
Hi Bruce,
-----Original Message-----
From: Bruce Richardson <bruce.richardson@intel.com>
Sent: Friday, April 10, 2020 11:46 AM
To: Juraj Linkeš <juraj.linkes@pantheon.tech>
Cc: dev@dpdk.org
Subject: Re: [PATCH] build: add arm 32bit cross compilation to Meson
On Thu, Apr 09, 2020 at 04:14:48PM +0200, Juraj Linkeš wrote:
> * Add arm-linux-gnueabihf cross-file
> * Add generic and default arm 32 bit flags to arm meson.build
> * Add support for disabling drivers using flags defined in Meson
> * Change checks from dpdk_conf.has() to dpdk.conf.get()
> * When processing which drivers to build, check whether the
> appropriate RTE flag isn't set to false
>
This is probably best done as separate patches that can be reviewed separately. While the first two seem straight-forward, the last item seems strange and should be reviewed separately. Why do you want flags defined in meson to enable/disable drivers? It's taking a big step back towards having a statically defined configuration, which is something we really want to get away from.
/Bruce
I will split the patch.
I don't have any particular reason to do it this way. What should I do? Add conditions that check for arm32 build to each of these drivers?
Thanks,
Juraj
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson
2020-04-13 6:23 ` Ruifeng Wang
@ 2020-04-14 7:05 ` Juraj Linkeš
0 siblings, 0 replies; 5+ messages in thread
From: Juraj Linkeš @ 2020-04-14 7:05 UTC (permalink / raw)
To: Ruifeng Wang, bruce.richardson
Cc: dev, Honnappa Nagarahalli, Gavin Hu, nd, nd
Hi Ruifeng,
> -----Original Message-----
> From: Ruifeng Wang <Ruifeng.Wang@arm.com>
> Sent: Monday, April 13, 2020 8:24 AM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>; bruce.richardson@intel.com
> Cc: dev@dpdk.org; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> Gavin Hu <Gavin.Hu@arm.com>; nd <nd@arm.com>; nd <nd@arm.com>
> Subject: RE: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to
> Meson
>
> Hi Juraj,
>
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Juraj Linke?
> > Sent: Thursday, April 9, 2020 10:15 PM
> > To: bruce.richardson@intel.com
> > Cc: dev@dpdk.org; Juraj Linkeš <juraj.linkes@pantheon.tech>
> > Subject: [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to
> > Meson
> >
> > * Add arm-linux-gnueabihf cross-file
> > * Add generic and default arm 32 bit flags to arm meson.build
> > * Add support for disabling drivers using flags defined in Meson
> > * Change checks from dpdk_conf.has() to dpdk.conf.get()
> > * When processing which drivers to build, check whether the
> > appropriate RTE flag isn't set to false
> >
> The changes are not small as a single patch.
> Could you split it into series of smaller patches?
> I think each bullet in commit message can be a separate patch.
Sure, I'll split the patch.
> > --
> > 2.11.0
> > NOTES: tested here: https://travis-
> > ci.com/github/jlinkes/dpdk/builds/159597484
> > There are two issues I would like to get feedback for:
> > 1. the aarch64 -> arm cross compilation fails when compiling l3fwd
> > example [0].
> > I think this failure needs to be fixed by arm devs, but I would like to have
> > this confirmed.
> Yes, this should be fixed in source code.
Ok, thanks.
> > 2. the patch breaks ABI checks on aarch64 [1]. The reason is that the
> > RTE_LIBRTE_FM10K_PMD and RTE_LIBRTE_AVP_PMD flags in
> > config/arm/meson.build
> > get properly applied, the libs don't get built and then check the fails when
> > it doesn't find them. I don't know whether the application of these flags is
> > desirable (and we would need to fix the ABI check) or whether we should
> > remove the flags.
> Does the changes impact not only aarch32 but also aarch64?
Yes, it does, but only aarch64 cross build (when --cross-file is used). Bruce mentioned that they're moving away from statically defining the driver flags, so the mechanism will change, probably in a way that won't affect aarch64 cross build.
Juraj
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-04-14 7:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-09 14:14 [dpdk-dev] [PATCH] build: add arm 32bit cross compilation to Meson Juraj Linkeš
2020-04-10 9:46 ` Bruce Richardson
2020-04-14 6:48 ` Juraj Linkeš
2020-04-13 6:23 ` Ruifeng Wang
2020-04-14 7:05 ` Juraj Linkeš
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).