]> git.proxmox.com Git - ceph.git/blame - ceph/src/seastar/cmake/Finddpdk.cmake
import quincy beta 17.1.0
[ceph.git] / ceph / src / seastar / cmake / Finddpdk.cmake
CommitLineData
11fdf7f2
TL
1#
2# This file is open source software, licensed to you under the terms
3# of the Apache License, Version 2.0 (the "License"). See the NOTICE file
4# distributed with this work for additional information regarding copyright
5# ownership. You may not use this file except in compliance with the License.
6#
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing,
12# software distributed under the License is distributed on an
13# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14# KIND, either express or implied. See the License for the
15# specific language governing permissions and limitations
16# under the License.
17#
18
19#
20# Copyright (C) 2018 Scylladb, Ltd.
21#
22
23find_path (dpdk_INCLUDE_DIR
24 NAMES rte_atomic.h
25 PATH_SUFFIXES dpdk)
26
27find_library (dpdk_PMD_VMXNET3_UIO_LIBRARY rte_pmd_vmxnet3_uio)
28find_library (dpdk_PMD_I40E_LIBRARY rte_pmd_i40e)
29find_library (dpdk_PMD_IXGBE_LIBRARY rte_pmd_ixgbe)
30find_library (dpdk_PMD_E1000_LIBRARY rte_pmd_e1000)
31find_library (dpdk_PMD_BNXT_LIBRARY rte_pmd_bnxt)
32find_library (dpdk_PMD_RING_LIBRARY rte_pmd_ring)
33find_library (dpdk_PMD_CXGBE_LIBRARY rte_pmd_cxgbe)
34find_library (dpdk_PMD_ENA_LIBRARY rte_pmd_ena)
35find_library (dpdk_PMD_ENIC_LIBRARY rte_pmd_enic)
36find_library (dpdk_PMD_FM10K_LIBRARY rte_pmd_fm10k)
37find_library (dpdk_PMD_NFP_LIBRARY rte_pmd_nfp)
38find_library (dpdk_PMD_QEDE_LIBRARY rte_pmd_qede)
39find_library (dpdk_RING_LIBRARY rte_ring)
40find_library (dpdk_KVARGS_LIBRARY rte_kvargs)
41find_library (dpdk_MEMPOOL_LIBRARY rte_mempool)
42find_library (dpdk_MEMPOOL_RING_LIBRARY rte_mempool_ring)
43find_library (dpdk_PMD_SFC_EFX_LIBRARY rte_pmd_sfc_efx)
44find_library (dpdk_HASH_LIBRARY rte_hash)
45find_library (dpdk_CMDLINE_LIBRARY rte_cmdline)
46find_library (dpdk_MBUF_LIBRARY rte_mbuf)
47find_library (dpdk_CFGFILE_LIBRARY rte_cfgfile)
48find_library (dpdk_EAL_LIBRARY rte_eal)
49find_library (dpdk_ETHDEV_LIBRARY rte_ethdev)
9f95a23c
TL
50find_library (dpdk_NET_LIBRARY rte_net)
51find_library (dpdk_TIMER_LIBRARY rte_timer)
52find_library (dpdk_PCI_LIBRARY rte_pci)
53find_library (dpdk_BUS_PCI_LIBRARY rte_bus_pci)
54find_library (dpdk_BUS_VDEV_LIBRARY rte_bus_vdev)
11fdf7f2
TL
55
56include (FindPackageHandleStandardArgs)
57
9f95a23c
TL
58set (dpdk_REQUIRED
59 dpdk_INCLUDE_DIR
60 dpdk_PMD_VMXNET3_UIO_LIBRARY
61 dpdk_PMD_I40E_LIBRARY
62 dpdk_PMD_IXGBE_LIBRARY
63 dpdk_PMD_E1000_LIBRARY
64 dpdk_PMD_BNXT_LIBRARY
65 dpdk_PMD_RING_LIBRARY
66 dpdk_PMD_CXGBE_LIBRARY
67 dpdk_PMD_ENA_LIBRARY
68 dpdk_PMD_ENIC_LIBRARY
69 dpdk_PMD_NFP_LIBRARY
70 dpdk_PMD_QEDE_LIBRARY
71 dpdk_RING_LIBRARY
72 dpdk_KVARGS_LIBRARY
73 dpdk_MEMPOOL_LIBRARY
74 dpdk_MEMPOOL_RING_LIBRARY
75 dpdk_HASH_LIBRARY
76 dpdk_CMDLINE_LIBRARY
77 dpdk_MBUF_LIBRARY
78 dpdk_CFGFILE_LIBRARY
79 dpdk_EAL_LIBRARY
80 dpdk_ETHDEV_LIBRARY
81 dpdk_NET_LIBRARY
82 dpdk_TIMER_LIBRARY
83 dpdk_PCI_LIBRARY
84 dpdk_BUS_PCI_LIBRARY
85 dpdk_BUS_VDEV_LIBRARY)
86
87# fm10k, sfc_efx driver can only build on x86
88if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
89 set (dpdk_REQUIRED
90 ${dpdk_REQUIRED}
91 dpdk_PMD_FM10K_LIBRARY
92 dpdk_PMD_SFC_EFX_LIBRARY)
93endif()
94
11fdf7f2
TL
95find_package_handle_standard_args (dpdk
96 REQUIRED_VARS
9f95a23c
TL
97 ${dpdk_REQUIRED}
98)
11fdf7f2
TL
99
100if (dpdk_FOUND AND NOT (TARGET dpdk::dpdk))
101 set (dpdk_LIBRARIES
102 ${dpdk_CFGFILE_LIBRARY}
103 ${dpdk_CMDLINE_LIBRARY}
104 ${dpdk_ETHDEV_LIBRARY}
105 ${dpdk_HASH_LIBRARY}
11fdf7f2
TL
106 ${dpdk_MBUF_LIBRARY}
107 ${dpdk_EAL_LIBRARY}
9f95a23c 108 ${dpdk_KVARGS_LIBRARY}
11fdf7f2
TL
109 ${dpdk_MEMPOOL_LIBRARY}
110 ${dpdk_MEMPOOL_RING_LIBRARY}
111 ${dpdk_PMD_BNXT_LIBRARY}
112 ${dpdk_PMD_E1000_LIBRARY}
113 ${dpdk_PMD_ENA_LIBRARY}
114 ${dpdk_PMD_ENIC_LIBRARY}
11fdf7f2
TL
115 ${dpdk_PMD_QEDE_LIBRARY}
116 ${dpdk_PMD_I40E_LIBRARY}
117 ${dpdk_PMD_IXGBE_LIBRARY}
118 ${dpdk_PMD_NFP_LIBRARY}
119 ${dpdk_PMD_RING_LIBRARY}
9f95a23c 120 ${dpdk_PMD_VMXNET3_UIO_LIBRARY})
11fdf7f2 121
9f95a23c
TL
122 if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
123 set (dpdk_LIBRARIES
124 ${dpdk_LIBRARIES}
125 ${dpdk_PMD_FM10K_LIBRARY}
126 ${dpdk_PMD_SFC_EFX_LIBRARY})
127 endif()
11fdf7f2 128
9f95a23c
TL
129 set (dpdk_LIBRARIES
130 ${dpdk_LIBRARIES}
131 ${dpdk_RING_LIBRARY}
132 ${dpdk_NET_LIBRARY}
133 ${dpdk_TIMER_LIBRARY}
134 ${dpdk_PCI_LIBRARY}
135 ${dpdk_BUS_PCI_LIBRARY}
136 ${dpdk_BUS_VDEV_LIBRARY})
11fdf7f2
TL
137
138 #
139 # pmd_vmxnet3_uio
140 #
141
142 add_library (dpdk::pmd_vmxnet3_uio UNKNOWN IMPORTED)
143
144 set_target_properties (dpdk::pmd_vmxnet3_uio
145 PROPERTIES
146 IMPORTED_LOCATION ${dpdk_PMD_VMXNET3_UIO_LIBRARY}
147 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
148
149 #
150 # pmd_i40e
151 #
152
153 add_library (dpdk::pmd_i40e UNKNOWN IMPORTED)
154
155 set_target_properties (dpdk::pmd_i40e
156 PROPERTIES
157 IMPORTED_LOCATION ${dpdk_PMD_I40E_LIBRARY}
11fdf7f2
TL
158 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
159
160 #
161 # pmd_ixgbe
162 #
163
164 add_library (dpdk::pmd_ixgbe UNKNOWN IMPORTED)
165
166 set_target_properties (dpdk::pmd_ixgbe
167 PROPERTIES
168 IMPORTED_LOCATION ${dpdk_PMD_IXGBE_LIBRARY}
11fdf7f2
TL
169 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
170
171 #
172 # pmd_e1000
173 #
174
175 add_library (dpdk::pmd_e1000 UNKNOWN IMPORTED)
176
177 set_target_properties (dpdk::pmd_e1000
178 PROPERTIES
179 IMPORTED_LOCATION ${dpdk_PMD_E1000_LIBRARY}
11fdf7f2
TL
180 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
181
182 #
183 # pmd_bnxt
184 #
185
186 add_library (dpdk::pmd_bnxt UNKNOWN IMPORTED)
187
188 set_target_properties (dpdk::pmd_bnxt
189 PROPERTIES
190 IMPORTED_LOCATION ${dpdk_PMD_BNXT_LIBRARY}
11fdf7f2
TL
191 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
192
193 #
194 # pmd_ring
195 #
196
197 add_library (dpdk::pmd_ring UNKNOWN IMPORTED)
198
199 set_target_properties (dpdk::pmd_ring
200 PROPERTIES
201 IMPORTED_LOCATION ${dpdk_PMD_RING_LIBRARY}
11fdf7f2
TL
202 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
203
204 #
205 # pmd_cxgbe
206 #
207
208 add_library (dpdk::pmd_cxgbe UNKNOWN IMPORTED)
209
210 set_target_properties (dpdk::pmd_cxgbe
211 PROPERTIES
212 IMPORTED_LOCATION ${dpdk_PMD_CXGBE_LIBRARY}
11fdf7f2
TL
213 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
214
215 #
216 # pmd_ena
217 #
218
219 add_library (dpdk::pmd_ena UNKNOWN IMPORTED)
220
221 set_target_properties (dpdk::pmd_ena
222 PROPERTIES
223 IMPORTED_LOCATION ${dpdk_PMD_ENA_LIBRARY}
11fdf7f2
TL
224 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
225
226 #
227 # pmd_enic
228 #
229
230 add_library (dpdk::pmd_enic UNKNOWN IMPORTED)
231
232 set_target_properties (dpdk::pmd_enic
233 PROPERTIES
234 IMPORTED_LOCATION ${dpdk_PMD_ENIC_LIBRARY}
11fdf7f2
TL
235 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
236
237 #
238 # pmd_fm10k
239 #
240
241 add_library (dpdk::pmd_fm10k UNKNOWN IMPORTED)
242
243 set_target_properties (dpdk::pmd_fm10k
244 PROPERTIES
245 IMPORTED_LOCATION ${dpdk_PMD_FM10K_LIBRARY}
11fdf7f2
TL
246 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
247
248 #
249 # pmd_nfp
250 #
251
252 add_library (dpdk::pmd_nfp UNKNOWN IMPORTED)
253
254 set_target_properties (dpdk::pmd_nfp
255 PROPERTIES
256 IMPORTED_LOCATION ${dpdk_PMD_NFP_LIBRARY}
11fdf7f2
TL
257 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
258
259 #
260 # pmd_qede
261 #
262
263 add_library (dpdk::pmd_qede UNKNOWN IMPORTED)
264
265 set_target_properties (dpdk::pmd_qede
266 PROPERTIES
267 IMPORTED_LOCATION ${dpdk_PMD_QEDE_LIBRARY}
11fdf7f2
TL
268 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
269
270 #
271 # pmd_sfc_efx
272 #
273
274 add_library (dpdk::pmd_sfc_efx UNKNOWN IMPORTED)
275
276 set_target_properties (dpdk::pmd_sfc_efx
277 PROPERTIES
278 IMPORTED_LOCATION ${dpdk_PMD_SFC_EFX_LIBRARY}
11fdf7f2
TL
279 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
280
281 #
282 # hash
283 #
284
285 add_library (dpdk::hash UNKNOWN IMPORTED)
286
287 set_target_properties (dpdk::hash
288 PROPERTIES
289 IMPORTED_LOCATION ${dpdk_HASH_LIBRARY}
11fdf7f2
TL
290 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
291
292 #
293 # kvargs
294 #
295
296 add_library (dpdk::kvargs UNKNOWN IMPORTED)
297
298 set_target_properties (dpdk::kvargs
299 PROPERTIES
300 IMPORTED_LOCATION ${dpdk_KVARGS_LIBRARY}
11fdf7f2
TL
301 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
302
303 #
304 # mbuf
305 #
306
307 add_library (dpdk::mbuf UNKNOWN IMPORTED)
308
309 set_target_properties (dpdk::mbuf
310 PROPERTIES
311 IMPORTED_LOCATION ${dpdk_MBUF_LIBRARY}
11fdf7f2
TL
312 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR}
313 INTERFACE_LINK_LIBRARIES dpdk::eal)
314
315 #
9f95a23c 316 # eal (since dpdk 18.08, eal depends on kvargs)
11fdf7f2
TL
317 #
318
319 add_library (dpdk::eal UNKNOWN IMPORTED)
320
321 set_target_properties (dpdk::eal
322 PROPERTIES
323 IMPORTED_LOCATION ${dpdk_EAL_LIBRARY}
9f95a23c
TL
324 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR}
325 INTERFACE_LINK_LIBRARIES dpdk::kvargs)
11fdf7f2
TL
326
327 #
328 # ethdev
329 #
330
331 add_library (dpdk::ethdev UNKNOWN IMPORTED)
332
333 set_target_properties (dpdk::ethdev
334 PROPERTIES
335 IMPORTED_LOCATION ${dpdk_ETHDEV_LIBRARY}
11fdf7f2
TL
336 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR}
337 INTERACE_LINK_LIBRARIES dpdk::eal)
338
339 #
340 # mempool
341 #
342
343 add_library (dpdk::mempool UNKNOWN IMPORTED)
344
345 set_target_properties (dpdk::mempool
346 PROPERTIES
347 IMPORTED_LOCATION ${dpdk_MEMPOOL_LIBRARY}
11fdf7f2
TL
348 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
349
350 #
351 # mempool_ring
352 #
353
354 add_library (dpdk::mempool_ring UNKNOWN IMPORTED)
355
356 set_target_properties (dpdk::mempool_ring
357 PROPERTIES
358 IMPORTED_LOCATION ${dpdk_MEMPOOL_RING_LIBRARY}
11fdf7f2
TL
359 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
360
361 #
362 # ring
363 #
364
365 add_library (dpdk::ring UNKNOWN IMPORTED)
366
367 set_target_properties (dpdk::ring
368 PROPERTIES
369 IMPORTED_LOCATION ${dpdk_RING_LIBRARY}
11fdf7f2
TL
370 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
371
372 #
373 # cmdline
374 #
375
376 add_library (dpdk::cmdline UNKNOWN IMPORTED)
377
378 set_target_properties (dpdk::cmdline
379 PROPERTIES
380 IMPORTED_LOCATION ${dpdk_CMDLINE_LIBRARY}
11fdf7f2
TL
381 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
382
383 #
384 # cfgfile
385 #
386
387 add_library (dpdk::cfgfile UNKNOWN IMPORTED)
388
389 set_target_properties (dpdk::cfgfile
390 PROPERTIES
391 IMPORTED_LOCATION ${dpdk_CFGFILE_LIBRARY}
9f95a23c
TL
392 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
393
394 #
395 # net
396 #
397
398 add_library (dpdk::net UNKNOWN IMPORTED)
399
400 set_target_properties (dpdk::net
401 PROPERTIES
402 IMPORTED_LOCATION ${dpdk_NET_LIBRARY}
403 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
404
405 #
406 # timer
407 #
408
409 add_library (dpdk::timer UNKNOWN IMPORTED)
410
411 set_target_properties (dpdk::timer
412 PROPERTIES
413 IMPORTED_LOCATION ${dpdk_TIMER_LIBRARY}
414 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
415
416 #
417 # pci
418 #
419
420 add_library (dpdk::pci UNKNOWN IMPORTED)
421
422 set_target_properties (dpdk::pci
423 PROPERTIES
424 IMPORTED_LOCATION ${dpdk_PCI_LIBRARY}
425 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
426
427 #
428 # bus_pci
429 #
430
431 add_library (dpdk::bus_pci UNKNOWN IMPORTED)
432
433 set_target_properties (dpdk::bus_pci
434 PROPERTIES
435 IMPORTED_LOCATION ${dpdk_BUS_PCI_LIBRARY}
436 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
437
438 #
439 # bus_vdev
440 #
441
442 add_library (dpdk::bus_vdev UNKNOWN IMPORTED)
443
444 set_target_properties (dpdk::bus_vdev
445 PROPERTIES
446 IMPORTED_LOCATION ${dpdk_BUS_VDEV_LIBRARY}
11fdf7f2
TL
447 INTERFACE_INCLUDE_DIRECTORIES ${dpdk_INCLUDE_DIR})
448
449 #
450 # Summary.
451 #
452
453 add_library (dpdk::dpdk INTERFACE IMPORTED)
454
455 set (_dpdk_libraries
456 dpdk::cfgfile
457 dpdk::cmdline
458 dpdk::eal
459 dpdk::ethdev
460 dpdk::hash
461 dpdk::kvargs
462 dpdk::mbuf
463 dpdk::mempool
464 dpdk::mempool_ring
465 dpdk::pmd_bnxt
466 dpdk::pmd_cxgbe
467 dpdk::pmd_e1000
468 dpdk::pmd_ena
469 dpdk::pmd_enic
11fdf7f2
TL
470 dpdk::pmd_qede
471 dpdk::pmd_i40e
472 dpdk::pmd_ixgbe
473 dpdk::pmd_nfp
474 dpdk::pmd_ring
11fdf7f2 475 dpdk::pmd_vmxnet3_uio
9f95a23c
TL
476 dpdk::ring
477 dpdk::net
478 dpdk::timer
479 dpdk::pci
480 dpdk::bus_pci
481 dpdk::bus_vdev)
482
483 if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
484 set (_dpdk_libraries
485 ${_dpdk_libraries}
486 dpdk::pmd_fm10k
487 dpdk::pmd_sfc_efx)
488 endif()
11fdf7f2
TL
489
490 set_target_properties (dpdk::dpdk
491 PROPERTIES
492 INTERFACE_LINK_LIBRARIES "${_dpdk_libraries}")
493endif ()