From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id A1EDC4F94 for ; Mon, 27 Aug 2018 13:11:20 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id n2-v6so13221276wrw.7 for ; Mon, 27 Aug 2018 04:11:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=IL+S86DdrNjM0sAGFzFktXwTucgRc/Zf6aeV7Mnc/Xk=; b=eF5OOzotIyTG5hbTKDMCcoehYOvxSQEBu1KGBmHWO8i8gq46KUROSw1tg4yHjn5sMv l2PK2GCMmaPOgg0mp8X21JpATInnIiPv4yCzkDFzDT1MeqLQZYVHSkE+ZcflMBqWRyO2 mGSCS7bKawZyX7edFOeW3GwS9GVQgh8EAasHgxVYQ6M6DUDKWQpLMpJ+6AyFmeHBzS1z owFH+gHHkHgS8S+Dsf0cNUEzX+d5EcVJTKFS2sAmj3QYN7ChuC8SReRSm3en7FZEORRW ej2cZWh0kfzdjY/YVQ9ykTPWYGSm11sHA+vah+e2dh9diH7+ELk5TJh7NkPJ6bJxIYcW EY3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=IL+S86DdrNjM0sAGFzFktXwTucgRc/Zf6aeV7Mnc/Xk=; b=PVoaZsv2y8wP2II9ia5jB1pf3TnZ9jrYTa+ujOPBWDdWK1JtfZhlYlmPxTgHUQRytX j1ndBKjnvduddwey3df1cIFA1b1dTyjShcfCCMbDYofe0N2WdCJhe4sbxc62yHcy26JH F/1W3pOjNbdWGTR72R2PbbzDbp72g4nutDJW7uqd0VeRr+kI5V8MvUD9SV1Exsih5bO8 XadR+fWpy/oW62Oy2em7mVb59YxkVigH7wgJFHSf3IA6H/gJjWSKTgN33tPU/C6KzeR3 OPotfh9NRCJ/nhsdM4JXpRXObVlpMsLaCXTfikXTMcoioxuAhbqyCLs5OcIZOLzvBQvA uIbQ== X-Gm-Message-State: APzg51CZdVp/mIgw89V9yDwBvFBL4OkJyqiQ+gKUAC9+Fa3n5A4qk2gL doxO8Q0VMOI8QQaxT1gFjnvojFuZmcZ9 X-Google-Smtp-Source: ANB0VdY8/Yx0a91MOf3nsfsVODID1grvPaXgXbHIgbAKv5fnnOO3ajePj0ztcN+BSV3Ol7LeZu981g== X-Received: by 2002:adf:f112:: with SMTP id r18-v6mr8292492wro.29.1535368279706; Mon, 27 Aug 2018 04:11:19 -0700 (PDT) Received: from laranjeiro-vm.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id l18-v6sm29261277wru.75.2018.08.27.04.11.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Aug 2018 04:11:19 -0700 (PDT) From: Nelio Laranjeiro To: dev@dpdk.org, Yongseok Koh , Shahaf Shuler , Bruce Richardson Date: Mon, 27 Aug 2018 13:10:53 +0200 Message-Id: X-Mailer: git-send-email 2.18.0 In-Reply-To: <7812af2267017898332783e934bef9478814ae96.1535361299.git.nelio.laranjeiro@6wind.com> References: <7812af2267017898332783e934bef9478814ae96.1535361299.git.nelio.laranjeiro@6wind.com> Subject: [dpdk-dev] [PATCH 2/2] net/mlx: add meson build support 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: Mon, 27 Aug 2018 11:11:21 -0000 Adds a configuration item to enable those drivers and also to configure it in 'glue mode'. Option driver_mlx{4,5}_glue_enable will enable its compilation with the creation for the librte_pmd_mlx{4,5}_glue.so.xx.yy.z library whereas driver_mlx5_enable will configure the compilation without this glue library. driver_mlx{4,5}_glue_enable overrides driver_mlx{4,5}_enable meson's option. To avoid modifying the whole sources and keep the compatibility with current build systems, the mlx{4,5}_autoconf.h is still generated by invoking DPDK scripts though meson's run_command() instead of using has_types, has_members, ... commands. Signed-off-by: Nelio Laranjeiro --- drivers/net/meson.build | 2 + drivers/net/mlx4/meson.build | 109 +++++++ drivers/net/mlx5/meson.build | 561 +++++++++++++++++++++++++++++++++++ meson_options.txt | 8 + 4 files changed, 680 insertions(+) create mode 100644 drivers/net/mlx4/meson.build create mode 100644 drivers/net/mlx5/meson.build diff --git a/drivers/net/meson.build b/drivers/net/meson.build index 9c28ed4da..c7a2d0e7d 100644 --- a/drivers/net/meson.build +++ b/drivers/net/meson.build @@ -18,6 +18,8 @@ drivers = ['af_packet', 'ixgbe', 'kni', 'liquidio', + 'mlx4', + 'mlx5', 'mvpp2', 'netvsc', 'nfp', diff --git a/drivers/net/mlx4/meson.build b/drivers/net/mlx4/meson.build new file mode 100644 index 000000000..ccaf03433 --- /dev/null +++ b/drivers/net/mlx4/meson.build @@ -0,0 +1,109 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2018 6WIND S.A. +# Copyright 2018 Mellanox Technologies, Ltd + +# As there is no more configuration file to activate/configure the PMD it will +# use some variables here to configure it. +pmd_dlopen = get_option('enable_driver_mlx4_glue') +build = get_option('enable_driver_mlx4') or pmd_dlopen +# dpdk_conf.set('RTE_LIBRTE_MLX4_DEBUG', 1) +# Glue configuratin +LIB_GLUE_BASE = 'librte_pmd_mlx4_glue.so' +LIB_GLUE_VERSION = '18.02.0' +LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION +if pmd_dlopen + dpdk_conf.set('RTE_LIBRTE_MLX4_DLOPEN_DEPS', 1) + cflags += [ + '-DMLX4_GLUE="@0@"'.format(LIB_GLUE), + '-DMLX4_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION), + '-ldl', + ] +endif +# Compile PMD +if build + allow_experimental_apis = true + ext_deps += [ cc.find_library('mnl') ] + # Search for ibverbs and mlx4 library. + # note: meson find_library accept directories arrays but they must be + # stripped i.e. no extra space. + flags = get_option('extra_ldflags') + libs_dir = [] + foreach flag:flags.split('-L') + flag = flag.strip() + if flag != '' + libs_dir += [ flag.strip() ] + endif + endforeach + foreach libname:['ibverbs', 'mlx4'] + lib = cc.find_library(libname, dirs:libs_dir, required:false) + if not lib.found() + lib = cc.find_library(libname, required:true) + endif + ext_deps += [ lib ] + endforeach + sources = files( + 'mlx4.c', + 'mlx4_ethdev.c', + 'mlx4_flow.c', + 'mlx4_intr.c', + 'mlx4_mr.c', + 'mlx4_rxq.c', + 'mlx4_rxtx.c', + 'mlx4_txq.c', + 'mlx4_utils.c', + ) + if not pmd_dlopen + sources += files('mlx4_glue.c') + endif + cflags += [ + '-O3', + '-Wall', + '-Wextra', + '-g', + '-std=c11', + '-I.', + '-D_BSD_SOURCE', + '-D_DEFAULT_SOURCE', + '-D_XOPEN_SOURCE=600', + '-Wno-strict-prototypes', + ] + if dpdk_conf.has('RTE_LIBRTE_MLX4_DEBUG') + cflags += [ '-pedantic', '-UNDEBUG', '-DPEDANTIC' ] + else + cflags += [ '-DNDEBUG', '-UPEDANTIC' ] + endif + # To maintain the compatibility with the make build system + # mlx4_autoconf.h file is still generated. + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx4_autoconf.h', + 'HAVE_IBV_MLX4_WQE_LSO_SEG', + 'infiniband/mlx4dv.h', + 'type', 'struct mlx4_wqe_lso_seg') + if r.returncode() != 0 + error('autoconfiguration fail') + endif +endif +# Build Glue Library +if pmd_dlopen + dlopen_name = 'mlx4_glue' + dlopen_lib_name = driver_name_fmt.format(dlopen_name) + dlopen_so_version = LIB_GLUE_VERSION + dlopen_sources = files('mlx4_glue.c') + dlopen_install_dir = [ eal_pmd_path + '-glue' ] + shared_lib = shared_library( + dlopen_lib_name, + dlopen_sources, + include_directories: global_inc, + c_args: cflags + [ get_option('extra_cflags') ], + link_args: [ + '-Wl,-export-dynamic', + '-Wl,-h,@0@'.format(LIB_GLUE), + flags, + '-lmlx4', + '-libverbs', + ], + soversion: dlopen_so_version, + install: true, + install_dir: dlopen_install_dir, + ) +endif diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build new file mode 100644 index 000000000..1124aab48 --- /dev/null +++ b/drivers/net/mlx5/meson.build @@ -0,0 +1,561 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2018 6WIND S.A. +# Copyright 2018 Mellanox Technologies, Ltd + +# As there is no more configuration file to activate/configure the PMD it will +# use some variables here to configure it. +pmd_dlopen = get_option('enable_driver_mlx5_glue') +build = get_option('enable_driver_mlx5') or pmd_dlopen +# dpdk_conf.set('RTE_LIBRTE_MLX5_DEBUG', 1) +# Glue configuratin +LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so' +LIB_GLUE_VERSION = '18.05.0' +LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION +if pmd_dlopen + dpdk_conf.set('RTE_LIBRTE_MLX5_DLOPEN_DEPS', 1) + cflags += [ + '-DMLX5_GLUE="@0@"'.format(LIB_GLUE), + '-DMLX5_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION), + '-ldl', + ] +endif +# Compile PMD +if build + allow_experimental_apis = true + ext_deps += [ cc.find_library('mnl') ] + # Search for ibverbs and mlx5 library. + # note: meson find_library accept directories arrays but they must be + # stripped i.e. no extra space. + flags = get_option('extra_ldflags') + libs_dir = [] + foreach flag:flags.split('-L') + flag = flag.strip() + if flag != '' + libs_dir += [ flag.strip() ] + endif + endforeach + foreach libname:['ibverbs', 'mlx5'] + lib = cc.find_library(libname, dirs:libs_dir, required:false) + if not lib.found() + lib = cc.find_library(libname, required:true) + endif + ext_deps += [ lib ] + endforeach + ext_deps += [ lib ] + sources = files( + 'mlx5.c', + 'mlx5_ethdev.c', + 'mlx5_flow.c', + 'mlx5_mac.c', + 'mlx5_mr.c', + 'mlx5_nl.c', + 'mlx5_nl_flow.c', + 'mlx5_rss.c', + 'mlx5_rxmode.c', + 'mlx5_rxq.c', + 'mlx5_rxtx.c', + 'mlx5_socket.c', + 'mlx5_stats.c', + 'mlx5_trigger.c', + 'mlx5_txq.c', + 'mlx5_vlan.c', + ) + if dpdk_conf.has('RTE_ARCH_X86_64') or dpdk_conf.has('RTE_ARCH_ARM64') + sources += files('mlx5_rxtx_vec.c') + endif + if not pmd_dlopen + sources += files('mlx5_glue.c') + endif + cflags += [ + '-O3', + '-Wall', + '-Wextra', + '-g', + '-std=c11', + '-I.', + '-D_BSD_SOURCE', + '-D_DEFAULT_SOURCE', + '-D_XOPEN_SOURCE=600', + '-Wno-strict-prototypes', + ] + if dpdk_conf.has('RTE_LIBRTE_MLX5_DEBUG') + cflags += [ '-pedantic', '-UNDEBUG', '-DPEDANTIC' ] + else + cflags += [ '-DNDEBUG', '-UPEDANTIC' ] + endif + # To maintain the compatibility with the make build system + # mlx5_autoconf.h file is still generated. + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT', + 'infiniband/mlx5dv.h', + 'enum', 'MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_DEVICE_TUNNEL_SUPPORT', + 'infiniband/mlx5dv.h', + 'enum', 'MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_DEVICE_MPLS_SUPPORT', + 'infiniband/verbs.h', + 'enum', 'IBV_FLOW_SPEC_MPLS') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_WQ_FLAG_RX_END_PADDING', + 'infiniband/verbs.h', + 'enum', 'IBV_WQ_FLAG_RX_END_PADDING') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_MLX5_MOD_SWP', + 'infiniband/mlx5dv.h', + 'type', 'struct mlx5dv_sw_parsing_caps') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_MLX5_MOD_MPW', + 'infiniband/mlx5dv.h', + 'enum', 'MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_MLX5_MOD_CQE_128B_COMP', + 'infiniband/mlx5dv.h', + 'enum', 'MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_ETHTOOL_LINK_MODE_25G', + '/usr/include/linux/ethtool.h', + 'enum', 'ETHTOOL_LINK_MODE_25000baseCR_Full_BIT') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_ETHTOOL_LINK_MODE_50G', + '/usr/include/linux/ethtool.h', + 'enum', 'ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_ETHTOOL_LINK_MODE_100G', + '/usr/include/linux/ethtool.h', + 'enum', 'ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IBV_DEVICE_COUNTERS_SET_SUPPORT', + 'infiniband/verbs.h', + 'type', 'struct ibv_counter_set_init_attr') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NL_NLDEV', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NL_NLDEV') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_CMD_GET', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_CMD_GET') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_CMD_PORT_GET', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_CMD_PORT_GET') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_ATTR_DEV_INDEX', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_ATTR_DEV_INDEX') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_ATTR_DEV_NAME', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_ATTR_DEV_NAME') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_ATTR_PORT_INDEX', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_ATTR_PORT_INDEX') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_RDMA_NLDEV_ATTR_NDEV_INDEX', + 'rdma/rdma_netlink.h', + 'enum', 'RDMA_NLDEV_ATTR_NDEV_INDEX') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IFLA_PHYS_SWITCH_ID', + 'linux/if_link.h', + 'enum', 'IFLA_PHYS_SWITCH_ID') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_IFLA_PHYS_PORT_NAME', + 'linux/if_link.h', + 'enum', 'IFLA_PHYS_PORT_NAME') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_ACT', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_ACT') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_FLAGS', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_FLAGS') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_ETH_TYPE', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_ETH_TYPE') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_ETH_DST', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_ETH_DST') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_ETH_DST_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_ETH_DST_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_ETH_SRC', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_ETH_SRC') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_ETH_SRC_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_ETH_SRC_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IP_PROTO', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IP_PROTO') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV4_SRC', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV4_SRC') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV4_SRC_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV4_SRC_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV4_DST', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV4_DST') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV4_DST_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV4_DST_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV6_SRC', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV6_SRC') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV6_SRC_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV6_SRC_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV6_DST', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV6_DST') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_IPV6_DST_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_IPV6_DST_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_TCP_SRC', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_TCP_SRC') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_TCP_SRC_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_TCP_SRC_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_TCP_DST', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_TCP_DST') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_TCP_DST_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_TCP_DST_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_UDP_SRC', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_UDP_SRC') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_UDP_SRC_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_UDP_SRC_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_UDP_DST', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_UDP_DST') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_UDP_DST_MASK', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_UDP_DST_MASK') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_VLAN_ID', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_VLAN_ID') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_VLAN_PRIO', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_VLAN_PRIO') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TCA_FLOWER_KEY_VLAN_ETH_TYPE', + 'linux/pkt_cls.h', + 'enum', 'TCA_FLOWER_KEY_VLAN_ETH_TYPE') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_TC_ACT_VLAN', + 'linux/tc_act/tc_vlan.h', + 'enum', 'TCA_VLAN_PUSH_VLAN_PRIORITY') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_40000baseKR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_40000baseKR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_40000baseCR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_40000baseCR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_40000baseSR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_40000baseSR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_40000baseLR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_40000baseLR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_56000baseKR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_56000baseKR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_56000baseCR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_56000baseCR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_56000baseSR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_56000baseSR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif + r = run_command('sh', '../../../buildtools/auto-config-h.sh', + 'mlx5_autoconf.h', + 'HAVE_SUPPORTED_56000baseLR4_Full', + '/usr/include/linux/ethtool.h', + 'define', 'SUPPORTED_56000baseLR4_Full') + if r.returncode() != 0 + error('autoconfiguration fail') + endif +endif +# Build Glue Library +if pmd_dlopen + dlopen_name = 'mlx5_glue' + dlopen_lib_name = driver_name_fmt.format(dlopen_name) + dlopen_so_version = LIB_GLUE_VERSION + dlopen_sources = files('mlx5_glue.c') + dlopen_install_dir = [ eal_pmd_path + '-glue' ] + shared_lib = shared_library( + dlopen_lib_name, + dlopen_sources, + include_directories: global_inc, + c_args: cflags + [ get_option('extra_cflags') ], + link_args: [ + '-Wl,-export-dynamic', + '-Wl,-h,@0@'.format(LIB_GLUE), + flags, + '-lmlx5', + '-libverbs', + ], + soversion: dlopen_so_version, + install: true, + install_dir: dlopen_install_dir, + ) +endif diff --git a/meson_options.txt b/meson_options.txt index da6373a2c..c75108e05 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -24,3 +24,11 @@ option('tests', type: 'boolean', value: true, description: 'build unit tests') option('extra_cflags', type: 'string', description: 'Extra compiler flags') option('extra_ldflags', type: 'string', description: 'Extra linker flags') +option('enable_driver_mlx5', type: 'boolean', value: false, + description: 'Enable Mellanox PMD for ConnectX-4/5 NIC') +option('enable_driver_mlx5_glue', type: 'boolean', value: false, + description: 'Enable Mellanox PMD for ConnectX-4/5 NIC glue library') +option('enable_driver_mlx4', type: 'boolean', value: false, + description: 'Enable Mellanox PMD for ConnectX-3 NIC') +option('enable_driver_mlx4_glue', type: 'boolean', value: false, + description: 'Enable Mellanox PMD for ConnectX-3 NIC glue library') -- 2.18.0