From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by dpdk.org (Postfix) with ESMTP id 9F54A58CB for ; Mon, 27 Aug 2018 14:42:47 +0200 (CEST) Received: by mail-wr1-f65.google.com with SMTP id v16-v6so13490657wro.11 for ; Mon, 27 Aug 2018 05:42:47 -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=PPtf+A7ayBiLDF+zr3AKq+vALV+yWU49TckngpFKWOc=; b=CP3fOiUeu2kWw/KkJm1V774Zx78BezpCvhpgsOKWfBuAPaBzbpqbg8txeDAEjabExT 0dVZrz52AmigDnhxZsR+/tbD6/zC8j590EE/Hf57yl+kervxsCk+NirZ7cpQ87QdV6bo l6rZAthidzTMWdhu+0+q2NIohlLR9Mxmijb8u/wHcWbKEXQDWZtrbmP/vf2DPa4NNAvP M9sa7qnyaBH6ntRZ/WpS1aB0MDn5TJsr7+YWQc2G5gVZ1ctmAQcR6fqkX6wK3YW+PMxu LpQTWrGzR7mjkqL5JzDB3i5cFjJjiDpn4ZGxjncrYP78NT/B7Zylu//BWQdcflk82Ota gPRw== 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=PPtf+A7ayBiLDF+zr3AKq+vALV+yWU49TckngpFKWOc=; b=D33dDL1xEqw6e1KoxWVcA7EMo5Ed/I2I68TJLgdELD/LFQqVnkq6kE3CCnPoT4nf/+ 4uAek+jR8IBMqvtoGVfC5XYvPOvrIoAvw+G7eTxi0qcg9rSEWPPR6a8VmalWs3ka/MAC Qj4CVJxjHwAII/bz6OZz1eN1gYQMXPMSU9LRARIXJKlSmvudQQKMXJ5z18ObfvZaqopr smyqaei/oIBVEmNR7L5EQyFf5N9W321HEO5C6QoRdSG0bzBuCjsWDfvzDLDiUD8WpA8k 3P3om44JGobdPs9OTc6BHNFXVoL8WLsMHuethYEL4NPS/HMHEwLsBeLMVemWTgZlfmsH 0bCA== X-Gm-Message-State: APzg51B/Uo/oAPKeyT6ZY054XNQeuHHNFps9O5hUyyVGSZHKHRz6aJQr eEZKjJ+YJOY8Skmnq50SvMPTUekARusA X-Google-Smtp-Source: ANB0VdbpOAJr/4GkFOUKYwUjkSlaWVXWLfA9WZ4+SxTXRFWBEL5lJh2NoyMc2bKdH1k2FV6hdxytHA== X-Received: by 2002:adf:9b11:: with SMTP id b17-v6mr9088478wrc.119.1535373766727; Mon, 27 Aug 2018 05:42:46 -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 d10-v6sm26542789wrv.70.2018.08.27.05.42.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Aug 2018 05:42:46 -0700 (PDT) From: Nelio Laranjeiro To: dev@dpdk.org, Yongseok Koh , Shahaf Shuler , Matan Azrad , Bruce Richardson Date: Mon, 27 Aug 2018 14:42:25 +0200 Message-Id: <85a2b398fecdf917dc22810ea0974a91ccca1d13.1535373640.git.nelio.laranjeiro@6wind.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2] 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 12:42:47 -0000 Mellanox drivers remains un-compiled by default due to third party libraries dependencies. They can be enabled through: - enable_driver_mlx{4,5}=true or - enable_driver_mlx{4,5}_glue=true depending on the needs. To avoid modifying the whole sources and keep the compatibility with current build systems (e.g. make), 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. Meson will try to find the required external libraries. When they are not installed system wide, they can be provided though CFLAGS, LDFLAGS and LD_LIBRARY_PATH environment variables, example (considering RDMA-Core is installed in /tmp/rdma-core): # CLFAGS=-I/tmp/rdma-core/build/include \ LDFLAGS=-L/tmp/rdma-core/build/lib \ LD_LIBRARY_PATH=/tmp/rdma-core/build/lib \ meson -Denable_driver_mlx4=true output # CLFAGS=-I/tmp/rdma-core/build/include \ LDFLAGS=-L/tmp/rdma-core/build/lib \ LD_LIBRARY_PATH=/tmp/rdma-core/build/lib \ ninja -C output install Signed-off-by: Nelio Laranjeiro --- Changes in v2: - dropped patch https://patches.dpdk.org/patch/43897/ - remove extra_{cflags,ldflags} as already honored by meson through environment variables. --- drivers/net/meson.build | 2 + drivers/net/mlx4/meson.build | 94 ++++++ drivers/net/mlx5/meson.build | 545 +++++++++++++++++++++++++++++++++++ meson_options.txt | 8 + 4 files changed, 649 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..debaca5b6 --- /dev/null +++ b/drivers/net/mlx4/meson.build @@ -0,0 +1,94 @@ +# 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'), + cc.find_library('mlx4'), + cc.find_library('ibverbs'), + ] + 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, + link_args: [ + '-Wl,-export-dynamic', + '-Wl,-h,@0@'.format(LIB_GLUE), + '-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..b918ca437 --- /dev/null +++ b/drivers/net/mlx5/meson.build @@ -0,0 +1,545 @@ +# 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'), + cc.find_library('mlx5'), + cc.find_library('ibverbs'), + ] + 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, + link_args: [ + '-Wl,-export-dynamic', + '-Wl,-h,@0@'.format(LIB_GLUE), + '-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 c84327858..a1ae0cabc 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -22,3 +22,11 @@ option('use_hpet', type: 'boolean', value: false, description: 'use HPET timer in EAL') option('tests', type: 'boolean', value: true, description: 'build unit tests') +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