Skip to content

build DPDK libs and some drivers with meson/ninja

Bruce Richardson dpdk-dev 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest17 patches 5 repliesIn review
  2. v217 patches 10 repliesSuperseded
  3. v117 patches 38 repliesSuperseded

Changes in v3 from the cover letter

* 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

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17build: add initial infrastructure for meson & ninja buildsconfig/meson.build config/rte_config.h config/x86/meson.build +2 more+281 -03 replies
2/17eal: add eal library to meson buildconfig/rte_config.h lib/librte_eal/bsdapp/eal/meson.build lib/librte_eal/bsdapp/meson.build +11 more+580 -10 replies
3/17igb_uio: add igb_uio kmod to meson buildlib/librte_eal/linuxapp/igb_uio/Kbuild lib/librte_eal/linuxapp/igb_uio/meson.build lib/librte_eal/linuxapp/meson.build +1 more+59 -00 replies
4/17build: add DPDK libraries to buildconfig/rte_config.h lib/librte_acl/meson.build lib/librte_bitratestats/meson.build +32 more+1379 -00 replies
5/17build: add buildtools to meson buildbuildtools/gen-pmdinfo-cfile.sh buildtools/meson.build buildtools/pmdinfogen/meson.build +1 more+112 -00 replies
6/17build: add infrastructure for building PMDsdrivers/meson.build meson.build+123 -10 replies
7/17drivers/mempool: add SW mempool drivers to meson builddrivers/mempool/meson.build drivers/mempool/ring/meson.build drivers/mempool/stack/meson.build +1 more+100 -10 replies
8/17drivers/crypto: add crypto drv class and null PMD to mesondrivers/crypto/meson.build drivers/crypto/null/meson.build drivers/meson.build+75 -60 replies
9/17crypto/openssl: add driver to meson builddrivers/crypto/meson.build drivers/crypto/openssl/meson.build+39 -10 replies
10/17crypto/qat: add driver to meson buildconfig/rte_config.h drivers/crypto/meson.build drivers/crypto/qat/meson.build+50 -10 replies
11/17drivers/net: add net driver support to meson builddrivers/meson.build drivers/net/meson.build+36 -10 replies
12/17drivers/net: add set of vdev PMDs to buildconfig/rte_config.h drivers/net/af_packet/meson.build drivers/net/meson.build +3 more+146 -10 replies
13/17drivers/net: add drivers for Intel NICs to meson buildconfig/rte_config.h drivers/net/e1000/base/meson.build drivers/net/e1000/meson.build +7 more+456 -10 replies
14/17app/test-pmd: add test-pmd to meson buildapp/meson.build app/test-pmd/meson.build meson.build+108 -10 replies
15/17usertools: add usertools installation to meson buildmeson.build usertools/meson.build+34 -10 replies
16/17build: add option to version libs using DPDK versiondrivers/meson.build lib/librte_eal/bsdapp/eal/meson.build lib/librte_eal/linuxapp/eal/meson.build +2 more+46 -40 replies
17/17doc: add documentation on how to add new components to DPDKdoc/guides/contributing/coding_style.rst+214 -00 replies

Reviews trailers per patch

None of the 17 patches has a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchLuca Boccassi
SeriesA-b
1/17
2/17
3/17
4/17
5/17
6/17
7/17
8/17
9/17
10/17
11/17
12/17
13/17
14/17
15/17
16/17
17/17

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v3 thread

Cover letter [PATCH v3 00/17] build DPDK libs and some drivers with meson/ninja

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
Signature · 1 line
2.13.5