3 # Once done, this will define
10 find_package(PkgConfig QUIET)
12 pkg_check_modules(dpdk QUIET libdpdk)
17 elseif(TARGET dpdk::dpdk)
18 get_target_property(dpdk_INCLUDE_DIRS
19 dpdk::dpdk INTERFACE_INCLUDE_DIRECTORIES)
21 find_path(dpdk_config_INCLUDE_DIR rte_config.h
27 find_path(dpdk_common_INCLUDE_DIR rte_common.h
33 set(dpdk_INCLUDE_DIRS "${dpdk_config_INCLUDE_DIR}")
34 if(NOT dpdk_config_INCLUDE_DIR EQUAL dpdk_common_INCLUDE_DIR)
35 list(APPEND dpdk_INCLUDE_DIRS "${dpdk_common_INCLUDE_DIR}")
72 # for collecting dpdk library targets, it will be used when defining dpdk::dpdk
74 # for list of dpdk library archive paths
77 foreach(c ${components})
78 set(dpdk_lib dpdk::${c})
79 if(TARGET ${dpdk_lib})
80 get_target_property(DPDK_rte_${c}_LIBRARY
81 ${dpdk_lib} IMPORTED_LOCATION)
83 find_library(DPDK_rte_${c}_LIBRARY rte_${c}
89 if(DPDK_rte_${c}_LIBRARY)
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)
98 target_link_libraries(${dpdk_lib} INTERFACE IBVerbs::verbs)
102 list(APPEND _dpdk_libs ${dpdk_lib})
103 list(APPEND dpdk_LIBRARIES ${DPDK_rte_${c}_LIBRARY})
107 mark_as_advanced(dpdk_INCLUDE_DIRS ${dpdk_LIBRARIES})
109 include(FindPackageHandleStandardArgs)
110 find_package_handle_standard_args(dpdk DEFAULT_MSG
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")
123 add_library(dpdk::cflags INTERFACE IMPORTED)
125 set_target_properties(dpdk::cflags PROPERTIES
126 INTERFACE_COMPILE_OPTIONS "${rte_cflags}")
130 if(NOT TARGET dpdk::dpdk)
131 add_library(dpdk::dpdk INTERFACE IMPORTED)
132 find_package(Threads QUIET)
133 list(APPEND _dpdk_libs
136 set_target_properties(dpdk::dpdk PROPERTIES
137 INTERFACE_LINK_LIBRARIES "${_dpdk_libs}"
138 INTERFACE_INCLUDE_DIRECTORIES "${dpdk_INCLUDE_DIRS}")