]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | # SPDX-License-Identifier: BSD-3-Clause |
2 | # Copyright 2012 6WIND S.A. | |
3 | # Copyright 2012 Mellanox Technologies, Ltd | |
4 | ||
5 | include $(RTE_SDK)/mk/rte.vars.mk | |
6 | ||
7 | # Library name. | |
8 | LIB = librte_pmd_mlx4.a | |
9 | LIB_GLUE = $(LIB_GLUE_BASE).$(LIB_GLUE_VERSION) | |
10 | LIB_GLUE_BASE = librte_pmd_mlx4_glue.so | |
11 | LIB_GLUE_VERSION = 18.02.0 | |
12 | ||
13 | # Sources. | |
14 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4.c | |
15 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_ethdev.c | |
16 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_flow.c | |
9f95a23c | 17 | ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) |
11fdf7f2 TL |
18 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_glue.c |
19 | endif | |
20 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_intr.c | |
9f95a23c | 21 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_mp.c |
11fdf7f2 TL |
22 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_mr.c |
23 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxq.c | |
24 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_rxtx.c | |
25 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_txq.c | |
26 | SRCS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += mlx4_utils.c | |
27 | ||
9f95a23c | 28 | ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) |
11fdf7f2 TL |
29 | INSTALL-$(CONFIG_RTE_LIBRTE_MLX4_PMD)-lib += $(LIB_GLUE) |
30 | endif | |
31 | ||
32 | # Basic CFLAGS. | |
33 | CFLAGS += -O3 | |
34 | CFLAGS += -std=c11 -Wall -Wextra | |
35 | CFLAGS += -g | |
36 | CFLAGS += -I. | |
37 | CFLAGS += -D_BSD_SOURCE | |
38 | CFLAGS += -D_DEFAULT_SOURCE | |
39 | CFLAGS += -D_XOPEN_SOURCE=600 | |
40 | CFLAGS += $(WERROR_FLAGS) | |
41 | CFLAGS += -DALLOW_EXPERIMENTAL_API | |
9f95a23c | 42 | ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) |
11fdf7f2 TL |
43 | CFLAGS += -DMLX4_GLUE='"$(LIB_GLUE)"' |
44 | CFLAGS += -DMLX4_GLUE_VERSION='"$(LIB_GLUE_VERSION)"' | |
45 | CFLAGS_mlx4_glue.o += -fPIC | |
46 | LDLIBS += -ldl | |
9f95a23c TL |
47 | else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y) |
48 | LDLIBS += $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh) | |
11fdf7f2 TL |
49 | else |
50 | LDLIBS += -libverbs -lmlx4 | |
51 | endif | |
52 | LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring | |
53 | LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs | |
54 | LDLIBS += -lrte_bus_pci | |
55 | ||
56 | # A few warnings cannot be avoided in external headers. | |
57 | CFLAGS += -Wno-error=cast-qual | |
58 | ||
59 | EXPORT_MAP := rte_pmd_mlx4_version.map | |
60 | LIBABIVER := 1 | |
61 | ||
62 | # DEBUG which is usually provided on the command-line may enable | |
63 | # CONFIG_RTE_LIBRTE_MLX4_DEBUG. | |
64 | ifeq ($(DEBUG),1) | |
65 | CONFIG_RTE_LIBRTE_MLX4_DEBUG := y | |
66 | endif | |
67 | ||
68 | # User-defined CFLAGS. | |
69 | ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG),y) | |
70 | CFLAGS += -pedantic -UNDEBUG -DPEDANTIC | |
71 | else | |
72 | CFLAGS += -DNDEBUG -UPEDANTIC | |
73 | endif | |
74 | ||
75 | include $(RTE_SDK)/mk/rte.lib.mk | |
76 | ||
77 | # Generate and clean-up mlx4_autoconf.h. | |
78 | ||
79 | export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS | |
80 | export AUTO_CONFIG_CFLAGS = -Wno-error | |
81 | ||
82 | ifndef V | |
83 | AUTOCONF_OUTPUT := >/dev/null | |
84 | endif | |
85 | ||
86 | mlx4_autoconf.h.new: FORCE | |
87 | ||
88 | mlx4_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 | ||
109 | mlx4_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 | 119 | ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) |
11fdf7f2 TL |
120 | |
121 | $(LIB): $(LIB_GLUE) | |
122 | ||
123 | ifeq ($(LINK_USING_CC),1) | |
124 | GLUE_LDFLAGS := $(call linkerprefix,$(LDFLAGS)) | |
125 | else | |
126 | GLUE_LDFLAGS := $(LDFLAGS) | |
127 | endif | |
128 | $(LIB_GLUE): mlx4_glue.o | |
129 | $Q $(LD) $(GLUE_LDFLAGS) $(EXTRA_LDFLAGS) \ | |
130 | -Wl,-h,$(LIB_GLUE) \ | |
131 | -shared -o $@ $< -libverbs -lmlx4 | |
132 | ||
133 | mlx4_glue.o: mlx4_autoconf.h | |
134 | ||
135 | endif | |
136 | ||
137 | clean_mlx4: FORCE | |
138 | $Q rm -f -- mlx4_autoconf.h mlx4_autoconf.h.new | |
139 | $Q rm -f -- mlx4_glue.o $(LIB_GLUE_BASE)* | |
140 | ||
141 | clean: clean_mlx4 |