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.bocca...@gmail.com> -- Kind regards, Luca Boccassi