config: gather options for dlopen mlx dependency
[dpdk.git] / drivers / net / mlx5 / Makefile
1 #   SPDX-License-Identifier: BSD-3-Clause
2 #   Copyright 2015 6WIND S.A.
3 #   Copyright 2015 Mellanox Technologies, Ltd
4
5 include $(RTE_SDK)/mk/rte.vars.mk
6
7 # Library name.
8 LIB = librte_pmd_mlx5.a
9 LIB_GLUE = $(LIB_GLUE_BASE).$(LIB_GLUE_VERSION)
10 LIB_GLUE_BASE = librte_pmd_mlx5_glue.so
11 LIB_GLUE_VERSION = 19.02.0
12
13 # Sources.
14 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5.c
15 ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
16 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_glue.c
17 endif
18 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rxq.c
19 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_txq.c
20 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rxtx.c
21 ifneq ($(filter y,$(CONFIG_RTE_ARCH_X86_64) \
22                   $(CONFIG_RTE_ARCH_ARM64)),)
23 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rxtx_vec.c
24 endif
25 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_trigger.c
26 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_ethdev.c
27 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_mac.c
28 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rxmode.c
29 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_vlan.c
30 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_stats.c
31 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_rss.c
32 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_mr.c
33 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow.c
34 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow_dv.c
35 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow_tcf.c
36 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_flow_verbs.c
37 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_socket.c
38 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_nl.c
39 SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += mlx5_devx_cmds.c
40
41 ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
42 INSTALL-$(CONFIG_RTE_LIBRTE_MLX5_PMD)-lib += $(LIB_GLUE)
43 endif
44
45 # Basic CFLAGS.
46 CFLAGS += -O3
47 CFLAGS += -std=c11 -Wall -Wextra
48 CFLAGS += -g
49 CFLAGS += -I.
50 CFLAGS += -D_BSD_SOURCE
51 CFLAGS += -D_DEFAULT_SOURCE
52 CFLAGS += -D_XOPEN_SOURCE=600
53 CFLAGS += $(WERROR_FLAGS)
54 CFLAGS += -Wno-strict-prototypes
55 CFLAGS += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --cflags libmnl)
56 ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
57 CFLAGS += -DMLX5_GLUE='"$(LIB_GLUE)"'
58 CFLAGS += -DMLX5_GLUE_VERSION='"$(LIB_GLUE_VERSION)"'
59 CFLAGS_mlx5_glue.o += -fPIC
60 LDLIBS += -ldl
61 else
62 LDLIBS += -libverbs -lmlx5
63 endif
64 LDLIBS += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --libs libmnl || echo "-lmnl")
65 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
66 LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
67 LDLIBS += -lrte_bus_pci
68
69 # A few warnings cannot be avoided in external headers.
70 CFLAGS += -Wno-error=cast-qual
71
72 EXPORT_MAP := rte_pmd_mlx5_version.map
73 LIBABIVER := 1
74
75 # memseg walk is not part of stable API
76 CFLAGS += -DALLOW_EXPERIMENTAL_API
77
78 # DEBUG which is usually provided on the command-line may enable
79 # CONFIG_RTE_LIBRTE_MLX5_DEBUG.
80 ifeq ($(DEBUG),1)
81 CONFIG_RTE_LIBRTE_MLX5_DEBUG := y
82 endif
83
84 # User-defined CFLAGS.
85 ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y)
86 CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
87 else
88 CFLAGS += -DNDEBUG -UPEDANTIC
89 endif
90
91 include $(RTE_SDK)/mk/rte.lib.mk
92
93 # Generate and clean-up mlx5_autoconf.h.
94
95 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
96 export AUTO_CONFIG_CFLAGS = -Wno-error
97
98 ifndef V
99 AUTOCONF_OUTPUT := >/dev/null
100 endif
101
102 mlx5_autoconf.h.new: FORCE
103
104 mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
105         $Q $(RM) -f -- '$@'
106         $Q sh -- '$<' '$@' \
107                 HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT \
108                 infiniband/mlx5dv.h \
109                 enum MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX \
110                 $(AUTOCONF_OUTPUT)
111         $Q sh -- '$<' '$@' \
112                 HAVE_IBV_DEVICE_TUNNEL_SUPPORT \
113                 infiniband/mlx5dv.h \
114                 enum MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS \
115                 $(AUTOCONF_OUTPUT)
116         $Q sh -- '$<' '$@' \
117                 HAVE_IBV_DEVICE_MPLS_SUPPORT \
118                 infiniband/verbs.h \
119                 enum IBV_FLOW_SPEC_MPLS \
120                 $(AUTOCONF_OUTPUT)
121         $Q sh -- '$<' '$@' \
122                 HAVE_IBV_WQ_FLAG_RX_END_PADDING \
123                 infiniband/verbs.h \
124                 enum IBV_WQ_FLAG_RX_END_PADDING \
125                 $(AUTOCONF_OUTPUT)
126         $Q sh -- '$<' '$@' \
127                 HAVE_IBV_MLX5_MOD_SWP \
128                 infiniband/mlx5dv.h \
129                 type 'struct mlx5dv_sw_parsing_caps' \
130                 $(AUTOCONF_OUTPUT)
131         $Q sh -- '$<' '$@' \
132                 HAVE_IBV_MLX5_MOD_MPW \
133                 infiniband/mlx5dv.h \
134                 enum MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED \
135                 $(AUTOCONF_OUTPUT)
136         $Q sh -- '$<' '$@' \
137                 HAVE_IBV_MLX5_MOD_CQE_128B_COMP \
138                 infiniband/mlx5dv.h \
139                 enum MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP \
140                 $(AUTOCONF_OUTPUT)
141         $Q sh -- '$<' '$@' \
142                 HAVE_IBV_MLX5_MOD_CQE_128B_PAD \
143                 infiniband/mlx5dv.h \
144                 enum MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD \
145                 $(AUTOCONF_OUTPUT)
146         $Q sh -- '$<' '$@' \
147                 HAVE_IBV_FLOW_DV_SUPPORT \
148                 infiniband/mlx5dv.h \
149                 func mlx5dv_create_flow_action_packet_reformat \
150                 $(AUTOCONF_OUTPUT)
151         $Q sh -- '$<' '$@' \
152                 HAVE_IBV_DEVX_OBJ \
153                 infiniband/mlx5dv.h \
154                 func mlx5dv_devx_obj_create \
155                 $(AUTOCONF_OUTPUT)
156         $Q sh -- '$<' '$@' \
157                 HAVE_IBV_FLOW_DEVX_COUNTERS \
158                 infiniband/mlx5dv.h \
159                 enum MLX5DV_FLOW_ACTION_COUNTER_DEVX \
160                 $(AUTOCONF_OUTPUT)
161         $Q sh -- '$<' '$@' \
162                 HAVE_ETHTOOL_LINK_MODE_25G \
163                 /usr/include/linux/ethtool.h \
164                 enum ETHTOOL_LINK_MODE_25000baseCR_Full_BIT \
165                 $(AUTOCONF_OUTPUT)
166         $Q sh -- '$<' '$@' \
167                 HAVE_ETHTOOL_LINK_MODE_50G \
168                 /usr/include/linux/ethtool.h \
169                 enum ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT \
170                 $(AUTOCONF_OUTPUT)
171         $Q sh -- '$<' '$@' \
172                 HAVE_ETHTOOL_LINK_MODE_100G \
173                 /usr/include/linux/ethtool.h \
174                 enum ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT \
175                 $(AUTOCONF_OUTPUT)
176         $Q sh -- '$<' '$@' \
177                 HAVE_IBV_DEVICE_COUNTERS_SET_V42 \
178                 infiniband/verbs.h \
179                 type 'struct ibv_counter_set_init_attr' \
180                 $(AUTOCONF_OUTPUT)
181         $Q sh -- '$<' '$@' \
182                 HAVE_IBV_DEVICE_COUNTERS_SET_V45 \
183                 infiniband/verbs.h \
184                 type 'struct ibv_counters_init_attr' \
185                 $(AUTOCONF_OUTPUT)
186         $Q sh -- '$<' '$@' \
187                 HAVE_RDMA_NL_NLDEV \
188                 rdma/rdma_netlink.h \
189                 enum RDMA_NL_NLDEV \
190                 $(AUTOCONF_OUTPUT)
191         $Q sh -- '$<' '$@' \
192                 HAVE_RDMA_NLDEV_CMD_GET \
193                 rdma/rdma_netlink.h \
194                 enum RDMA_NLDEV_CMD_GET \
195                 $(AUTOCONF_OUTPUT)
196         $Q sh -- '$<' '$@' \
197                 HAVE_RDMA_NLDEV_CMD_PORT_GET \
198                 rdma/rdma_netlink.h \
199                 enum RDMA_NLDEV_CMD_PORT_GET \
200                 $(AUTOCONF_OUTPUT)
201         $Q sh -- '$<' '$@' \
202                 HAVE_RDMA_NLDEV_ATTR_DEV_INDEX \
203                 rdma/rdma_netlink.h \
204                 enum RDMA_NLDEV_ATTR_DEV_INDEX \
205                 $(AUTOCONF_OUTPUT)
206         $Q sh -- '$<' '$@' \
207                 HAVE_RDMA_NLDEV_ATTR_DEV_NAME \
208                 rdma/rdma_netlink.h \
209                 enum RDMA_NLDEV_ATTR_DEV_NAME \
210                 $(AUTOCONF_OUTPUT)
211         $Q sh -- '$<' '$@' \
212                 HAVE_RDMA_NLDEV_ATTR_PORT_INDEX \
213                 rdma/rdma_netlink.h \
214                 enum RDMA_NLDEV_ATTR_PORT_INDEX \
215                 $(AUTOCONF_OUTPUT)
216         $Q sh -- '$<' '$@' \
217                 HAVE_RDMA_NLDEV_ATTR_NDEV_INDEX \
218                 rdma/rdma_netlink.h \
219                 enum RDMA_NLDEV_ATTR_NDEV_INDEX \
220                 $(AUTOCONF_OUTPUT)
221         $Q sh -- '$<' '$@' \
222                 HAVE_IFLA_PHYS_SWITCH_ID \
223                 linux/if_link.h \
224                 enum IFLA_PHYS_SWITCH_ID \
225                 $(AUTOCONF_OUTPUT)
226         $Q sh -- '$<' '$@' \
227                 HAVE_IFLA_PHYS_PORT_NAME \
228                 linux/if_link.h \
229                 enum IFLA_PHYS_PORT_NAME \
230                 $(AUTOCONF_OUTPUT)
231         $Q sh -- '$<' '$@' \
232                 HAVE_IFLA_VXLAN_COLLECT_METADATA \
233                 linux/if_link.h \
234                 enum IFLA_VXLAN_COLLECT_METADATA \
235                 $(AUTOCONF_OUTPUT)
236         $Q sh -- '$<' '$@' \
237                 HAVE_TCA_CHAIN \
238                 linux/rtnetlink.h \
239                 enum TCA_CHAIN \
240                 $(AUTOCONF_OUTPUT)
241         $Q sh -- '$<' '$@' \
242                 HAVE_TCA_FLOWER_ACT \
243                 linux/pkt_cls.h \
244                 enum TCA_FLOWER_ACT \
245                 $(AUTOCONF_OUTPUT)
246         $Q sh -- '$<' '$@' \
247                 HAVE_TCA_FLOWER_FLAGS \
248                 linux/pkt_cls.h \
249                 enum TCA_FLOWER_FLAGS \
250                 $(AUTOCONF_OUTPUT)
251         $Q sh -- '$<' '$@' \
252                 HAVE_TCA_FLOWER_KEY_ETH_TYPE \
253                 linux/pkt_cls.h \
254                 enum TCA_FLOWER_KEY_ETH_TYPE \
255                 $(AUTOCONF_OUTPUT)
256         $Q sh -- '$<' '$@' \
257                 HAVE_TCA_FLOWER_KEY_ETH_DST \
258                 linux/pkt_cls.h \
259                 enum TCA_FLOWER_KEY_ETH_DST \
260                 $(AUTOCONF_OUTPUT)
261         $Q sh -- '$<' '$@' \
262                 HAVE_TCA_FLOWER_KEY_ETH_DST_MASK \
263                 linux/pkt_cls.h \
264                 enum TCA_FLOWER_KEY_ETH_DST_MASK \
265                 $(AUTOCONF_OUTPUT)
266         $Q sh -- '$<' '$@' \
267                 HAVE_TCA_FLOWER_KEY_ETH_SRC \
268                 linux/pkt_cls.h \
269                 enum TCA_FLOWER_KEY_ETH_SRC \
270                 $(AUTOCONF_OUTPUT)
271         $Q sh -- '$<' '$@' \
272                 HAVE_TCA_FLOWER_KEY_ETH_SRC_MASK \
273                 linux/pkt_cls.h \
274                 enum TCA_FLOWER_KEY_ETH_SRC_MASK \
275                 $(AUTOCONF_OUTPUT)
276         $Q sh -- '$<' '$@' \
277                 HAVE_TCA_FLOWER_KEY_IP_PROTO \
278                 linux/pkt_cls.h \
279                 enum TCA_FLOWER_KEY_IP_PROTO \
280                 $(AUTOCONF_OUTPUT)
281         $Q sh -- '$<' '$@' \
282                 HAVE_TCA_FLOWER_KEY_IPV4_SRC \
283                 linux/pkt_cls.h \
284                 enum TCA_FLOWER_KEY_IPV4_SRC \
285                 $(AUTOCONF_OUTPUT)
286         $Q sh -- '$<' '$@' \
287                 HAVE_TCA_FLOWER_KEY_IPV4_SRC_MASK \
288                 linux/pkt_cls.h \
289                 enum TCA_FLOWER_KEY_IPV4_SRC_MASK \
290                 $(AUTOCONF_OUTPUT)
291         $Q sh -- '$<' '$@' \
292                 HAVE_TCA_FLOWER_KEY_IPV4_DST \
293                 linux/pkt_cls.h \
294                 enum TCA_FLOWER_KEY_IPV4_DST \
295                 $(AUTOCONF_OUTPUT)
296         $Q sh -- '$<' '$@' \
297                 HAVE_TCA_FLOWER_KEY_IPV4_DST_MASK \
298                 linux/pkt_cls.h \
299                 enum TCA_FLOWER_KEY_IPV4_DST_MASK \
300                 $(AUTOCONF_OUTPUT)
301         $Q sh -- '$<' '$@' \
302                 HAVE_TCA_FLOWER_KEY_IPV6_SRC \
303                 linux/pkt_cls.h \
304                 enum TCA_FLOWER_KEY_IPV6_SRC \
305                 $(AUTOCONF_OUTPUT)
306         $Q sh -- '$<' '$@' \
307                 HAVE_TCA_FLOWER_KEY_IPV6_SRC_MASK \
308                 linux/pkt_cls.h \
309                 enum TCA_FLOWER_KEY_IPV6_SRC_MASK \
310                 $(AUTOCONF_OUTPUT)
311         $Q sh -- '$<' '$@' \
312                 HAVE_TCA_FLOWER_KEY_IPV6_DST \
313                 linux/pkt_cls.h \
314                 enum TCA_FLOWER_KEY_IPV6_DST \
315                 $(AUTOCONF_OUTPUT)
316         $Q sh -- '$<' '$@' \
317                 HAVE_TCA_FLOWER_KEY_IPV6_DST_MASK \
318                 linux/pkt_cls.h \
319                 enum TCA_FLOWER_KEY_IPV6_DST_MASK \
320                 $(AUTOCONF_OUTPUT)
321         $Q sh -- '$<' '$@' \
322                 HAVE_TCA_FLOWER_KEY_TCP_SRC \
323                 linux/pkt_cls.h \
324                 enum TCA_FLOWER_KEY_TCP_SRC \
325                 $(AUTOCONF_OUTPUT)
326         $Q sh -- '$<' '$@' \
327                 HAVE_TCA_FLOWER_KEY_TCP_SRC_MASK \
328                 linux/pkt_cls.h \
329                 enum TCA_FLOWER_KEY_TCP_SRC_MASK \
330                 $(AUTOCONF_OUTPUT)
331         $Q sh -- '$<' '$@' \
332                 HAVE_TCA_FLOWER_KEY_TCP_DST \
333                 linux/pkt_cls.h \
334                 enum TCA_FLOWER_KEY_TCP_DST \
335                 $(AUTOCONF_OUTPUT)
336         $Q sh -- '$<' '$@' \
337                 HAVE_TCA_FLOWER_KEY_TCP_DST_MASK \
338                 linux/pkt_cls.h \
339                 enum TCA_FLOWER_KEY_TCP_DST_MASK \
340                 $(AUTOCONF_OUTPUT)
341         $Q sh -- '$<' '$@' \
342                 HAVE_TCA_FLOWER_KEY_UDP_SRC \
343                 linux/pkt_cls.h \
344                 enum TCA_FLOWER_KEY_UDP_SRC \
345                 $(AUTOCONF_OUTPUT)
346         $Q sh -- '$<' '$@' \
347                 HAVE_TCA_FLOWER_KEY_UDP_SRC_MASK \
348                 linux/pkt_cls.h \
349                 enum TCA_FLOWER_KEY_UDP_SRC_MASK \
350                 $(AUTOCONF_OUTPUT)
351         $Q sh -- '$<' '$@' \
352                 HAVE_TCA_FLOWER_KEY_UDP_DST \
353                 linux/pkt_cls.h \
354                 enum TCA_FLOWER_KEY_UDP_DST \
355                 $(AUTOCONF_OUTPUT)
356         $Q sh -- '$<' '$@' \
357                 HAVE_TCA_FLOWER_KEY_UDP_DST_MASK \
358                 linux/pkt_cls.h \
359                 enum TCA_FLOWER_KEY_UDP_DST_MASK \
360                 $(AUTOCONF_OUTPUT)
361         $Q sh -- '$<' '$@' \
362                 HAVE_TCA_FLOWER_KEY_VLAN_ID \
363                 linux/pkt_cls.h \
364                 enum TCA_FLOWER_KEY_VLAN_ID \
365                 $(AUTOCONF_OUTPUT)
366         $Q sh -- '$<' '$@' \
367                 HAVE_TCA_FLOWER_KEY_VLAN_PRIO \
368                 linux/pkt_cls.h \
369                 enum TCA_FLOWER_KEY_VLAN_PRIO \
370                 $(AUTOCONF_OUTPUT)
371         $Q sh -- '$<' '$@' \
372                 HAVE_TCA_FLOWER_KEY_VLAN_ETH_TYPE \
373                 linux/pkt_cls.h \
374                 enum TCA_FLOWER_KEY_VLAN_ETH_TYPE \
375                 $(AUTOCONF_OUTPUT)
376         $Q sh -- '$<' '$@' \
377                 HAVE_TCA_FLOWER_KEY_TCP_FLAGS \
378                 linux/pkt_cls.h \
379                 enum TCA_FLOWER_KEY_TCP_FLAGS \
380                 $(AUTOCONF_OUTPUT)
381         $Q sh -- '$<' '$@' \
382                 HAVE_TCA_FLOWER_KEY_TCP_FLAGS_MASK \
383                 linux/pkt_cls.h \
384                 enum TCA_FLOWER_KEY_TCP_FLAGS_MASK \
385                 $(AUTOCONF_OUTPUT)
386         $Q sh -- '$<' '$@' \
387                 HAVE_TC_ACT_GOTO_CHAIN \
388                 linux/pkt_cls.h \
389                 define TC_ACT_GOTO_CHAIN \
390                 $(AUTOCONF_OUTPUT)
391         $Q sh -- '$<' '$@' \
392                 HAVE_TC_ACT_VLAN \
393                 linux/tc_act/tc_vlan.h \
394                 enum TCA_VLAN_PUSH_VLAN_PRIORITY \
395                 $(AUTOCONF_OUTPUT)
396         $Q sh -- '$<' '$@' \
397                 HAVE_TCA_FLOWER_KEY_ENC_KEY_ID \
398                 linux/pkt_cls.h \
399                 enum TCA_FLOWER_KEY_ENC_KEY_ID \
400                 $(AUTOCONF_OUTPUT)
401         $Q sh -- '$<' '$@' \
402                 HAVE_TCA_FLOWER_KEY_ENC_IPV4_SRC \
403                 linux/pkt_cls.h \
404                 enum TCA_FLOWER_KEY_ENC_IPV4_SRC \
405                 $(AUTOCONF_OUTPUT)
406         $Q sh -- '$<' '$@' \
407                 HAVE_TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK \
408                 linux/pkt_cls.h \
409                 enum TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK \
410                 $(AUTOCONF_OUTPUT)
411         $Q sh -- '$<' '$@' \
412                 HAVE_TCA_FLOWER_KEY_ENC_IPV4_DST \
413                 linux/pkt_cls.h \
414                 enum TCA_FLOWER_KEY_ENC_IPV4_DST \
415                 $(AUTOCONF_OUTPUT)
416         $Q sh -- '$<' '$@' \
417                 HAVE_TCA_FLOWER_KEY_ENC_IPV4_DST_MASK \
418                 linux/pkt_cls.h \
419                 enum TCA_FLOWER_KEY_ENC_IPV4_DST_MASK \
420                 $(AUTOCONF_OUTPUT)
421         $Q sh -- '$<' '$@' \
422                 HAVE_TCA_FLOWER_KEY_ENC_IPV6_SRC \
423                 linux/pkt_cls.h \
424                 enum TCA_FLOWER_KEY_ENC_IPV6_SRC \
425                 $(AUTOCONF_OUTPUT)
426         $Q sh -- '$<' '$@' \
427                 HAVE_TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK \
428                 linux/pkt_cls.h \
429                 enum TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK \
430                 $(AUTOCONF_OUTPUT)
431         $Q sh -- '$<' '$@' \
432                 HAVE_TCA_FLOWER_KEY_ENC_IPV6_DST \
433                 linux/pkt_cls.h \
434                 enum TCA_FLOWER_KEY_ENC_IPV6_DST \
435                 $(AUTOCONF_OUTPUT)
436         $Q sh -- '$<' '$@' \
437                 HAVE_TCA_FLOWER_KEY_ENC_IPV6_DST_MASK \
438                 linux/pkt_cls.h \
439                 enum TCA_FLOWER_KEY_ENC_IPV6_DST_MASK \
440                 $(AUTOCONF_OUTPUT)
441         $Q sh -- '$<' '$@' \
442                 HAVE_TCA_FLOWER_KEY_ENC_UDP_SRC_PORT \
443                 linux/pkt_cls.h \
444                 enum TCA_FLOWER_KEY_ENC_UDP_SRC_PORT \
445                 $(AUTOCONF_OUTPUT)
446         $Q sh -- '$<' '$@' \
447                 HAVE_TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK \
448                 linux/pkt_cls.h \
449                 enum TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK \
450                 $(AUTOCONF_OUTPUT)
451         $Q sh -- '$<' '$@' \
452                 HAVE_TCA_FLOWER_KEY_ENC_UDP_DST_PORT \
453                 linux/pkt_cls.h \
454                 enum TCA_FLOWER_KEY_ENC_UDP_DST_PORT \
455                 $(AUTOCONF_OUTPUT)
456         $Q sh -- '$<' '$@' \
457                 HAVE_TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK \
458                 linux/pkt_cls.h \
459                 enum TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK \
460                 $(AUTOCONF_OUTPUT)
461         $Q sh -- '$<' '$@' \
462                 HAVE_TC_ACT_TUNNEL_KEY \
463                 linux/tc_act/tc_tunnel_key.h \
464                 define TCA_ACT_TUNNEL_KEY \
465                 $(AUTOCONF_OUTPUT)
466         $Q sh -- '$<' '$@' \
467                 HAVE_TCA_TUNNEL_KEY_ENC_DST_PORT \
468                 linux/tc_act/tc_tunnel_key.h \
469                 enum TCA_TUNNEL_KEY_ENC_DST_PORT \
470                 $(AUTOCONF_OUTPUT)
471         $Q sh -- '$<' '$@' \
472                 HAVE_TCA_TUNNEL_KEY_NO_CSUM \
473                 linux/tc_act/tc_tunnel_key.h \
474                 enum TCA_TUNNEL_KEY_NO_CSUM \
475                 $(AUTOCONF_OUTPUT)
476         $Q sh -- '$<' '$@' \
477                 HAVE_TC_ACT_PEDIT \
478                 linux/tc_act/tc_pedit.h \
479                 enum TCA_PEDIT_KEY_EX_HDR_TYPE_UDP \
480                 $(AUTOCONF_OUTPUT)
481         $Q sh -- '$<' '$@' \
482                 HAVE_SUPPORTED_40000baseKR4_Full \
483                 /usr/include/linux/ethtool.h \
484                 define SUPPORTED_40000baseKR4_Full \
485                 $(AUTOCONF_OUTPUT)
486         $Q sh -- '$<' '$@' \
487                 HAVE_SUPPORTED_40000baseCR4_Full \
488                 /usr/include/linux/ethtool.h \
489                 define SUPPORTED_40000baseCR4_Full \
490                 $(AUTOCONF_OUTPUT)
491         $Q sh -- '$<' '$@' \
492                 HAVE_SUPPORTED_40000baseSR4_Full \
493                 /usr/include/linux/ethtool.h \
494                 define SUPPORTED_40000baseSR4_Full \
495                 $(AUTOCONF_OUTPUT)
496         $Q sh -- '$<' '$@' \
497                 HAVE_SUPPORTED_40000baseLR4_Full \
498                 /usr/include/linux/ethtool.h \
499                 define SUPPORTED_40000baseLR4_Full \
500                 $(AUTOCONF_OUTPUT)
501         $Q sh -- '$<' '$@' \
502                 HAVE_SUPPORTED_56000baseKR4_Full \
503                 /usr/include/linux/ethtool.h \
504                 define SUPPORTED_56000baseKR4_Full \
505                 $(AUTOCONF_OUTPUT)
506         $Q sh -- '$<' '$@' \
507                 HAVE_SUPPORTED_56000baseCR4_Full \
508                 /usr/include/linux/ethtool.h \
509                 define SUPPORTED_56000baseCR4_Full \
510                 $(AUTOCONF_OUTPUT)
511         $Q sh -- '$<' '$@' \
512                 HAVE_SUPPORTED_56000baseSR4_Full \
513                 /usr/include/linux/ethtool.h \
514                 define SUPPORTED_56000baseSR4_Full \
515                 $(AUTOCONF_OUTPUT)
516         $Q sh -- '$<' '$@' \
517                 HAVE_SUPPORTED_56000baseLR4_Full \
518                 /usr/include/linux/ethtool.h \
519                 define SUPPORTED_56000baseLR4_Full \
520                 $(AUTOCONF_OUTPUT)
521         $Q sh -- '$<' '$@' \
522                 HAVE_STATIC_ASSERT \
523                 /usr/include/assert.h \
524                 define static_assert \
525                 $(AUTOCONF_OUTPUT)
526
527 # Create mlx5_autoconf.h or update it in case it differs from the new one.
528
529 mlx5_autoconf.h: mlx5_autoconf.h.new
530         $Q [ -f '$@' ] && \
531                 cmp '$<' '$@' $(AUTOCONF_OUTPUT) || \
532                 mv '$<' '$@'
533
534 $(SRCS-$(CONFIG_RTE_LIBRTE_MLX5_PMD):.c=.o): mlx5_autoconf.h
535
536 # Generate dependency plug-in for rdma-core when the PMD must not be linked
537 # directly, so that applications do not inherit this dependency.
538
539 ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
540
541 $(LIB): $(LIB_GLUE)
542
543 ifeq ($(LINK_USING_CC),1)
544 GLUE_LDFLAGS := $(call linkerprefix,$(LDFLAGS))
545 else
546 GLUE_LDFLAGS := $(LDFLAGS)
547 endif
548 $(LIB_GLUE): mlx5_glue.o
549         $Q $(LD) $(GLUE_LDFLAGS) $(EXTRA_LDFLAGS) \
550                 -Wl,-h,$(LIB_GLUE) \
551                 -shared -o $@ $< -libverbs -lmlx5
552
553 mlx5_glue.o: mlx5_autoconf.h
554
555 endif
556
557 clean_mlx5: FORCE
558         $Q rm -f -- mlx5_autoconf.h mlx5_autoconf.h.new
559         $Q rm -f -- mlx5_glue.o $(LIB_GLUE_BASE)*
560
561 clean: clean_mlx5