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.
We also want to be able to enable/disable which drivers 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 SoC configuration. The current implementation adds/supports the following: * x86 -> aarch64 cross build with added config options/enabled or disabled drivers/libs * aarch64 -> aarch64 builds for a different SoCs using meson -Dplatform option or using a cross file v16: Only three commits remaining - updated the cover letter. Renamed the 'soc' meson option to 'platform'. Added the support for enabling a particular set of drivers. Aligned enabling and disabling with the command line option so that wildcards can be used. Juraj Linkeš (3): build: disable/enable drivers in Arm builds build: add 'platform' meson option and Arm SoC config config: fix Arm implementer and its SoCs config/arm/arm64_armada_linux_gcc | 6 +- config/arm/arm64_armv8_linux_clang_ubuntu1804 | 3 +- config/arm/arm64_armv8_linux_gcc | 5 +- config/arm/arm64_bluefield_linux_gcc | 6 +- config/arm/arm64_dpaa_linux_gcc | 6 +- config/arm/arm64_emag_linux_gcc | 5 +- config/arm/arm64_graviton2_linux_gcc | 6 +- config/arm/arm64_n1sdp_linux_gcc | 6 +- config/arm/arm64_n2_linux_gcc | 6 +- config/arm/arm64_octeontx2_linux_gcc | 6 +- config/arm/arm64_stingray_linux_gcc | 6 +- config/arm/arm64_thunderx2_linux_gcc | 5 +- config/arm/arm64_thunderxt88_linux_gcc | 5 +- config/arm/meson.build | 178 +++++++++++++++--- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 76 +++----- drivers/meson.build | 41 +++- meson.build | 2 + meson_options.txt | 2 + 18 files changed, 231 insertions(+), 139 deletions(-) -- 2.20.1