]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/dpdk/drivers/net/mlx4/Makefile
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / dpdk / drivers / net / mlx4 / Makefile
CommitLineData
11fdf7f2
TL
1# SPDX-License-Identifier: BSD-3-Clause
2# Copyright 2012 6WIND S.A.
3# Copyright 2012 Mellanox Technologies, Ltd
4
5include $(RTE_SDK)/mk/rte.vars.mk
6
7# Library name.
8LIB = librte_pmd_mlx4.a
9LIB_GLUE = $(LIB_GLUE_BASE).$(LIB_GLUE_VERSION)
10LIB_GLUE_BASE = librte_pmd_mlx4_glue.so
11LIB_GLUE_VERSION = 18.02.0
12
13# Sources.
14SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4.c
15SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_ethdev.c
16SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_flow.c
9f95a23c 17ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
11fdf7f2
TL
18SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_glue.c
19endif
20SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_intr.c
9f95a23c 21SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_mp.c
11fdf7f2
TL
22SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_mr.c
23SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxq.c
24SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxtx.c
25SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_txq.c
26SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_utils.c
27
9f95a23c 28ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
11fdf7f2
TL
29INSTALL-$(CONFIG_RTE_LIBRTE_MLX4_PMD)-lib += $(LIB_GLUE)
30endif
31
32# Basic CFLAGS.
33CFLAGS += -O3
34CFLAGS += -std=c11 -Wall -Wextra
35CFLAGS += -g
36CFLAGS += -I.
37CFLAGS += -D_BSD_SOURCE
38CFLAGS += -D_DEFAULT_SOURCE
39CFLAGS += -D_XOPEN_SOURCE=600
40CFLAGS += $(WERROR_FLAGS)
41CFLAGS += -DALLOW_EXPERIMENTAL_API
9f95a23c 42ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
11fdf7f2
TL
43CFLAGS += -DMLX4_GLUE='"$(LIB_GLUE)"'
44CFLAGS += -DMLX4_GLUE_VERSION='"$(LIB_GLUE_VERSION)"'
45CFLAGS_mlx4_glue.o += -fPIC
46LDLIBS += -ldl
9f95a23c
TL
47else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y)
48LDLIBS += $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh)
11fdf7f2
TL
49else
50LDLIBS += -libverbs -lmlx4
51endif
52LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
53LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs
54LDLIBS += -lrte_bus_pci
55
56# A few warnings cannot be avoided in external headers.
57CFLAGS += -Wno-error=cast-qual
58
59EXPORT_MAP := rte_pmd_mlx4_version.map
60LIBABIVER := 1
61
62# DEBUG which is usually provided on the command-line may enable
63# CONFIG_RTE_LIBRTE_MLX4_DEBUG.
64ifeq ($(DEBUG),1)
65CONFIG_RTE_LIBRTE_MLX4_DEBUG := y
66endif
67
68# User-defined CFLAGS.
69ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y)
70CFLAGS += -pedantic -UNDEBUG -DPEDANTIC
71else
72CFLAGS += -DNDEBUG -UPEDANTIC
73endif
74
75include $(RTE_SDK)/mk/rte.lib.mk
76
77# Generate and clean-up mlx4_autoconf.h.
78
79export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
80export AUTO_CONFIG_CFLAGS = -Wno-error
81
82ifndef V
83AUTOCONF_OUTPUT := >/dev/null
84endif
85
86mlx4_autoconf.h.new: FORCE
87
88mlx4_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
89 $Q $(RM) -f -- '$@'
90 $Q : > '$@'
9f95a23c
TL
91 $Q sh -- '$<' '$@' \
92 HAVE_IBV_MLX4_BUF_ALLOCATORS \
93 infiniband/mlx4dv.h \
94 enum MLX4DV_SET_CTX_ATTR_BUF_ALLOCATORS \
95 $(AUTOCONF_OUTPUT)
96 $Q sh -- '$<' '$@' \
97 HAVE_IBV_MLX4_UAR_MMAP_OFFSET \
98 infiniband/mlx4dv.h \
99 enum MLX4DV_QP_MASK_UAR_MMAP_OFFSET \
100 $(AUTOCONF_OUTPUT)
11fdf7f2
TL
101 $Q sh -- '$<' '$@' \
102 HAVE_IBV_MLX4_WQE_LSO_SEG \
103 infiniband/mlx4dv.h \
104 type 'struct mlx4_wqe_lso_seg' \
105 $(AUTOCONF_OUTPUT)
106
107# Create mlx4_autoconf.h or update it in case it differs from the new one.
108
109mlx4_autoconf.h: mlx4_autoconf.h.new
110 $Q [ -f '$@' ] && \
111 cmp '$<' '$@' $(AUTOCONF_OUTPUT) || \
112 mv '$<' '$@'
113
114$(SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD):.c=.o): mlx4_autoconf.h
115
116# Generate dependency plug-in for rdma-core when the PMD must not be linked
117# directly, so that applications do not inherit this dependency.
118
9f95a23c 119ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
11fdf7f2
TL
120
121$(LIB): $(LIB_GLUE)
122
123ifeq ($(LINK_USING_CC),1)
124GLUE_LDFLAGS := $(call linkerprefix,$(LDFLAGS))
125else
126GLUE_LDFLAGS := $(LDFLAGS)
127endif
128$(LIB_GLUE): mlx4_glue.o
129 $Q $(LD) $(GLUE_LDFLAGS) $(EXTRA_LDFLAGS) \
130 -Wl,-h,$(LIB_GLUE) \
131 -shared -o $@ $< -libverbs -lmlx4
132
133mlx4_glue.o: mlx4_autoconf.h
134
135endif
136
137clean_mlx4: FORCE
138 $Q rm -f -- mlx4_autoconf.h mlx4_autoconf.h.new
139 $Q rm -f -- mlx4_glue.o $(LIB_GLUE_BASE)*
140
141clean: clean_mlx4