]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | # Try to find dpdk |
2 | # | |
3 | # Once done, this will define | |
4 | # | |
9f95a23c | 5 | # dpdk::dpdk |
11fdf7f2 TL |
6 | # dpdk_FOUND |
7 | # dpdk_INCLUDE_DIR | |
8 | # dpdk_LIBRARIES | |
7c673cae | 9 | |
11fdf7f2 TL |
10 | find_package(PkgConfig QUIET) |
11 | if(PKG_CONFIG_FOUND) | |
12 | pkg_check_modules(dpdk QUIET libdpdk) | |
13 | endif() | |
7c673cae | 14 | |
9f95a23c TL |
15 | if(dpdk_INCLUDE_DIRS) |
16 | # good | |
17 | elseif(TARGET dpdk::dpdk) | |
18 | get_target_property(dpdk_INCLUDE_DIRS | |
19 | dpdk::dpdk INTERFACE_INCLUDE_DIRECTORIES) | |
20 | else() | |
11fdf7f2 TL |
21 | find_path(dpdk_config_INCLUDE_DIR rte_config.h |
22 | HINTS | |
23 | ENV DPDK_DIR | |
24 | PATH_SUFFIXES | |
25 | dpdk | |
26 | include) | |
27 | find_path(dpdk_common_INCLUDE_DIR rte_common.h | |
28 | HINTS | |
20effc67 | 29 | ENV DPDK_DIR |
11fdf7f2 TL |
30 | PATH_SUFFIXES |
31 | dpdk | |
32 | include) | |
33 | set(dpdk_INCLUDE_DIRS "${dpdk_config_INCLUDE_DIR}") | |
20effc67 | 34 | if(dpdk_common_INCLUDE_DIR AND NOT dpdk_config_INCLUDE_DIR STREQUAL dpdk_common_INCLUDE_DIR) |
11fdf7f2 TL |
35 | list(APPEND dpdk_INCLUDE_DIRS "${dpdk_common_INCLUDE_DIR}") |
36 | endif() | |
37 | endif() | |
7c673cae | 38 | |
11fdf7f2 TL |
39 | set(components |
40 | bus_pci | |
9f95a23c TL |
41 | bus_vdev |
42 | cfgfile | |
11fdf7f2 TL |
43 | cmdline |
44 | eal | |
45 | ethdev | |
46 | hash | |
47 | kvargs | |
48 | mbuf | |
49 | mempool | |
50 | mempool_ring | |
9f95a23c | 51 | net |
11fdf7f2 TL |
52 | pci |
53 | pmd_af_packet | |
9f95a23c | 54 | pmd_bnxt |
11fdf7f2 | 55 | pmd_bond |
9f95a23c TL |
56 | pmd_cxgbe |
57 | pmd_e1000 | |
58 | pmd_ena | |
59 | pmd_enic | |
11fdf7f2 TL |
60 | pmd_i40e |
61 | pmd_ixgbe | |
62 | pmd_mlx5 | |
9f95a23c TL |
63 | pmd_nfp |
64 | pmd_qede | |
11fdf7f2 | 65 | pmd_ring |
9f95a23c | 66 | pmd_sfc_efx |
11fdf7f2 | 67 | pmd_vmxnet3_uio |
20effc67 TL |
68 | pmd_hns3 |
69 | pmd_hinic | |
9f95a23c TL |
70 | ring |
71 | timer) | |
7c673cae | 72 | |
9f95a23c TL |
73 | # for collecting dpdk library targets, it will be used when defining dpdk::dpdk |
74 | set(_dpdk_libs) | |
75 | # for list of dpdk library archive paths | |
20effc67 | 76 | set(dpdk_LIBRARIES "") |
11fdf7f2 | 77 | foreach(c ${components}) |
9f95a23c TL |
78 | set(dpdk_lib dpdk::${c}) |
79 | if(TARGET ${dpdk_lib}) | |
80 | get_target_property(DPDK_rte_${c}_LIBRARY | |
81 | ${dpdk_lib} IMPORTED_LOCATION) | |
82 | else() | |
83 | find_library(DPDK_rte_${c}_LIBRARY rte_${c} | |
84 | HINTS | |
85 | ENV DPDK_DIR | |
86 | ${dpdk_LIBRARY_DIRS} | |
87 | PATH_SUFFIXES lib) | |
88 | endif() | |
11fdf7f2 | 89 | if(DPDK_rte_${c}_LIBRARY) |
11fdf7f2 TL |
90 | if (NOT TARGET ${dpdk_lib}) |
91 | add_library(${dpdk_lib} UNKNOWN IMPORTED) | |
92 | set_target_properties(${dpdk_lib} PROPERTIES | |
93 | INTERFACE_INCLUDE_DIRECTORIES "${dpdk_INCLUDE_DIRS}" | |
94 | IMPORTED_LOCATION "${DPDK_rte_${c}_LIBRARY}") | |
95 | if(c STREQUAL pmd_mlx5) | |
96 | find_package(verbs QUIET) | |
97 | if(verbs_FOUND) | |
98 | target_link_libraries(${dpdk_lib} INTERFACE IBVerbs::verbs) | |
99 | endif() | |
100 | endif() | |
101 | endif() | |
9f95a23c TL |
102 | list(APPEND _dpdk_libs ${dpdk_lib}) |
103 | list(APPEND dpdk_LIBRARIES ${DPDK_rte_${c}_LIBRARY}) | |
11fdf7f2 TL |
104 | endif() |
105 | endforeach() | |
106 | ||
107 | mark_as_advanced(dpdk_INCLUDE_DIRS ${dpdk_LIBRARIES}) | |
7c673cae FG |
108 | |
109 | include(FindPackageHandleStandardArgs) | |
110 | find_package_handle_standard_args(dpdk DEFAULT_MSG | |
11fdf7f2 TL |
111 | dpdk_INCLUDE_DIRS |
112 | dpdk_LIBRARIES) | |
113 | ||
114 | if(dpdk_FOUND) | |
115 | if(NOT TARGET dpdk::cflags) | |
116 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") | |
117 | set(rte_cflags "-march=core2") | |
118 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM") | |
119 | set(rte_cflags "-march=armv7-a") | |
120 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64") | |
121 | set(rte_cflags "-march=armv8-a+crc") | |
122 | endif() | |
123 | add_library(dpdk::cflags INTERFACE IMPORTED) | |
124 | if (rte_cflags) | |
125 | set_target_properties(dpdk::cflags PROPERTIES | |
126 | INTERFACE_COMPILE_OPTIONS "${rte_cflags}") | |
127 | endif() | |
128 | endif() | |
7c673cae | 129 | |
11fdf7f2 TL |
130 | if(NOT TARGET dpdk::dpdk) |
131 | add_library(dpdk::dpdk INTERFACE IMPORTED) | |
132 | find_package(Threads QUIET) | |
9f95a23c | 133 | list(APPEND _dpdk_libs |
11fdf7f2 | 134 | Threads::Threads |
20effc67 TL |
135 | dpdk::cflags |
136 | numa) | |
11fdf7f2 | 137 | set_target_properties(dpdk::dpdk PROPERTIES |
9f95a23c | 138 | INTERFACE_LINK_LIBRARIES "${_dpdk_libs}" |
11fdf7f2 TL |
139 | INTERFACE_INCLUDE_DIRECTORIES "${dpdk_INCLUDE_DIRS}") |
140 | endif() | |
7c673cae | 141 | endif() |
9f95a23c TL |
142 | |
143 | unset(_dpdk_libs) |