From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.nue.novell.com (smtp.nue.novell.com [195.135.221.5]) by dpdk.org (Postfix) with ESMTP id 1659F7D04 for ; Fri, 18 Aug 2017 10:00:20 +0200 (CEST) Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Fri, 18 Aug 2017 10:00:20 +0200 Received: from linux-yk3w (nwb-a10-snat.microfocus.com [10.120.13.201]) by emea4-mta.ukb.novell.com with ESMTP (TLS encrypted); Fri, 18 Aug 2017 09:00:03 +0100 Message-ID: <1503043201.3032.0.camel@suse.com> From: Marco Varlese To: Luca Boccassi , Bruce Richardson , dev@dpdk.org Date: Fri, 18 Aug 2017 10:00:01 +0200 In-Reply-To: <1502983469.31476.3.camel@gmail.com> References: <20170814095208.166496-1-bruce.richardson@intel.com> <1502979024.15962.10.camel@suse.com> <1502983469.31476.3.camel@gmail.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.20.5 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [RFCv2 00/40] Building DPDK with meson and ninja X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 08:00:21 -0000 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 > > > >