[dpdk-dev] [PATCH v3 00/17] build DPDK libs and some drivers with meson/ninja

Luca Boccassi luca.boccassi at gmail.com
Wed Sep 13 19:01:25 CEST 2017


On Wed, 2017-09-13 at 15:12 +0100, Bruce Richardson wrote:
> V3 changes:
> * used two-digit version numbers when globally versioning
> libs+drivers
> * removed symlinks with single-digit version numbers in same case
> * moved driver install location from $prefix/dpdk to
> $prefix/share/dpdk
> 
> V2 changes:
> * fixed copyright notices, updated 2016 to 2017
> * removed dependency on kconfig file in kernel build tree
> * marked pmdinfogen as a "native" binary, in preparation for future
> cross-
>   compilation work
> * added in additional warning flags for compatibility with existing
> system
> ---
> 
> Following on from the two previous RFCs [1] [2], here is a cleaned up
> patchset to serve as a start-point for getting all of DPDK building
> with
> meson and ninja.
> 
> What's covered:
> * Basic infrastructure for feature detection and DPDK compilation
> * Building of all DPDK libraries - as either static or shared
> * Compilation of igb_uio driver for Linux
> * Building a number of mempool, crypto and net drivers.
> * Installation of compiled libraries and headers
> * Installation of usertools scripts
> * Compilation of testpmd as dpdk-testpmd and install of same
> * Generation and installation of pkgconfig file for DPDK
> * Contributors guide document addition describing how to add build
> scripts
> 
> What's not implemented:
> * Just about everything else :-), including
> * Support for non-x86 architectures, including cross-compilation
> * Lots of PMDs
> * Support for building and running the unit tests
> 
> Some key differences from RFC2:
> * Removed duplication between the different driver meson files by
> moving
>   the build logic up one level to the driver/meson.build file.
> * Added a build option to allow versioning the libraries using the
> DPDK
>   version number, rather than individual .so versions.
> * Made EAL a default dependency for libs, to simplify meson.build
> files for
>   a number of them.
> * Made the build variables used for libraries and drivers more
> consistent.
> * Moved responsibility for determining if a given driver or library
> should
>   be built to the driver/library's own build file, giving a single
> place
>   where all details about that component are placed, and saving
> having lots
>   of environment detection logic in higher-level build files.
> * Begun adding in developer documentation to make it easier for
> driver
>   authors/maintainers to contribute.
> 
> Meson 0.41 and ninja are needed, and ideally meson 0.42 is
> recommended.
> Ninja is available in most distributions, and meson - if an updated
> version
> is not available on your distro of choice - can be easily got using 
> 	"pip3 install meson"
> 
> To build and install then use:
> 
> 	meson build # use default compiler and shared libs
> 	cd build
> 	ninja
> 	sudo ninja install
> 
> Thereafter to use DPDK in other build systems one can use:
> 
> 	pkg-config --cflags DPDK
> 	pkt-config --libs DPDK
> 
> to query the needed DPDK build parameters.
> 
> Once reviewed and tested a bit, I hope to apply this set - or a new
> revision of it - to the build-next tree, to serve as a baseline for
> others
> to use and to add the missing functionality to.
> 
> Regards,
> /Bruce
> 
> [1] http://dpdk.org/ml/archives/dev/2017-June/067429.html
> [2] http://dpdk.org/ml/archives/dev/2017-August/072818.html
> 
> Bruce Richardson (17):
>   build: add initial infrastructure for meson & ninja builds
>   eal: add eal library to meson build
>   igb_uio: add igb_uio kmod to meson build
>   build: add DPDK libraries to build
>   build: add buildtools to meson build
>   build: add infrastructure for building PMDs
>   drivers/mempool: add SW mempool drivers to meson build
>   drivers/crypto: add crypto drv class and null PMD to meson
>   crypto/openssl: add driver to meson build
>   crypto/qat: add driver to meson build
>   drivers/net: add net driver support to meson build
>   drivers/net: add set of vdev PMDs to build
>   drivers/net: add drivers for Intel NICs to meson build
>   app/test-pmd: add test-pmd to meson build
>   usertools: add usertools installation to meson build
>   build: add option to version libs using DPDK version
>   doc: add documentation on how to add new components to DPDK
> 
>  app/meson.build                                    |  32 +++
>  app/test-pmd/meson.build                           |  74 +++++++
>  buildtools/gen-pmdinfo-cfile.sh                    |  41 ++++
>  buildtools/meson.build                             |  34 ++++
>  buildtools/pmdinfogen/meson.build                  |  36 ++++
>  config/meson.build                                 |  72 +++++++
>  config/rte_config.h                                | 121
> ++++++++++++
>  config/x86/meson.build                             |  70 +++++++
>  doc/guides/contributing/coding_style.rst           | 214
> +++++++++++++++++++++
>  drivers/crypto/meson.build                         |  35 ++++
>  drivers/crypto/null/meson.build                    |  33 ++++
>  drivers/crypto/openssl/meson.build                 |  38 ++++
>  drivers/crypto/qat/meson.build                     |  41 ++++
>  drivers/mempool/meson.build                        |  35 ++++
>  drivers/mempool/ring/meson.build                   |  32 +++
>  drivers/mempool/stack/meson.build                  |  32 +++
>  drivers/meson.build                                | 133
> +++++++++++++
>  drivers/net/af_packet/meson.build                  |  35 ++++
>  drivers/net/e1000/base/meson.build                 |  65 +++++++
>  drivers/net/e1000/meson.build                      |  44 +++++
>  drivers/net/fm10k/base/meson.build                 |  55 ++++++
>  drivers/net/fm10k/meson.build                      |  44 +++++
>  drivers/net/i40e/base/meson.build                  |  56 ++++++
>  drivers/net/i40e/meson.build                       |  60 ++++++
>  drivers/net/ixgbe/base/meson.build                 |  60 ++++++
>  drivers/net/ixgbe/meson.build                      |  58 ++++++
>  drivers/net/meson.build                            |  36 ++++
>  drivers/net/null/meson.build                       |  32 +++
>  drivers/net/pcap/meson.build                       |  41 ++++
>  drivers/net/ring/meson.build                       |  33 ++++
>  lib/librte_acl/meson.build                         |  59 ++++++
>  lib/librte_bitratestats/meson.build                |  34 ++++
>  lib/librte_cfgfile/meson.build                     |  34 ++++
>  lib/librte_cmdline/meson.build                     |  55 ++++++
>  lib/librte_compat/meson.build                      |  36 ++++
>  lib/librte_cryptodev/meson.build                   |  40 ++++
>  lib/librte_distributor/meson.build                 |  39 ++++
>  lib/librte_eal/bsdapp/eal/meson.build              |  77 ++++++++
>  lib/librte_eal/bsdapp/meson.build                  |  32 +++
>  lib/librte_eal/common/arch/meson.build             |  33 ++++
>  lib/librte_eal/common/arch/x86/meson.build         |  32 +++
>  lib/librte_eal/common/include/arch/meson.build     |  33 ++++
>  lib/librte_eal/common/include/arch/x86/meson.build |  48 +++++
>  lib/librte_eal/common/include/meson.build          |  71 +++++++
>  lib/librte_eal/common/meson.build                  |  71 +++++++
>  lib/librte_eal/linuxapp/eal/meson.build            |  82 ++++++++
>  lib/librte_eal/linuxapp/igb_uio/Kbuild             |   1 +
>  lib/librte_eal/linuxapp/igb_uio/meson.build        |  46 +++++
>  lib/librte_eal/linuxapp/meson.build                |  42 ++++
>  lib/librte_eal/meson.build                         |  44 +++++
>  lib/librte_efd/meson.build                         |  34 ++++
>  lib/librte_ether/meson.build                       |  45 +++++
>  lib/librte_eventdev/meson.build                    |  36 ++++
>  lib/librte_gro/meson.build                         |  34 ++++
>  lib/librte_hash/meson.build                        |  45 +++++
>  lib/librte_ip_frag/meson.build                     |  39 ++++
>  lib/librte_jobstats/meson.build                    |  33 ++++
>  lib/librte_kni/meson.build                         |  38 ++++
>  lib/librte_kvargs/meson.build                      |  34 ++++
>  lib/librte_latencystats/meson.build                |  34 ++++
>  lib/librte_lpm/meson.build                         |  35 ++++
>  lib/librte_mbuf/meson.build                        |  35 ++++
>  lib/librte_mempool/meson.build                     |  35 ++++
>  lib/librte_meter/meson.build                       |  33 ++++
>  lib/librte_metrics/meson.build                     |  33 ++++
>  lib/librte_net/meson.build                         |  45 +++++
>  lib/librte_pdump/meson.build                       |  34 ++++
>  lib/librte_pipeline/meson.build                    |  35 ++++
>  lib/librte_port/meson.build                        |  58 ++++++
>  lib/librte_power/meson.build                       |  37 ++++
>  lib/librte_reorder/meson.build                     |  34 ++++
>  lib/librte_ring/meson.build                        |  33 ++++
>  lib/librte_sched/meson.build                       |  36 ++++
>  lib/librte_table/meson.build                       |  52 +++++
>  lib/librte_timer/meson.build                       |  33 ++++
>  lib/librte_vhost/meson.build                       |  39 ++++
>  lib/meson.build                                    | 109 +++++++++++
>  meson.build                                        |  88 +++++++++
>  meson_options.txt                                  |   9 +
>  usertools/meson.build                              |  32 +++
>  80 files changed, 3818 insertions(+)
>  create mode 100644 app/meson.build
>  create mode 100644 app/test-pmd/meson.build
>  create mode 100755 buildtools/gen-pmdinfo-cfile.sh
>  create mode 100644 buildtools/meson.build
>  create mode 100644 buildtools/pmdinfogen/meson.build
>  create mode 100644 config/meson.build
>  create mode 100644 config/rte_config.h
>  create mode 100644 config/x86/meson.build
>  create mode 100644 drivers/crypto/meson.build
>  create mode 100644 drivers/crypto/null/meson.build
>  create mode 100644 drivers/crypto/openssl/meson.build
>  create mode 100644 drivers/crypto/qat/meson.build
>  create mode 100644 drivers/mempool/meson.build
>  create mode 100644 drivers/mempool/ring/meson.build
>  create mode 100644 drivers/mempool/stack/meson.build
>  create mode 100644 drivers/meson.build
>  create mode 100644 drivers/net/af_packet/meson.build
>  create mode 100644 drivers/net/e1000/base/meson.build
>  create mode 100644 drivers/net/e1000/meson.build
>  create mode 100644 drivers/net/fm10k/base/meson.build
>  create mode 100644 drivers/net/fm10k/meson.build
>  create mode 100644 drivers/net/i40e/base/meson.build
>  create mode 100644 drivers/net/i40e/meson.build
>  create mode 100644 drivers/net/ixgbe/base/meson.build
>  create mode 100644 drivers/net/ixgbe/meson.build
>  create mode 100644 drivers/net/meson.build
>  create mode 100644 drivers/net/null/meson.build
>  create mode 100644 drivers/net/pcap/meson.build
>  create mode 100644 drivers/net/ring/meson.build
>  create mode 100644 lib/librte_acl/meson.build
>  create mode 100644 lib/librte_bitratestats/meson.build
>  create mode 100644 lib/librte_cfgfile/meson.build
>  create mode 100644 lib/librte_cmdline/meson.build
>  create mode 100644 lib/librte_compat/meson.build
>  create mode 100644 lib/librte_cryptodev/meson.build
>  create mode 100644 lib/librte_distributor/meson.build
>  create mode 100644 lib/librte_eal/bsdapp/eal/meson.build
>  create mode 100644 lib/librte_eal/bsdapp/meson.build
>  create mode 100644 lib/librte_eal/common/arch/meson.build
>  create mode 100644 lib/librte_eal/common/arch/x86/meson.build
>  create mode 100644 lib/librte_eal/common/include/arch/meson.build
>  create mode 100644
> lib/librte_eal/common/include/arch/x86/meson.build
>  create mode 100644 lib/librte_eal/common/include/meson.build
>  create mode 100644 lib/librte_eal/common/meson.build
>  create mode 100644 lib/librte_eal/linuxapp/eal/meson.build
>  create mode 100644 lib/librte_eal/linuxapp/igb_uio/Kbuild
>  create mode 100644 lib/librte_eal/linuxapp/igb_uio/meson.build
>  create mode 100644 lib/librte_eal/linuxapp/meson.build
>  create mode 100644 lib/librte_eal/meson.build
>  create mode 100644 lib/librte_efd/meson.build
>  create mode 100644 lib/librte_ether/meson.build
>  create mode 100644 lib/librte_eventdev/meson.build
>  create mode 100644 lib/librte_gro/meson.build
>  create mode 100644 lib/librte_hash/meson.build
>  create mode 100644 lib/librte_ip_frag/meson.build
>  create mode 100644 lib/librte_jobstats/meson.build
>  create mode 100644 lib/librte_kni/meson.build
>  create mode 100644 lib/librte_kvargs/meson.build
>  create mode 100644 lib/librte_latencystats/meson.build
>  create mode 100644 lib/librte_lpm/meson.build
>  create mode 100644 lib/librte_mbuf/meson.build
>  create mode 100644 lib/librte_mempool/meson.build
>  create mode 100644 lib/librte_meter/meson.build
>  create mode 100644 lib/librte_metrics/meson.build
>  create mode 100644 lib/librte_net/meson.build
>  create mode 100644 lib/librte_pdump/meson.build
>  create mode 100644 lib/librte_pipeline/meson.build
>  create mode 100644 lib/librte_port/meson.build
>  create mode 100644 lib/librte_power/meson.build
>  create mode 100644 lib/librte_reorder/meson.build
>  create mode 100644 lib/librte_ring/meson.build
>  create mode 100644 lib/librte_sched/meson.build
>  create mode 100644 lib/librte_table/meson.build
>  create mode 100644 lib/librte_timer/meson.build
>  create mode 100644 lib/librte_vhost/meson.build
>  create mode 100644 lib/meson.build
>  create mode 100644 meson.build
>  create mode 100644 meson_options.txt
>  create mode 100644 usertools/meson.build

Acked-by: Luca Boccassi <luca.boccassi at gmail.com>

-- 
Kind regards,
Luca Boccassi


More information about the dev mailing list