All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Varlese <marco.varlese@suse.com>
To: Luca Boccassi <luca.boccassi@gmail.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	dev@dpdk.org
Subject: Re: [RFCv2 00/40] Building DPDK with meson and ninja
Date: Fri, 18 Aug 2017 10:00:01 +0200	[thread overview]
Message-ID: <1503043201.3032.0.camel@suse.com> (raw)
In-Reply-To: <1502983469.31476.3.camel@gmail.com>

Hi Luca,

On Thu, 2017-08-17 at 16:24 +0100, Luca Boccassi wrote:
> On Thu, 2017-08-17 at 16:10 +0200, Marco Varlese wrote:
> > 
> > Hi Bruce,
> > 
> > On Mon, 2017-08-14 at 10:51 +0100, Bruce Richardson wrote:
> > > 
> > > Following on from previous RFC [http://dpdk.org/dev/patchwork/patch
> > > /25104/]
> > > here is a second draft implementation for building DPDK with meson
> > > and
> > > ninja. While still not building all of DPDK, and needing patch
> > > cleanup so
> > > that patches don't overwrite previous work, it is more complete in
> > > many
> > > ways than the previous version and includes:
> > > 
> > > * dynamic build configuration e.g. building pcap driver only if
> > > pcap is
> > >   found, only build af_packet if the target is linux, and only
> > > building QAT
> > >   and openssl crypto drivers if libcrypto is found
> > > * support for pmdinfo inside the PMDs(for shared builds) and
> > > binaries (for
> > >   static builds)
> > > * generalized/standardized way of building libs and drivers, though
> > > the
> > >   drivers code still needs generalization at the driver, rather
> > > than
> > >   driver-class level.
> > > * support for having a pkgconfig file for DPDK on install, and
> > > helloworld
> > >   and l2fwd can be built using the pkgconfig info (via make, not
> > > ninja)
> > > * support for library versions
> > > * an implementation for FreeBSD as well as Linux
> > > * all libraries are included in the build, as well as a number of
> > > NIC,
> > >   crypto, and mempool drivers
> > > * the igb_uio kernel module is build via the kernel Kbuild system
> > > as part
> > >   of a meson/ninja DPDK build
> > 
> > This is really great to see. I do have one suggestion.
> > Would it be possible to version the libraries built by the build-
> > system
> > following the same version of the DPDK release?
> > 
> > For instance, in DPDK 17.08 we currently have:
> > # objdump -p librte_pmd_ixgbe.so.1 |grep SONAME
> >   SONAME               librte_pmd_ixgbe.so.1
> > 
> > Would it make sense to instead have librte_pmd_ixgbe.so.17.08
> > 
> > I think it would help to facilitate the installation of multiple DPDK
> > library
> > versions on the same system. 
> > 
> > For example, we could have the following scenario:
> > 
> > 1) OpenVSwithc linked with version 17.02 of DPDK
> > 2) VPP linked with version 17.08 of DPDK
> > 3) DPDK 18.xx installed in the system for any cutting-edge
> > application
> > prototyping.
> > 
> > Is this something which could be incorporated as part of this work?
> 
> Christian sent a patch a while ago, which was merged, to enable this in
> the current build system, it's the CONFIG_RTE_MAJOR_ABI option, we use
> it in Debian and Ubuntu for the reasons you mentioned.
Thanks for your input, very much appreciated.
I'll give it a try right away.

