]>
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 | |
48 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM) += -lrte_lpm | |
49 | # librte_acl needs --whole-archive because of weak functions | |
50 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += --whole-archive | |
51 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl | |
52 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += --no-whole-archive | |
9f95a23c TL |
53 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += --no-as-needed |
54 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += --whole-archive | |
55 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += -lrte_telemetry -ljansson | |
56 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += --no-whole-archive | |
57 | _LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += --as-needed | |
11fdf7f2 TL |
58 | _LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats |
59 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics | |
60 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats | |
61 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats | |
62 | _LDLIBS-$(CONFIG_RTE_LIBRTE_POWER) += -lrte_power | |
63 | ||
64 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EFD) += -lrte_efd | |
65 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BPF) += -lrte_bpf | |
66 | ifeq ($(CONFIG_RTE_LIBRTE_BPF_ELF),y) | |
67 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BPF) += -lelf | |
68 | endif | |
69 | ||
9f95a23c TL |
70 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IPSEC) += -lrte_ipsec |
71 | ||
11fdf7f2 TL |
72 | _LDLIBS-y += --whole-archive |
73 | ||
74 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CFGFILE) += -lrte_cfgfile | |
75 | _LDLIBS-$(CONFIG_RTE_LIBRTE_GRO) += -lrte_gro | |
76 | _LDLIBS-$(CONFIG_RTE_LIBRTE_GSO) += -lrte_gso | |
77 | _LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash | |
78 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member | |
79 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost | |
80 | _LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs | |
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 TL |
93 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring |
94 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring | |
95 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci | |
96 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal | |
97 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline | |
98 | _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder | |
99 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrte_sched | |
9f95a23c | 100 | _LDLIBS-$(CONFIG_RTE_LIBRTE_RCU) += -lrte_rcu |
11fdf7f2 | 101 | |
9f95a23c | 102 | ifeq ($(CONFIG_RTE_EXEC_ENV_LINUX),y) |
11fdf7f2 TL |
103 | _LDLIBS-$(CONFIG_RTE_LIBRTE_KNI) += -lrte_kni |
104 | endif | |
105 | ||
9f95a23c TL |
106 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO),y) |
107 | _LDLIBS-y += -lrte_common_cpt | |
108 | endif | |
109 | ||
11fdf7f2 TL |
110 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL),yy) |
111 | _LDLIBS-y += -lrte_common_octeontx | |
112 | endif | |
113 | ||
9f95a23c TL |
114 | MVEP-y := $(CONFIG_RTE_LIBRTE_MVPP2_PMD) |
115 | MVEP-y += $(CONFIG_RTE_LIBRTE_MVNETA_PMD) | |
116 | MVEP-y += $(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) | |
117 | ifneq (,$(findstring y,$(MVEP-y))) | |
118 | _LDLIBS-y += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk | |
119 | endif | |
120 | ||
121 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
122 | _LDLIBS-$(CONFIG_RTE_LIBRTE_COMMON_DPAAX) += -lrte_common_dpaax | |
123 | endif | |
124 | ifeq ($(CONFIG_RTE_LIBRTE_FSLMC_BUS),y) | |
125 | _LDLIBS-$(CONFIG_RTE_LIBRTE_COMMON_DPAAX) += -lrte_common_dpaax | |
126 | endif | |
127 | ||
11fdf7f2 TL |
128 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci |
129 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev | |
130 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa | |
131 | ifeq ($(CONFIG_RTE_EAL_VFIO),y) | |
132 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += -lrte_bus_fslmc | |
133 | endif | |
134 | ||
135 | ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) | |
136 | # plugins (link only if static libraries) | |
137 | ||
138 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_BUCKET) += -lrte_mempool_bucket | |
139 | _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += -lrte_mempool_stack | |
140 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
141 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_MEMPOOL) += -lrte_mempool_dpaa | |
142 | endif | |
143 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
144 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL) += -lrte_mempool_dpaa2 | |
145 | endif | |
146 | ||
147 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_PACKET) += -lrte_pmd_af_packet | |
9f95a23c | 148 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AF_XDP) += -lrte_pmd_af_xdp -lbpf |
11fdf7f2 | 149 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ARK_PMD) += -lrte_pmd_ark |
9f95a23c | 150 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += -lrte_pmd_atlantic |
11fdf7f2 TL |
151 | _LDLIBS-$(CONFIG_RTE_LIBRTE_AVP_PMD) += -lrte_pmd_avp |
152 | _LDLIBS-$(CONFIG_RTE_LIBRTE_AXGBE_PMD) += -lrte_pmd_axgbe | |
153 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BNX2X_PMD) += -lrte_pmd_bnx2x -lz | |
154 | _LDLIBS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += -lrte_pmd_bnxt | |
155 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += -lrte_pmd_bond | |
156 | _LDLIBS-$(CONFIG_RTE_LIBRTE_CXGBE_PMD) += -lrte_pmd_cxgbe | |
157 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
158 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_PMD) += -lrte_pmd_dpaa | |
159 | endif | |
160 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
161 | _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += -lrte_pmd_dpaa2 | |
162 | endif | |
163 | _LDLIBS-$(CONFIG_RTE_LIBRTE_E1000_PMD) += -lrte_pmd_e1000 | |
164 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENA_PMD) += -lrte_pmd_ena | |
9f95a23c | 165 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENETC_PMD) += -lrte_pmd_enetc |
11fdf7f2 TL |
166 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += -lrte_pmd_enic |
167 | _LDLIBS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += -lrte_pmd_fm10k | |
168 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += -lrte_pmd_failsafe | |
169 | _LDLIBS-$(CONFIG_RTE_LIBRTE_I40E_PMD) += -lrte_pmd_i40e | |
9f95a23c TL |
170 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IAVF_PMD) += -lrte_pmd_iavf |
171 | _LDLIBS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += -lrte_pmd_ice | |
11fdf7f2 TL |
172 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IXGBE_PMD) += -lrte_pmd_ixgbe |
173 | ifeq ($(CONFIG_RTE_LIBRTE_KNI),y) | |
174 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KNI) += -lrte_pmd_kni | |
175 | endif | |
176 | _LDLIBS-$(CONFIG_RTE_LIBRTE_LIO_PMD) += -lrte_pmd_lio | |
9f95a23c TL |
177 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 |
178 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 -lmnl | |
179 | ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y) | |
180 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -ldl | |
181 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -ldl | |
182 | else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y) | |
183 | LIBS_IBVERBS_STATIC = $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh) | |
184 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += $(LIBS_IBVERBS_STATIC) | |
185 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += $(LIBS_IBVERBS_STATIC) | |
11fdf7f2 | 186 | else |
9f95a23c TL |
187 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -libverbs -lmlx4 |
188 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -libverbs -lmlx5 | |
11fdf7f2 | 189 | endif |
9f95a23c TL |
190 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MVPP2_PMD) += -lrte_pmd_mvpp2 |
191 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MVNETA_PMD) += -lrte_pmd_mvneta | |
11fdf7f2 TL |
192 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += -lrte_pmd_nfp |
193 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL) += -lrte_pmd_null | |
194 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_PCAP) += -lrte_pmd_pcap -lpcap | |
195 | _LDLIBS-$(CONFIG_RTE_LIBRTE_QEDE_PMD) += -lrte_pmd_qede | |
196 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_RING) += -lrte_pmd_ring | |
197 | ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y) | |
198 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SOFTNIC) += -lrte_pmd_softnic | |
199 | endif | |
200 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += -lrte_pmd_sfc_efx | |
201 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SZEDATA2) += -lrte_pmd_szedata2 -lsze2 | |
9f95a23c TL |
202 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD) += -lrte_pmd_nfb |
203 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD) += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --libs netcope-common) | |
11fdf7f2 TL |
204 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += -lrte_pmd_tap |
205 | _LDLIBS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += -lrte_pmd_thunderx_nicvf | |
206 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += -lrte_pmd_vdev_netvsc | |
207 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += -lrte_pmd_virtio | |
208 | ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y) | |
209 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VHOST) += -lrte_pmd_vhost | |
210 | ifeq ($(CONFIG_RTE_EAL_VFIO),y) | |
211 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IFC_PMD) += -lrte_pmd_ifc | |
212 | endif # $(CONFIG_RTE_EAL_VFIO) | |
213 | endif # $(CONFIG_RTE_LIBRTE_VHOST) | |
214 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VMXNET3_PMD) += -lrte_pmd_vmxnet3_uio | |
215 | ||
216 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VMBUS) += -lrte_bus_vmbus | |
217 | _LDLIBS-$(CONFIG_RTE_LIBRTE_NETVSC_PMD) += -lrte_pmd_netvsc | |
218 | ||
219 | ifeq ($(CONFIG_RTE_LIBRTE_BBDEV),y) | |
220 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL) += -lrte_pmd_bbdev_null | |
221 | ||
222 | # TURBO SOFTWARE PMD is dependent on the FLEXRAN library | |
223 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -lrte_pmd_bbdev_turbo_sw | |
224 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_crc -lcrc | |
225 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_turbo -lturbo | |
226 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_rate_matching -lrate_matching | |
227 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -L$(FLEXRAN_SDK)/lib_common -lcommon | |
228 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += -lirc -limf -lstdc++ -lipps | |
229 | endif # CONFIG_RTE_LIBRTE_BBDEV | |
230 | ||
231 | ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y) | |
232 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lrte_pmd_aesni_mb | |
233 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_MB) += -lIPSec_MB | |
234 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lrte_pmd_aesni_gcm | |
235 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_AESNI_GCM) += -lIPSec_MB | |
236 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CCP) += -lrte_pmd_ccp -lcrypto | |
237 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPENSSL) += -lrte_pmd_openssl -lcrypto | |
238 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO) += -lrte_pmd_null_crypto | |
239 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT),y) | |
240 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT_SYM) += -lrte_pmd_qat -lcrypto | |
9f95a23c | 241 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT_ASYM) += -lrte_pmd_qat -lcrypto |
11fdf7f2 TL |
242 | endif # CONFIG_RTE_LIBRTE_PMD_QAT |
243 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -lrte_pmd_snow3g | |
244 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SNOW3G) += -L$(LIBSSO_SNOW3G_PATH)/build -lsso_snow3g | |
245 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -lrte_pmd_kasumi | |
246 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_KASUMI) += -L$(LIBSSO_KASUMI_PATH)/build -lsso_kasumi | |
247 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -lrte_pmd_zuc | |
248 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZUC) += -L$(LIBSSO_ZUC_PATH)/build -lsso_zuc | |
249 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -lrte_pmd_armv8 | |
250 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO) += -L$(ARMV8_CRYPTO_LIB_PATH) -larmv8_crypto | |
251 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO) += -L$(LIBMUSDK_PATH)/lib -lrte_pmd_mvsam_crypto -lmusdk | |
9f95a23c | 252 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO) += -lrte_pmd_octeontx_crypto |
11fdf7f2 | 253 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER) += -lrte_pmd_crypto_scheduler |
9f95a23c | 254 | ifeq ($(CONFIG_RTE_LIBRTE_SECURITY),y) |
11fdf7f2 TL |
255 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) |
256 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC) += -lrte_pmd_dpaa2_sec | |
257 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS | |
258 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
259 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += -lrte_pmd_dpaa_sec | |
9f95a23c | 260 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CAAM_JR) += -lrte_pmd_caam_jr |
11fdf7f2 | 261 | endif # CONFIG_RTE_LIBRTE_DPAA_BUS |
9f95a23c | 262 | endif # CONFIG_RTE_LIBRTE_SECURITY |
11fdf7f2 TL |
263 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto |
264 | endif # CONFIG_RTE_LIBRTE_CRYPTODEV | |
265 | ||
266 | ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y) | |
267 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp | |
268 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal | |
269 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF) += -lrte_pmd_octeontx_zip | |
270 | # Link QAT driver if it has not been linked yet | |
271 | ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT_SYM),n) | |
272 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat | |
273 | endif # CONFIG_RTE_LIBRTE_PMD_QAT_SYM | |
274 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lrte_pmd_zlib | |
275 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lz | |
276 | endif # CONFIG_RTE_LIBRTE_COMPRESSDEV | |
277 | ||
278 | ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y) | |
279 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV) += -lrte_pmd_skeleton_event | |
280 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += -lrte_pmd_sw_event | |
9f95a23c | 281 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV) += -lrte_pmd_dsw_event |
11fdf7f2 TL |
282 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += -lrte_pmd_octeontx_ssovf |
283 | ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y) | |
284 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV) += -lrte_pmd_dpaa_event | |
285 | endif # CONFIG_RTE_LIBRTE_DPAA_BUS | |
286 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
287 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV) += -lrte_pmd_dpaa2_event | |
288 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS | |
289 | ||
290 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += -lrte_mempool_octeontx | |
291 | _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX_PMD) += -lrte_pmd_octeontx | |
292 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_OPDL_EVENTDEV) += -lrte_pmd_opdl_event | |
293 | endif # CONFIG_RTE_LIBRTE_EVENTDEV | |
294 | ||
295 | ifeq ($(CONFIG_RTE_LIBRTE_RAWDEV),y) | |
296 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV) += -lrte_pmd_skeleton_rawdev | |
297 | ifeq ($(CONFIG_RTE_EAL_VFIO)$(CONFIG_RTE_LIBRTE_FSLMC_BUS),yy) | |
298 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_CMDIF_RAWDEV) += -lrte_pmd_dpaa2_cmdif | |
299 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV) += -lrte_pmd_dpaa2_qdma | |
300 | endif # CONFIG_RTE_LIBRTE_FSLMC_BUS | |
301 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += -lrte_bus_ifpga | |
302 | ifeq ($(CONFIG_RTE_LIBRTE_IFPGA_BUS),y) | |
303 | _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_IFPGA_RAWDEV) += -lrte_pmd_ifpga_rawdev | |
9f95a23c | 304 | _LDLIBS-$(CONFIG_RTE_LIBRTE_IPN3KE_PMD) += -lrte_pmd_ipn3ke |
11fdf7f2 TL |
305 | endif # CONFIG_RTE_LIBRTE_IFPGA_BUS |
306 | endif # CONFIG_RTE_LIBRTE_RAWDEV | |
307 | ||
308 | endif # !CONFIG_RTE_BUILD_SHARED_LIBS | |
309 | ||
310 | _LDLIBS-y += --no-whole-archive | |
311 | ||
312 | ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n) | |
313 | # The static libraries do not know their dependencies. | |
314 | # So linking with static library requires explicit dependencies. | |
315 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrt | |
9f95a23c | 316 | ifeq ($(CONFIG_RTE_EXEC_ENV_LINUX)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy) |
11fdf7f2 TL |
317 | _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lnuma |
318 | endif | |
11fdf7f2 TL |
319 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lm |
320 | _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED) += -lrt | |
321 | _LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lm | |
322 | _LDLIBS-$(CONFIG_RTE_LIBRTE_METER) += -lm | |
323 | ifeq ($(CONFIG_RTE_LIBRTE_VHOST_NUMA),y) | |
324 | _LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lnuma | |
325 | endif | |
326 | _LDLIBS-$(CONFIG_RTE_PORT_PCAP) += -lpcap | |
327 | endif # !CONFIG_RTE_BUILD_SHARED_LIBS | |
328 | ||
329 | _LDLIBS-y += $(EXECENV_LDLIBS) | |
330 | ||
331 | LDLIBS += $(_LDLIBS-y) $(CPU_LDLIBS) $(EXTRA_LDLIBS) | |
332 | ||
333 | # all the words except the first one | |
334 | allbutfirst = $(wordlist 2,$(words $(1)),$(1)) | |
335 | ||
336 | # Eliminate duplicates without sorting, only keep the last occurrence | |
337 | filter-libs = \ | |
338 | $(if $(1),$(strip\ | |
339 | $(if \ | |
340 | $(and \ | |
341 | $(filter $(firstword $(1)),$(call allbutfirst,$(1))),\ | |
342 | $(filter -l%,$(firstword $(1)))),\ | |
343 | ,\ | |
344 | $(firstword $(1))) \ | |
345 | $(call filter-libs,$(call allbutfirst,$(1))))) | |
346 | ||
347 | LDLIBS := $(call filter-libs,$(LDLIBS)) | |
348 | ||
349 | ifeq ($(RTE_DEVEL_BUILD)$(CONFIG_RTE_BUILD_SHARED_LIB),yy) | |
350 | LDFLAGS += -rpath=$(RTE_SDK_BIN)/lib | |
351 | endif | |
352 | ||
353 | MAPFLAGS = -Map=$@.map --cref | |
354 | ||
355 | .PHONY: all | |
356 | all: install | |
357 | ||
358 | .PHONY: install | |
359 | install: build _postinstall | |
360 | ||
361 | _postinstall: build | |
362 | ||
363 | .PHONY: build | |
364 | build: _postbuild | |
365 | ||
366 | exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1)))) | |
367 | ||
368 | ifeq ($(LINK_USING_CC),1) | |
369 | O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $(OBJS-y) $(call linkerprefix, \ | |
370 | $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ | |
371 | $(MAPFLAGS)) | |
372 | else | |
373 | O_TO_EXE = $(LD) -o $@ $(OBJS-y) \ | |
374 | $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \ | |
375 | $(MAPFLAGS) | |
376 | endif | |
377 | O_TO_EXE_STR = $(subst ','\'',$(O_TO_EXE)) #'# fix syntax highlight | |
378 | O_TO_EXE_DISP = $(if $(V),"$(O_TO_EXE_STR)"," LD $(@)") | |
379 | O_TO_EXE_CMD = "cmd_$@ = $(O_TO_EXE_STR)" | |
380 | O_TO_EXE_DO = @set -e; \ | |
381 | echo $(O_TO_EXE_DISP); \ | |
382 | $(O_TO_EXE) && \ | |
383 | echo $(O_TO_EXE_CMD) > $(call exe2cmd,$(@)) | |
384 | ||
385 | -include .$(APP).cmd | |
386 | ||
387 | # path where libraries are retrieved | |
388 | LDLIBS_PATH := $(subst -Wl$(comma)-L,,$(filter -Wl$(comma)-L%,$(LDLIBS))) | |
389 | LDLIBS_PATH += $(subst -L,,$(filter -L%,$(LDLIBS))) | |
390 | ||
391 | # list of .a files that are linked to this application | |
392 | LDLIBS_NAMES := $(patsubst -l%,lib%.a,$(filter -l%,$(LDLIBS))) | |
393 | LDLIBS_NAMES += $(patsubst -Wl$(comma)-l%,lib%.a,$(filter -Wl$(comma)-l%,$(LDLIBS))) | |
394 | ||
395 | # list of found libraries files (useful for deps). If not found, the | |
396 | # library is silently ignored and dep won't be checked | |
397 | LDLIBS_FILES := $(sort $(wildcard $(foreach dir,$(LDLIBS_PATH),\ | |
398 | $(addprefix $(dir)/,$(LDLIBS_NAMES))))) | |
399 | ||
400 | # | |
401 | # Compile executable file if needed | |
402 | # | |
403 | $(APP): $(OBJS-y) $(LDLIBS_FILES) $(DEP_$(APP)) $(LDSCRIPT) FORCE | |
404 | @[ -d $(dir $@) ] || mkdir -p $(dir $@) | |
405 | $(if $(D),\ | |
406 | @echo -n "$< -> $@ " ; \ | |
407 | echo -n "file_missing=$(call boolean,$(file_missing)) " ; \ | |
408 | echo -n "cmdline_changed=$(call boolean,$(call cmdline_changed,$(O_TO_EXE_STR))) " ; \ | |
409 | echo -n "depfile_missing=$(call boolean,$(depfile_missing)) " ; \ | |
410 | echo "depfile_newer=$(call boolean,$(depfile_newer)) ") | |
411 | $(if $(or \ | |
412 | $(file_missing),\ | |
413 | $(call cmdline_changed,$(O_TO_EXE_STR)),\ | |
414 | $(depfile_missing),\ | |
415 | $(depfile_newer)),\ | |
416 | $(O_TO_EXE_DO)) | |
417 | ||
418 | # | |
419 | # install app in $(RTE_OUTPUT)/app | |
420 | # | |
421 | $(RTE_OUTPUT)/app/$(APP): $(APP) | |
422 | @echo " INSTALL-APP $(APP)" | |
423 | @[ -d $(RTE_OUTPUT)/app ] || mkdir -p $(RTE_OUTPUT)/app | |
424 | $(Q)cp -f $(APP) $(RTE_OUTPUT)/app | |
425 | ||
426 | # | |
427 | # install app map file in $(RTE_OUTPUT)/app | |
428 | # | |
429 | $(RTE_OUTPUT)/app/$(APP).map: $(APP) | |
430 | @echo " INSTALL-MAP $(APP).map" | |
431 | @[ -d $(RTE_OUTPUT)/app ] || mkdir -p $(RTE_OUTPUT)/app | |
432 | $(Q)cp -f $(APP).map $(RTE_OUTPUT)/app | |
433 | ||
434 | # | |
435 | # Clean all generated files | |
436 | # | |
437 | .PHONY: clean | |
438 | clean: _postclean | |
439 | $(Q)rm -f $(_BUILD_TARGETS) $(_INSTALL_TARGETS) $(_CLEAN_TARGETS) | |
440 | ||
441 | .PHONY: doclean | |
442 | doclean: | |
443 | $(Q)rm -rf $(APP) $(OBJS-all) $(DEPS-all) $(DEPSTMP-all) \ | |
444 | $(CMDS-all) $(INSTALL-FILES-all) .$(APP).cmd $(APP).map | |
445 | ||
446 | ||
447 | include $(RTE_SDK)/mk/internal/rte.compile-post.mk | |
448 | include $(RTE_SDK)/mk/internal/rte.install-post.mk | |
449 | include $(RTE_SDK)/mk/internal/rte.clean-post.mk | |
450 | include $(RTE_SDK)/mk/internal/rte.build-post.mk | |
451 | ||
452 | ifneq ($(wildcard $(RTE_SDK)/mk/target/$(RTE_TARGET)/rte.app.mk),) | |
453 | include $(RTE_SDK)/mk/target/$(RTE_TARGET)/rte.app.mk | |
454 | else | |
455 | include $(RTE_SDK)/mk/target/generic/rte.app.mk | |
456 | endif | |
457 | ||
458 | .PHONY: FORCE | |
459 | FORCE: |