]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | # SPDX-License-Identifier: BSD-3-Clause |
2 | # Copyright(c) 2010-2017 Intel Corporation. | |
3 | # Copyright(c) 2014-2015 6WIND S.A. | |
4 | ||
5 | include $(RTE_SDK)/mk/internal/rte.compile-pre.mk | |
6 | include $(RTE_SDK)/mk/internal/rte.install-pre.mk | |
7 | include $(RTE_SDK)/mk/internal/rte.clean-pre.mk | |
8 | include $(RTE_SDK)/mk/internal/rte.build-pre.mk | |
9 | ||
10 | # VPATH contains at least SRCDIR | |
11 | VPATH += $(SRCDIR) | |
12 | ||
13 | _BUILD = $(APP) | |
14 | _INSTALL = $(INSTALL-FILES-y) $(SYMLINK-FILES-y) | |
15 | _INSTALL += $(RTE_OUTPUT)/app/$(APP) $(RTE_OUTPUT)/app/$(APP).map | |
16 | POSTINSTALL += target-appinstall | |
17 | _CLEAN = doclean | |
18 | POSTCLEAN += target-appclean | |
19 | ||
20 | ifeq ($(NO_LDSCRIPT),) | |
21 | LDSCRIPT = $(RTE_LDSCRIPT) | |
22 | endif | |
23 | ||
24 | # Link only the libraries used in the application | |
25 | LDFLAGS += --as-needed | |
26 | ||
27 | # default path for libs | |
28 | _LDLIBS-y += -L$(RTE_SDK_BIN)/lib | |
29 | ||
30 | # | |
31 | # Order is important: from higher level to lower level | |
32 | # | |
33 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FLOW_CLASSIFY) += -lrte_flow_classify | |
34 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PIPELINE) += --whole-archive | |
35 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PIPELINE) += -lrte_pipeline | |
36 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PIPELINE) += --no-whole-archive | |
37 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TABLE) += --whole-archive | |
38 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TABLE) += -lrte_table | |
39 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TABLE) += --no-whole-archive | |
40 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PORT) += --whole-archive | |
41 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PORT) += -lrte_port | |
42 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PORT) += --no-whole-archive | |
43 | ||
44 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PDUMP) += -lrte_pdump | |
45 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += -lrte_distributor | |
46 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += -lrte_ip_frag | |
47 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lrte_meter | |
f67539c2 TL |
48 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FIB) += -lrte_fib |
49 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RIB) += -lrte_rib | |
11fdf7f2 | 50 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm |
11fdf7f2 | 51 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl |
11fdf7f2 | 52 | _LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats |
f67539c2 | 53 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --whole-archive |
11fdf7f2 | 54 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics |
f67539c2 TL |
55 | ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y) |
56 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -ljansson | |
57 | endif | |
58 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --no-whole-archive | |
11fdf7f2 TL |
59 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats |
60 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats | |
61 | _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power | |
62 | ||
63 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EFD) += -lrte_efd | |
64 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BPF) += -lrte_bpf | |
65 | ifeq ($(CONFIG_RTE_LIBRTE_BPF_ELF),y) | |
66 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BPF) += -lelf | |
67 | endif | |
68 | ||
9f95a23c TL |
69 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IPSEC) += -lrte_ipsec |
70 | ||
11fdf7f2 TL |
71 | _LDLIBS-y += --whole-archive |
72 | ||
73 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CFGFILE) += -lrte_cfgfile | |
74 | _LDLIBS-$(CONFIG_RTE_LIBRTE_GRO) += -lrte_gro | |
75 | _LDLIBS-$(CONFIG_RTE_LIBRTE_GSO) += -lrte_gso | |
76 | _LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash | |
77 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member | |
78 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost | |
79 | _LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs | |
f67539c2 | 80 | _LDLIBS-y += -lrte_telemetry |
11fdf7f2 TL |
81 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf |
82 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NET) += -lrte_net | |
83 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lrte_ethdev | |
84 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BBDEV) += -lrte_bbdev | |
85 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += -lrte_cryptodev | |
86 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SECURITY) += -lrte_security | |
87 | _LDLIBS-$(CONFIG_RTE_LIBRTE_COMPRESSDEV) += -lrte_compressdev | |
88 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EVENTDEV) += -lrte_eventdev | |
89 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RAWDEV) += -lrte_rawdev | |
90 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TIMER) += -lrte_timer | |
91 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += -lrte_mempool | |
9f95a23c | 92 | _LDLIBS-$(CONFIG_RTE_LIBRTE_STACK) += -lrte_stack |
11fdf7f2 | 93 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring |
f67539c2 | 94 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2 |
11fdf7f2 TL |
95 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring |
96 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci | |
97 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal | |
98 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline | |
99 | _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder | |
100 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched | |
9f95a23c | 101 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RCU) += -lrte_rcu |
f67539c2 TL |
102 | _LDLIBS-$(CONFIG_RTE_LIBRTE_GRAPH) += -lrte_graph |
103 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NODE) += -lrte_node | |
11fdf7f2 | 104 | |
9f95a23c | 105 | ifeq ($(CONFIG_RTE_EXEC_ENV_LINUX),y) |
11fdf7f2 TL |
106 | _LDLIBS-$(CONFIG_RTE_LIBRTE_KNI) += -lrte_kni |
107 | endif | |
108 | ||
f67539c2 TL |
109 | OTX-CPT-y := $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) |
110 | OTX-CPT-y += $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO) | |
111 | ifeq ($(findstring y,$(OTX-CPT-y)),y) | |
9f95a23c TL |
112 | _LDLIBS-y += -lrte_common_cpt |
113 | endif | |
114 | ||
11fdf7f2 TL |
115 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL),yy) |
116 | _LDLIBS-y += -lrte_common_octeontx | |
117 | endif | |
f67539c2 TL |
118 | OCTEONTX2-y := $(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) |
119 | OCTEONTX2-y += $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO) | |
120 | OCTEONTX2-y += $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EVENTDEV) | |
121 | OCTEONTX2-y += $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV) | |
122 | OCTEONTX2-y += $(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EP_RAWDEV) | |
123 | OCTEONTX2-y += $(CONFIG_RTE_LIBRTE_OCTEONTX2_PMD) | |
124 | ifeq ($(findstring y,$(OCTEONTX2-y)),y) | |
125 | _LDLIBS-y += -lrte_common_octeontx2 | |
126 | endif | |
11fdf7f2 | 127 | |
9f95a23c TL |
128 | MVEP-y := $(CONFIG_RTE_LIBRTE_MVPP2_PMD) |
129 | MVEP-y += $(CONFIG_RTE_LIBRTE_MVNETA_PMD) | |
130 | MVEP-y += $(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) | |
131 | ifneq (,$(findstring y,$(MVEP-y))) | |
132 | _LDLIBS-y += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk | |
133 | endif | |
134 | ||
f67539c2 TL |
135 | DPAAX-y := $(CONFIG_RTE_LIBRTE_DPAA_BUS) |
136 | DPAAX-y += $(CONFIG_RTE_LIBRTE_FSLMC_BUS) | |
137 | DPAAX-y += $(CONFIG_RTE_LIBRTE_ENETC_PMD) | |
138 | DPAAX-y += $(CONFIG_RTE_LIBRTE_PMD_CAAM_JR) | |
139 | DPAAX-y += $(CONFIG_RTE_LIBRTE_PFE_PMD) | |
140 | ifeq ($(findstring y,$(DPAAX-y)),y) | |
141 | _LDLIBS-y += -lrte_common_dpaax | |
9f95a23c TL |
142 | endif |
143 | ||
11fdf7f2 TL |
144 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci |
145 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev | |
146 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa | |
147 | ifeq ($(CONFIG_RTE_EAL_VFIO),y) | |
148 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += -lrte_bus_fslmc | |
149 | endif | |
150 | ||
151 | ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) | |
152 | # plugins (link only if static libraries) | |
153 | ||
154 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_BUCKET) += -lrte_mempool_bucket | |
155 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += -lrte_mempool_stack | |
156 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
157 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_MEMPOOL) += -lrte_mempool_dpaa | |
158 | endif | |
159 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
160 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL) += -lrte_mempool_dpaa2 | |
161 | endif | |
162 | ||
163 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet | |
9f95a23c | 164 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_XDP) += -lrte_pmd_af_xdp -lbpf |
11fdf7f2 | 165 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ARK_PMD) += -lrte_pmd_ark |
9f95a23c | 166 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += -lrte_pmd_atlantic |
11fdf7f2 TL |
167 | _LDLIBS-$(CONFIG_RTE_LIBRTE_AVP_PMD) += -lrte_pmd_avp |
168 | _LDLIBS-$(CONFIG_RTE_LIBRTE_AXGBE_PMD) += -lrte_pmd_axgbe | |
169 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz | |
170 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += -lrte_pmd_bnxt | |
171 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond | |
172 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += -lrte_pmd_cxgbe | |
173 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
174 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_PMD) += -lrte_pmd_dpaa | |
175 | endif | |
176 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
177 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += -lrte_pmd_dpaa2 | |
178 | endif | |
179 | _LDLIBS-$(CONFIG_RTE_LIBRTE_E1000_PMD) += -lrte_pmd_e1000 | |
180 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += -lrte_pmd_ena | |
9f95a23c | 181 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENETC_PMD) += -lrte_pmd_enetc |
11fdf7f2 TL |
182 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += -lrte_pmd_enic |
183 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += -lrte_pmd_fm10k | |
184 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += -lrte_pmd_failsafe | |
f67539c2 TL |
185 | _LDLIBS-$(CONFIG_RTE_LIBRTE_HINIC_PMD) += -lrte_pmd_hinic |
186 | _LDLIBS-$(CONFIG_RTE_LIBRTE_HNS3_PMD) += -lrte_pmd_hns3 | |
11fdf7f2 | 187 | _LDLIBS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += -lrte_pmd_i40e |
9f95a23c TL |
188 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IAVF_PMD) += -lrte_pmd_iavf |
189 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += -lrte_pmd_ice | |
f67539c2 TL |
190 | IAVF-y := $(CONFIG_RTE_LIBRTE_IAVF_PMD) |
191 | IAVF-y += $(CONFIG_RTE_LIBRTE_ICE_PMD) | |
192 | ifeq ($(findstring y,$(IAVF-y)),y) | |
193 | _LDLIBS-y += -lrte_common_iavf | |
194 | endif | |
195 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IGC_PMD) += -lrte_pmd_igc | |
196 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IONIC_PMD) += -lrte_pmd_ionic | |
11fdf7f2 TL |
197 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe |
198 | ifeq ($(CONFIG_RTE_LIBRTE_KNI),y) | |
199 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KNI) += -lrte_pmd_kni | |
200 | endif | |
201 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LIO_PMD) += -lrte_pmd_lio | |
f67539c2 | 202 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MEMIF) += -lrte_pmd_memif |
9f95a23c | 203 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 |
f67539c2 TL |
204 | ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y) |
205 | _LDLIBS-y += -lrte_common_mlx5 | |
206 | endif | |
207 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 | |
208 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD) += -lrte_pmd_mlx5_vdpa | |
9f95a23c | 209 | ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) |
f67539c2 | 210 | _LDLIBS-y += -ldl |
9f95a23c TL |
211 | else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y) |
212 | LIBS_IBVERBS_STATIC = $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh) | |
f67539c2 TL |
213 | _LDLIBS-y += --no-whole-archive |
214 | _LDLIBS-y += $(LIBS_IBVERBS_STATIC) | |
215 | _LDLIBS-y += --whole-archive | |
11fdf7f2 | 216 | else |
f67539c2 TL |
217 | ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y) |
218 | _LDLIBS-y += -libverbs -lmlx5 | |
219 | endif | |
9f95a23c | 220 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -libverbs -lmlx4 |
11fdf7f2 | 221 | endif |
9f95a23c TL |
222 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += -lrte_pmd_mvpp2 |
223 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MVNETA_PMD) += -lrte_pmd_mvneta | |
11fdf7f2 TL |
224 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += -lrte_pmd_nfp |
225 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += -lrte_pmd_null | |
f67539c2 | 226 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_PMD) += -lrte_pmd_octeontx2 -lm |
11fdf7f2 | 227 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += -lrte_pmd_pcap -lpcap |
f67539c2 | 228 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PFE_PMD) += -lrte_pmd_pfe |
11fdf7f2 TL |
229 | _LDLIBS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += -lrte_pmd_qede |
230 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_RING) += -lrte_pmd_ring | |
231 | ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y) | |
232 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SOFTNIC) += -lrte_pmd_softnic | |
233 | endif | |
234 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += -lrte_pmd_sfc_efx | |
235 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lrte_pmd_szedata2 -lsze2 | |
9f95a23c TL |
236 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD) += -lrte_pmd_nfb |
237 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD) += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --libs netcope-common) | |
11fdf7f2 TL |
238 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += -lrte_pmd_tap |
239 | _LDLIBS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += -lrte_pmd_thunderx_nicvf | |
240 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += -lrte_pmd_vdev_netvsc | |
241 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += -lrte_pmd_virtio | |
242 | ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) | |
243 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost | |
244 | ifeq ($(CONFIG_RTE_EAL_VFIO),y) | |
245 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IFC_PMD) += -lrte_pmd_ifc | |
246 | endif # $(CONFIG_RTE_EAL_VFIO) | |
247 | endif # $(CONFIG_RTE_LIBRTE_VHOST) | |
248 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += -lrte_pmd_vmxnet3_uio | |
249 | ||
250 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VMBUS) += -lrte_bus_vmbus | |
251 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NETVSC_PMD) += -lrte_pmd_netvsc | |
252 | ||
253 | ifeq ($(CONFIG_RTE_LIBRTE_BBDEV),y) | |
254 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL) += -lrte_pmd_bbdev_null | |
f67539c2 TL |
255 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC) += -lrte_pmd_bbdev_fpga_lte_fec |
256 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_5GNR_FEC) += -lrte_pmd_bbdev_fpga_5gnr_fec | |
11fdf7f2 TL |
257 | |
258 | # TURBO SOFTWARE PMD is dependent on the FLEXRAN library | |
259 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -lrte_pmd_bbdev_turbo_sw | |
f67539c2 TL |
260 | ifeq ($(CONFIG_RTE_BBDEV_SDK_AVX2),y) |
261 | # Dependency on the FLEXRAN SDK library if available | |
11fdf7f2 TL |
262 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_crc -lcrc |
263 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_turbo -lturbo | |
264 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_rate_matching -lrate_matching | |
265 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_common -lcommon | |
f67539c2 TL |
266 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -lirc -limf -lstdc++ -lipps -lsvml |
267 | ifeq ($(CONFIG_RTE_BBDEV_SDK_AVX512),y) | |
268 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_LDPC_ratematch_5gnr -lLDPC_ratematch_5gnr | |
269 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_ldpc_encoder_5gnr -lldpc_encoder_5gnr | |
270 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_ldpc_decoder_5gnr -lldpc_decoder_5gnr | |
271 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_rate_dematching_5gnr -lrate_dematching_5gnr | |
272 | endif # CONFIG_RTE_BBDEV_SDK_AVX512 | |
273 | endif # CONFIG_RTE_BBDEV_SDK_AVX2 | |
11fdf7f2 TL |
274 | endif # CONFIG_RTE_LIBRTE_BBDEV |
275 | ||
276 | ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y) | |
277 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lrte_pmd_aesni_mb | |
278 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lIPSec_MB | |
279 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lrte_pmd_aesni_gcm | |
280 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lIPSec_MB | |
281 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CCP) += -lrte_pmd_ccp -lcrypto | |
282 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL) += -lrte_pmd_openssl -lcrypto | |
283 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto | |
284 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT),y) | |
285 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT_SYM) += -lrte_pmd_qat -lcrypto | |
9f95a23c | 286 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT_ASYM) += -lrte_pmd_qat -lcrypto |
11fdf7f2 TL |
287 | endif # CONFIG_RTE_LIBRTE_PMD_QAT |
288 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -lrte_pmd_snow3g | |
f67539c2 | 289 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -lIPSec_MB |
11fdf7f2 | 290 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -lrte_pmd_kasumi |
f67539c2 | 291 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -lIPSec_MB |
11fdf7f2 | 292 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc |
f67539c2 | 293 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lIPSec_MB |
11fdf7f2 | 294 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 |
f67539c2 | 295 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -lAArch64crypto |
11fdf7f2 | 296 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk |
f67539c2 | 297 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NITROX) += -lrte_pmd_nitrox |
9f95a23c | 298 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto |
f67539c2 | 299 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO) += -lrte_pmd_octeontx2_crypto |
11fdf7f2 TL |
300 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER) += -lrte_pmd_crypto_scheduler |
301 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
302 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC) += -lrte_pmd_dpaa2_sec | |
303 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS | |
304 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
305 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += -lrte_pmd_dpaa_sec | |
306 | endif # CONFIG_RTE_LIBRTE_DPAA_BUS | |
f67539c2 TL |
307 | ifeq ($(CONFIG_RTE_LIBRTE_SECURITY),y) |
308 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CAAM_JR) += -lrte_pmd_caam_jr | |
9f95a23c | 309 | endif # CONFIG_RTE_LIBRTE_SECURITY |
11fdf7f2 TL |
310 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto |
311 | endif # CONFIG_RTE_LIBRTE_CRYPTODEV | |
312 | ||
313 | ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y) | |
314 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp | |
315 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal | |
316 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += -lrte_pmd_octeontx_zip | |
317 | # Link QAT driver if it has not been linked yet | |
318 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT_SYM),n) | |
319 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat | |
320 | endif # CONFIG_RTE_LIBRTE_PMD_QAT_SYM | |
321 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lrte_pmd_zlib | |
322 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lz | |
323 | endif # CONFIG_RTE_LIBRTE_COMPRESSDEV | |
324 | ||
325 | ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y) | |
326 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV) += -lrte_pmd_skeleton_event | |
327 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += -lrte_pmd_sw_event | |
9f95a23c | 328 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV) += -lrte_pmd_dsw_event |
11fdf7f2 TL |
329 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += -lrte_pmd_octeontx_ssovf |
330 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
331 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV) += -lrte_pmd_dpaa_event | |
332 | endif # CONFIG_RTE_LIBRTE_DPAA_BUS | |
333 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
334 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV) += -lrte_pmd_dpaa2_event | |
335 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS | |
336 | ||
337 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += -lrte_mempool_octeontx | |
338 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX_PMD) += -lrte_pmd_octeontx | |
f67539c2 | 339 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EVENTDEV) += -lrte_pmd_octeontx2_event |
11fdf7f2 TL |
340 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPDL_EVENTDEV) += -lrte_pmd_opdl_event |
341 | endif # CONFIG_RTE_LIBRTE_EVENTDEV | |
342 | ||
343 | ifeq ($(CONFIG_RTE_LIBRTE_RAWDEV),y) | |
f67539c2 | 344 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV) += -lrte_rawdev_skeleton |
11fdf7f2 | 345 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) |
f67539c2 TL |
346 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_CMDIF_RAWDEV) += -lrte_rawdev_dpaa2_cmdif |
347 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV) += -lrte_rawdev_dpaa2_qdma | |
11fdf7f2 TL |
348 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS |
349 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += -lrte_bus_ifpga | |
350 | ifeq ($(CONFIG_RTE_LIBRTE_IFPGA_BUS),y) | |
f67539c2 | 351 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_IFPGA_RAWDEV) += -lrte_rawdev_ifpga -lfdt |
9f95a23c | 352 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IPN3KE_PMD) += -lrte_pmd_ipn3ke |
11fdf7f2 | 353 | endif # CONFIG_RTE_LIBRTE_IFPGA_BUS |
f67539c2 TL |
354 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV) += -lrte_rawdev_ioat |
355 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NTB_RAWDEV) += -lrte_rawdev_ntb | |
356 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV) += -lrte_rawdev_octeontx2_dma | |
357 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EP_RAWDEV) += -lrte_rawdev_octeontx2_ep | |
11fdf7f2 TL |
358 | endif # CONFIG_RTE_LIBRTE_RAWDEV |
359 | ||
360 | endif # !CONFIG_RTE_BUILD_SHARED_LIBS | |
361 | ||
362 | _LDLIBS-y += --no-whole-archive | |
363 | ||
364 | ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) | |
365 | # The static libraries do not know their dependencies. | |
366 | # So linking with static library requires explicit dependencies. | |
367 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrt | |
9f95a23c | 368 | ifeq ($(CONFIG_RTE_EXEC_ENV_LINUX)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy) |
11fdf7f2 TL |
369 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lnuma |
370 | endif | |
11fdf7f2 TL |
371 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm |
372 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt | |
373 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lm | |
374 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lm | |
375 | ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) | |
376 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma | |
377 | endif | |
378 | _LDLIBS-$(CONFIG_RTE_PORT_PCAP) += -lpcap | |
379 | endif # !CONFIG_RTE_BUILD_SHARED_LIBS | |
380 | ||
381 | _LDLIBS-y += $(EXECENV_LDLIBS) | |
382 | ||
383 | LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS) | |
384 | ||
385 | # all the words except the first one | |
386 | allbutfirst = $(wordlist 2,$(words $(1)),$(1)) | |
387 | ||
388 | # Eliminate duplicates without sorting, only keep the last occurrence | |
389 | filter-libs = \ | |
390 | $(if $(1),$(strip\ | |
391 | $(if \ | |
392 | $(and \ | |
393 | $(filter $(firstword $(1)),$(call allbutfirst,$(1))),\ | |
394 | $(filter -l%,$(firstword $(1)))),\ | |
395 | ,\ | |
396 | $(firstword $(1))) \ | |
397 | $(call filter-libs,$(call allbutfirst,$(1))))) | |
398 | ||
399 | LDLIBS := $(call filter-libs,$(LDLIBS)) | |
400 | ||
11fdf7f2 TL |
401 | MAPFLAGS = -Map=$@.map --cref |
402 | ||
403 | .PHONY: all | |
404 | all: install | |
405 | ||
406 | .PHONY: install | |
407 | install: build _postinstall | |
408 | ||
409 | _postinstall: build | |
410 | ||
411 | .PHONY: build | |
412 | build: _postbuild | |
413 | ||
414 | exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1)))) | |
415 | ||
416 | ifeq ($(LINK_USING_CC),1) | |
417 | O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $(OBJS-y) $(call linkerprefix, \ | |
418 | $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ | |
419 | $(MAPFLAGS)) | |
420 | else | |
421 | O_TO_EXE = $(LD) -o $@ $(OBJS-y) \ | |
422 | $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ | |
423 | $(MAPFLAGS) | |
424 | endif | |
425 | O_TO_EXE_STR = $(subst ','\'',$(O_TO_EXE)) #'# fix syntax highlight | |
426 | O_TO_EXE_DISP = $(if $(V),"$(O_TO_EXE_STR)"," LD $(@)") | |
427 | O_TO_EXE_CMD = "cmd_$@ = $(O_TO_EXE_STR)" | |
428 | O_TO_EXE_DO = @set -e; \ | |
429 | echo $(O_TO_EXE_DISP); \ | |
430 | $(O_TO_EXE) && \ | |
431 | echo $(O_TO_EXE_CMD) > $(call exe2cmd,$(@)) | |
432 | ||
433 | -include .$(APP).cmd | |
434 | ||
435 | # path where libraries are retrieved | |
436 | LDLIBS_PATH := $(subst -Wl$(comma)-L,,$(filter -Wl$(comma)-L%,$(LDLIBS))) | |
437 | LDLIBS_PATH += $(subst -L,,$(filter -L%,$(LDLIBS))) | |
438 | ||
439 | # list of .a files that are linked to this application | |
440 | LDLIBS_NAMES := $(patsubst -l%,lib%.a,$(filter -l%,$(LDLIBS))) | |
441 | LDLIBS_NAMES += $(patsubst -Wl$(comma)-l%,lib%.a,$(filter -Wl$(comma)-l%,$(LDLIBS))) | |
442 | ||
443 | # list of found libraries files (useful for deps). If not found, the | |
444 | # library is silently ignored and dep won't be checked | |
445 | LDLIBS_FILES := $(sort $(wildcard $(foreach dir,$(LDLIBS_PATH),\ | |
446 | $(addprefix $(dir)/,$(LDLIBS_NAMES))))) | |
447 | ||
448 | # | |
449 | # Compile executable file if needed | |
450 | # | |
451 | $(APP): $(OBJS-y) $(LDLIBS_FILES) $(DEP_$(APP)) $(LDSCRIPT) FORCE | |
452 | @[ -d $(dir $@) ] || mkdir -p $(dir $@) | |
453 | $(if $(D),\ | |
454 | @echo -n "$< -> $@ " ; \ | |
455 | echo -n "file_missing=$(call boolean,$(file_missing)) " ; \ | |
456 | echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_EXE_STR))) " ; \ | |
457 | echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \ | |
458 | echo "depfile_newer=$(call boolean,$(depfile_newer)) ") | |
459 | $(if $(or \ | |
460 | $(file_missing),\ | |
461 | $(call cmdline_changed,$(O_TO_EXE_STR)),\ | |
462 | $(depfile_missing),\ | |
463 | $(depfile_newer)),\ | |
464 | $(O_TO_EXE_DO)) | |
465 | ||
466 | # | |
467 | # install app in $(RTE_OUTPUT)/app | |
468 | # | |
469 | $(RTE_OUTPUT)/app/$(APP): $(APP) | |
470 | @echo " INSTALL-APP $(APP)" | |
471 | @[ -d $(RTE_OUTPUT)/app ] || mkdir -p $(RTE_OUTPUT)/app | |
472 | $(Q)cp -f $(APP) $(RTE_OUTPUT)/app | |
473 | ||
474 | # | |
475 | # install app map file in $(RTE_OUTPUT)/app | |
476 | # | |
477 | $(RTE_OUTPUT)/app/$(APP).map: $(APP) | |
478 | @echo " INSTALL-MAP $(APP).map" | |
479 | @[ -d $(RTE_OUTPUT)/app ] || mkdir -p $(RTE_OUTPUT)/app | |
480 | $(Q)cp -f $(APP).map $(RTE_OUTPUT)/app | |
481 | ||
482 | # | |
483 | # Clean all generated files | |
484 | # | |
485 | .PHONY: clean | |
486 | clean: _postclean | |
487 | $(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) | |
488 | ||
489 | .PHONY: doclean | |
490 | doclean: | |
491 | $(Q)rm -rf $(APP) $(OBJS-all) $(DEPS-all) $(DEPSTMP-all) \ | |
492 | $(CMDS-all) $(INSTALL-FILES-all) .$(APP).cmd $(APP).map | |
493 | ||
494 | ||
495 | include $(RTE_SDK)/mk/internal/rte.compile-post.mk | |
496 | include $(RTE_SDK)/mk/internal/rte.install-post.mk | |
497 | include $(RTE_SDK)/mk/internal/rte.clean-post.mk | |
498 | include $(RTE_SDK)/mk/internal/rte.build-post.mk | |
499 | ||
500 | ifneq ($(wildcard $(RTE_SDK)/mk/target/$(RTE_TARGET)/rte.app.mk),) | |
501 | include $(RTE_SDK)/mk/target/$(RTE_TARGET)/rte.app.mk | |
502 | else | |
503 | include $(RTE_SDK)/mk/target/generic/rte.app.mk | |
504 | endif | |
505 | ||
506 | .PHONY: FORCE | |
507 | FORCE: |