From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 88F87F04 for ; Fri, 1 Sep 2017 12:18:06 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Sep 2017 03:18:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,457,1498546800"; d="scan'208";a="306892447" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.223]) by fmsmga004.fm.intel.com with ESMTP; 01 Sep 2017 03:18:03 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Date: Fri, 1 Sep 2017 11:03:59 +0100 Message-Id: <20170901100416.80264-1-bruce.richardson@intel.com> X-Mailer: git-send-email 2.13.5 Subject: [dpdk-dev] [PATCH 00/17] build DPDK libs and some drivers with meson/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, 01 Sep 2017 10:18:07 -0000 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 | 73 +++++++ buildtools/gen-pmdinfo-cfile.sh | 41 ++++ buildtools/meson.build | 34 ++++ buildtools/pmdinfogen/meson.build | 43 +++++ config/meson.build | 69 +++++++ 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 | 128 ++++++++++++ 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 | 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 | 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 | 36 ++++ 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 | 105 ++++++++++ meson.build | 88 +++++++++ meson_options.txt | 9 + usertools/meson.build | 32 +++ 80 files changed, 3794 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 -- 2.13.5