[dpdk-dev] [PATCH v7 00/14] Arm build options rework
Juraj Linkeš
juraj.linkes at pantheon.tech
Thu Nov 5 14:59:08 CET 2020
The current way of specifying Arm configuration options is insufficient
since we can't identify the SoC we're building for from the MIDR
information. For example, we can't distinguish between N1SDP, Graviton2
or Ampere Altra.
Add a way to specify the cpu count and numa node count for cross builds.
We also want to be able to disable which drivers (and possibly
libraries) are built without user input. This is useful when building:
1. on an SoC that is slow and we want to build only what is necessary
without the user having to check which libraries they have installed
2. a cross build on a fast aarch64 machine but with target SoC which
differs in capabilities or libraries.
This is achieved by specifying the drivers in cross files.
Among libraries, only libnuma can be now disabled.
Also add an optional way to discover cpu count a numa node count. Fix
-Dmax_lcores and -Dmax_numa_nodes for arm builds.
The current implementation adds/supports the following:
* x86 -> aarch64 cross build with added config options/disabled
drivers/libs
* aarch64 -> aarch64 builds for a different SoCs must be done using
cross-files
* max numa nodes and max lcore may be specified on the command line to
overwrite the values for any (native or cross) build
v2:
Major rework of the whole series.
v3:
Added numa and core count defaults for x86 default build.
Removed numa and core count defaults. Now requiring defaults to be
specified in a cross file or on the cmdline.
Added FreeBDS support for numa count discovery.
v4:
Make automatic numa and cpu counts discovery optional.
v5:
Split the refactor patch into smaller patches.
Simplify buildtools/get_numa_count.py.
Add more explanation to cover letter.
v6:
Apply cross file options arch agnostically, not just in Arm cross
builds.
Streamline Arm build setup and machine args: always use native args in
native builds, require implementer ID and part number for cross builds.
v7:
Arm config options are now organized in one dictionary.
Removed unsupported implementers and removed fallback to generic
implementer/part number for unknown implementer/part number.
Added meson config option arm_soc which can be used to specify
configuration to be used, useful for aarch64 -> aarch64 builds.
Juraj Linkeš (14):
build: alias default build as generic
build: rename Arm build variables
build: remove unused or superfluous variables
build: reformat and move Arm config and comments
build: simplify how Arm flags are processed
build: organize Arm config into dict
build: isolate configuration for generic build
build: use native machine args in Arm native build
ci: switch to generic Arm builds
build: optional NUMA and cpu counts detection
build: add core and NUMA counts to cross files
build: disable Arm drivers
build: disable libnuma in cross builds
build: add Arm SoC meson option
.ci/linux-build.sh | 4 +
buildtools/get_cpu_count.py | 7 +
buildtools/get_numa_count.py | 22 +
buildtools/meson.build | 2 +
config/arm/arm64_armada_linux_gcc | 2 +-
config/arm/arm64_armv8_linux_gcc | 26 +-
config/arm/arm64_bluefield_linux_gcc | 3 +-
config/arm/arm64_dpaa_linux_gcc | 2 +-
config/arm/arm64_emag_linux_gcc | 2 +-
config/arm/arm64_graviton2_linux_gcc | 3 +-
config/arm/arm64_n1sdp_linux_gcc | 3 +-
config/arm/arm64_octeontx2_linux_gcc | 3 +-
config/arm/arm64_stingray_linux_gcc | 3 +-
config/arm/arm64_thunderx2_linux_gcc | 3 +-
..._linux_gcc => arm64_thunderxt88_linux_gcc} | 2 +-
config/arm/meson.build | 495 ++++++++++++------
config/meson.build | 90 +++-
config/x86/meson.build | 2 +
doc/guides/prog_guide/build-sdk-meson.rst | 4 +-
drivers/meson.build | 6 +-
meson.build | 1 +
meson_options.txt | 12 +-
22 files changed, 483 insertions(+), 214 deletions(-)
create mode 100644 buildtools/get_cpu_count.py
create mode 100644 buildtools/get_numa_count.py
rename config/arm/{arm64_thunderx_linux_gcc => arm64_thunderxt88_linux_gcc} (92%)
--
2.20.1
More information about the dev
mailing list