> 
> And if it's not been translated yet, I agree it's an important one.
> 
> > 
> > > 
> > > there is still plenty to do on this, but please review and test it
> > > out.
> > > I've kept the patches split so that the evolution of the work is a
> > > bit
> > > clearer than having it all send in a monolithic patch. All feedback
> > > welcome. I recommend one uses the latest meson release for this,
> > > though the
> > > minimum version supported should be v0.4.
> > > 
> > > I've tested static and dynamic builds with clang and gcc on Fedora
> > > 26, and
> > > done test builds on FreeBSD 11 with clang too. Build with other
> > > compilers
> > > and on other OS's may have issues, so YMMV.
> > 
> > I'll give it a try on openSUSE and let you know of any issues I might
> > face.
> > 
> > 
> > Cheers,
> > Marco
> > 
> > > 
> > > 
> > > To do a basic build, using gcc and with shared libs, in a folder
> > > called "gcc-
> > > build":
> > > 
> > > 	user@host:dpdk$ meson gcc-build
> > > 	....
> > > 	user@host:dpdk$ cd gcc-build
> > > 	user@host:gcc-build$ ninja
> > > 	user@host:gcc-build$ sudo ninja install
> > > 
> > > To do a build with clang, using static libs:
> > > 
> > > 	user@host:dpdk$ CC=clang meson --default_library=static clang-
> > > build
> > > 	....
> > > 	user@host:dpdk$ cd clang-build
> > > 	user@host:clang-build$ ninja
> > > 	user@host:clang-build$ sudo ninja install
> > > 
> > > Other options can be adjusted by running "mesonconf" in the build
> > > directory, i.e. gcc-build or clang-build in the examples above.
> > > 
> > > 
> > > Bruce Richardson (40):
> > >   build: initial hooks for using meson with DPDK
> > >   build: create pkg-config file for DPDK
> > >   build: build linuxapp EAL with meson and ninja
> > >   build: add EAL support under BSD
> > >   build: add core libraries to meson build system
> > >   build: add i40e driver to meson build
> > >   build: add pmdinfogen to build
> > >   build: generate list of sources for pmdinfogen
> > >   build: build i40e driver, including pmdinfo
> > >   build: install usertools scripts
> > >   build: simplify generation of pmd.c files
> > >   build: generalize net driver build to higher level
> > >   build: remove hard-coded enablement of vector driver
> > >   build: add ixgbe driver to build
> > >   build: set up standard deps for drivers
> > >   build: add af_packet driver to build
> > >   build: add pcap PMD support
> > >   build: add symbol version map file support to libs
> > >   build: build libraries in a loop for brevity
> > >   build: version library .so files
> > >   eal: add version information to meson build
> > >   build: add mempool drivers to build
> > >   build: add gro library to meson build
> > >   build: tweak naming of pmd dependencies
> > >   build: track driver include directories properly
> > >   metrics: add metrics lib to meson build
> > >   build: track dependencies recursively
> > >   testpmd: compile testpmd with meson and ninja
> > >   crypto/null: rename the version file to standard
> > >   crypto/qat: remove dependency on ether library
> > >   build: add cryptodev and some crypto drivers to build
> > >   igb_uio: add igb_uio to meson build
> > >   ip_frag: rename version file to standard name
> > >   build: add most remaining libraries to meson build
> > >   build: add packet framework libs to meson build
> > >   acl: add acl library to meson build
> > >   build: add ark and avp PMDs to build
> > >   build: fix static library builds with base code
> > >   build: fix driver dependencies for static builds
> > >   examples: allow basic sample app build using pkg-config
> > > 
> > >  app/meson.build                                    |  32 ++++++
> > >  app/test-pmd/meson.build                           |  74
> > > +++++++++++++
> > >  buildtools/gen-pmdinfo-cfile.sh                    |  41 ++++++++
> > >  buildtools/meson.build                             |  34 ++++++
> > >  buildtools/pmdinfogen/meson.build                  |  43 ++++++++
> > >  config/meson.build                                 |  69
> > > +++++++++++++
> > >  config/rte_config.h                                | 114
> > > +++++++++++++++++++++
> > >  config/x86/meson.build                             |  70
> > > +++++++++++++
> > >  drivers/crypto/meson.build                         | 108
> > > +++++++++++++++++++
> > >  drivers/crypto/null/Makefile                       |   2 +-
> > >  drivers/crypto/null/meson.build                    |  32 ++++++
> > >  ...crypto_version.map => rte_pmd_null_version.map} |   0
> > >  drivers/crypto/openssl/meson.build                 |  38 +++++++
> > >  drivers/crypto/qat/meson.build                     |  41 ++++++++
> > >  drivers/crypto/qat/qat_crypto.c                    |   1 -
> > >  drivers/mempool/meson.build                        | 108
> > > +++++++++++++++++++
> > >  drivers/mempool/ring/meson.build                   |  32 ++++++
> > >  drivers/mempool/stack/meson.build                  |  32 ++++++
> > >  drivers/meson.build                                |  34 ++++++
> > >  drivers/net/af_packet/meson.build                  |  35 +++++++
> > >  drivers/net/ark/meson.build                        |  45 ++++++++
> > >  drivers/net/avp/meson.build                        |  34 ++++++
> > >  drivers/net/i40e/base/meson.build                  |  56
> > > ++++++++++
> > >  drivers/net/i40e/meson.build                       |  61
> > > +++++++++++
> > >  drivers/net/ixgbe/base/meson.build                 |  60
> > > +++++++++++
> > >  drivers/net/ixgbe/meson.build                      |  58
> > > +++++++++++
> > >  drivers/net/meson.build                            | 108
> > > +++++++++++++++++++
> > >  drivers/net/pcap/meson.build                       |  41 ++++++++
> > >  examples/helloworld/Makefile                       |  13 +++
> > >  examples/l2fwd/Makefile                            |  13 +++
> > >  lib/librte_acl/meson.build                         |  60
> > > +++++++++++
> > >  lib/librte_bitratestats/meson.build                |  34 ++++++
> > >  lib/librte_cfgfile/meson.build                     |  35 +++++++
> > >  lib/librte_cmdline/meson.build                     |  57
> > > +++++++++++
> > >  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              |  67
> > > ++++++++++++
> > >  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            |  72
> > > +++++++++++++
> > >  lib/librte_eal/linuxapp/igb_uio/Kbuild             |   1 +
> > >  lib/librte_eal/linuxapp/igb_uio/meson.build        |  47 +++++++++
> > >  lib/librte_eal/linuxapp/meson.build                |  42 ++++++++
> > >  lib/librte_eal/meson.build                         |  44 ++++++++
> > >  lib/librte_efd/meson.build                         |  34 ++++++
> > >  lib/librte_ether/meson.build                       |  46 +++++++++
> > >  lib/librte_eventdev/meson.build                    |  36 +++++++
> > >  lib/librte_gro/meson.build                         |  34 ++++++
> > >  lib/librte_hash/meson.build                        |  46 +++++++++
> > >  lib/librte_ip_frag/Makefile                        |   2 +-
> > >  lib/librte_ip_frag/meson.build                     |  39 +++++++
> > >  ..._ipfrag_version.map => rte_ip_frag_version.map} |   0
> > >  lib/librte_jobstats/meson.build                    |  34 ++++++
> > >  lib/librte_kni/meson.build                         |  35 +++++++
> > >  lib/librte_kvargs/meson.build                      |  35 +++++++
> > >  lib/librte_latencystats/meson.build                |  34 ++++++
> > >  lib/librte_lpm/meson.build                         |  35 +++++++
> > >  lib/librte_mbuf/meson.build                        |  36 +++++++
> > >  lib/librte_mempool/meson.build                     |  35 +++++++
> > >  lib/librte_meter/meson.build                       |  34 ++++++
> > >  lib/librte_metrics/meson.build                     |  34 ++++++
> > >  lib/librte_net/meson.build                         |  46 +++++++++
> > >  lib/librte_pdump/meson.build                       |  34 ++++++
> > >  lib/librte_pipeline/meson.build                    |  35 +++++++
> > >  lib/librte_port/meson.build                        |  58
> > > +++++++++++
> > >  lib/librte_power/meson.build                       |  35 +++++++
> > >  lib/librte_reorder/meson.build                     |  34 ++++++
> > >  lib/librte_ring/meson.build                        |  34 ++++++
> > >  lib/librte_sched/meson.build                       |  36 +++++++
> > >  lib/librte_table/meson.build                       |  52
> > > ++++++++++
> > >  lib/librte_timer/meson.build                       |  34 ++++++
> > >  lib/librte_vhost/meson.build                       |  36 +++++++
> > >  lib/meson.build                                    | 105
> > > +++++++++++++++++++
> > >  meson.build                                        |  88
> > > ++++++++++++++++
> > >  meson_options.txt                                  |   8 ++
> > >  usertools/meson.build                              |  32 ++++++
> > >  82 files changed, 3536 insertions(+), 3 deletions(-)
> > >  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
> > >  rename drivers/crypto/null/{rte_pmd_null_crypto_version.map =>
> > > rte_pmd_null_version.map} (100%)
> > >  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/ark/meson.build
> > >  create mode 100644 drivers/net/avp/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/pcap/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
> > >  rename lib/librte_ip_frag/{rte_ipfrag_version.map =>
> > > rte_ip_frag_version.map}
> > > (100%)
> > >  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
> > > 
> 

      parent reply	other threads:[~2017-08-18  8:00 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-14  9:51 [RFCv2 00/40] Building DPDK with meson and ninja Bruce Richardson
2017-08-14  9:51 ` [RFCv2 01/40] build: initial hooks for using meson with DPDK Bruce Richardson
2017-08-14  9:51 ` [RFCv2 02/40] build: create pkg-config file for DPDK Bruce Richardson
2017-08-14  9:51 ` [RFCv2 03/40] build: build linuxapp EAL with meson and ninja Bruce Richardson
2017-08-14  9:51 ` [RFCv2 04/40] build: add EAL support under BSD Bruce Richardson
2017-08-14  9:51 ` [RFCv2 05/40] build: add core libraries to meson build system Bruce Richardson
2017-08-14  9:51 ` [RFCv2 06/40] build: add i40e driver to meson build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 07/40] build: add pmdinfogen to build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 08/40] build: generate list of sources for pmdinfogen Bruce Richardson
2017-08-14  9:51 ` [RFCv2 09/40] build: build i40e driver, including pmdinfo Bruce Richardson
2017-08-14  9:51 ` [RFCv2 10/40] build: install usertools scripts Bruce Richardson
2017-08-14  9:51 ` [RFCv2 11/40] build: simplify generation of pmd.c files Bruce Richardson
2017-08-14  9:51 ` [RFCv2 12/40] build: generalize net driver build to higher level Bruce Richardson
2017-08-14  9:51 ` [RFCv2 13/40] build: remove hard-coded enablement of vector driver Bruce Richardson
2017-08-14  9:51 ` [RFCv2 14/40] build: add ixgbe driver to build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 15/40] build: set up standard deps for drivers Bruce Richardson
2017-08-14  9:51 ` [RFCv2 16/40] build: add af_packet driver to build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 17/40] build: add pcap PMD support Bruce Richardson
2017-08-14  9:51 ` [RFCv2 18/40] build: add symbol version map file support to libs Bruce Richardson
2017-08-14  9:51 ` [RFCv2 19/40] build: build libraries in a loop for brevity Bruce Richardson
2017-08-14  9:51 ` [RFCv2 20/40] build: version library .so files Bruce Richardson
2017-08-14  9:51 ` [RFCv2 21/40] eal: add version information to meson build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 22/40] build: add mempool drivers to build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 23/40] build: add gro library to meson build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 24/40] build: tweak naming of pmd dependencies Bruce Richardson
2017-08-14  9:51 ` [RFCv2 25/40] build: track driver include directories properly Bruce Richardson
2017-08-14  9:51 ` [RFCv2 26/40] metrics: add metrics lib to meson build Bruce Richardson
2017-08-14  9:51 ` [RFCv2 27/40] build: track dependencies recursively Bruce Richardson
2017-08-14  9:51 ` [RFCv2 28/40] testpmd: compile testpmd with meson and ninja Bruce Richardson
2017-08-14  9:51 ` [RFCv2 29/40] crypto/null: rename the version file to standard Bruce Richardson
2017-08-14  9:51 ` [RFCv2 30/40] crypto/qat: remove dependency on ether library Bruce Richardson
2017-08-14  9:51 ` [RFCv2 31/40] build: add cryptodev and some crypto drivers to build Bruce Richardson
2017-08-14  9:52 ` [RFCv2 32/40] igb_uio: add igb_uio to meson build Bruce Richardson
2017-08-14  9:52 ` [RFCv2 33/40] ip_frag: rename version file to standard name Bruce Richardson
2017-08-14  9:52 ` [RFCv2 34/40] build: add most remaining libraries to meson build Bruce Richardson
2017-08-14  9:52 ` [RFCv2 35/40] build: add packet framework libs " Bruce Richardson
2017-08-14  9:52 ` [RFCv2 36/40] acl: add acl library " Bruce Richardson
2017-08-14  9:52 ` [RFCv2 37/40] build: add ark and avp PMDs to build Bruce Richardson
2017-08-14  9:52 ` [RFCv2 38/40] build: fix static library builds with base code Bruce Richardson
2017-08-14  9:52 ` [RFCv2 39/40] build: fix driver dependencies for static builds Bruce Richardson
2017-08-14  9:52 ` [RFCv2 40/40] examples: allow basic sample app build using pkg-config Bruce Richardson
2017-08-15 10:56 ` [RFCv2 00/40] Building DPDK with meson and ninja Luca Boccassi
2017-08-15 11:31   ` Bruce Richardson
2017-08-17 14:10 ` Marco Varlese
2017-08-17 15:25   ` Luca Boccassi
2017-08-18  8:35     ` Bruce Richardson
2017-08-18  8:52       ` Marco Varlese
2017-08-18  9:17         ` Marco Varlese
2017-08-18  9:33       ` Luca Boccassi
     [not found]   ` <1502983469.31476.3.camel@gmail.com>
2017-08-18  8:00     ` Marco Varlese [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1503043201.3032.0.camel@suse.com \
    --to=marco.varlese@suse.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=luca.boccassi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.