X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdpdk%2FCMakeLists.txt;h=d63f116b206724a6b56d7b53d43046f541bbc157;hb=25f371ee0;hp=0cbb0b46f6b9966a9833a82e3ea3e964e68d1650;hpb=84caa17a9d77e2986bb996a46d7c4a8a05fc868d;p=vpp.git diff --git a/src/plugins/dpdk/CMakeLists.txt b/src/plugins/dpdk/CMakeLists.txt index 0cbb0b46f6b..d63f116b206 100644 --- a/src/plugins/dpdk/CMakeLists.txt +++ b/src/plugins/dpdk/CMakeLists.txt @@ -11,31 +11,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -############################################################################## -# macros -############################################################################## -macro(dpdk_find_library var name) - find_library(${var} NAMES ${name} ${ARGN}) -if (NOT ${var}) - message(WARNING "-- ${name} library not found - dpdk_plugin disabled") - return() -endif() - message(STATUS "DPDK plugin needs ${name} library - found at ${${var}}") -endmacro() - ############################################################################## # Find lib and include files ############################################################################## find_path(DPDK_INCLUDE_DIR PATH_SUFFIXES dpdk NAMES rte_config.h) -find_library(DPDK_LIB NAMES libdpdk.a) +vpp_plugin_find_library(dpdk DPDK_LIB "libdpdk.a") if (NOT DPDK_INCLUDE_DIR) - message(WARNING "-- DPDK headers not found - dpdk_plugin disabled") + message(WARNING "-- DPDK headers not found - dpdk plugin disabled") return() endif() if (NOT DPDK_LIB) - dpdk_find_library(DPDK_SHLIB "libdpdk.so") + vpp_plugin_find_library(dpdk DPDK_SHLIB "libdpdk.so") set(DPDK_IS_SHARED_LIB 1) message(WARNING "-- linking dpdk plugin against DPDK shared libs") endif() @@ -43,11 +31,11 @@ endif() ############################################################################## # Parse DPDK config and version header files ############################################################################## - file(STRINGS ${DPDK_INCLUDE_DIR}/rte_config.h rte_config) file(STRINGS ${DPDK_INCLUDE_DIR}/rte_version.h rte_version) +file(STRINGS ${DPDK_INCLUDE_DIR}/rte_build_config.h rte_build_config) -foreach(l ${rte_config} ${rte_version}) +foreach(l ${rte_config} ${rte_build_config} ${rte_version}}) if (l MATCHES "^#define[\t ]*RTE_") STRING(REGEX REPLACE "^#define[\t ]*([A-Z1-9_]+)[\t ]*(.+)" "\\1;\\2" v "${l}") list(GET v 0 name) @@ -91,51 +79,43 @@ endif() ############################################################################## # libnuma ############################################################################## -dpdk_find_library(NUMA_LIB "numa") +vpp_plugin_find_library(dpdk NUMA_LIB "numa") list(APPEND DPDK_LINK_LIBRARIES ${NUMA_LIB}) -############################################################################## -# AESNI libraries -############################################################################## -if(DPDK_RTE_LIBRTE_PMD_AESNI_MB OR DPDK_RTE_LIBRTE_PMD_AESNI_GCM) - if(DPDK_IS_SHARED_LIB) - dpdk_find_library(IPSECMB_LIB "libIPSec_MB.so") - list(APPEND DPDK_LINK_LIBRARIES "${IPSECMB_LIB}") - else() - dpdk_find_library(IPSECMB_LIB "libIPSec_MB.a") - get_filename_component(IPSECMB_LIB_DIR ${IPSECMB_LIB} DIRECTORY) - string_append(DPDK_LINK_FLAGS "-L${IPSECMB_LIB_DIR}") - string_append(DPDK_LINK_FLAGS "-Wl,--exclude-libs,libIPSec_MB.a,-l:libIPSec_MB.a") - endif() -endif() - ############################################################################## # Mellanox libraries ############################################################################## if(DPDK_RTE_LIBRTE_MLX4_PMD OR DPDK_RTE_LIBRTE_MLX5_PMD) - dpdk_find_library(MNL_LIB "mnl") - list(APPEND DPDK_LINK_LIBRARIES "${MNL_LIB}") if (DPDK_RTE_IBVERBS_LINK_DLOPEN) message(STATUS "DPDK depends on libmnl (Mellanox PMD requirement)") + vpp_plugin_find_library(dpdk MNL_LIB "mnl") + list(APPEND DPDK_LINK_LIBRARIES "${MNL_LIB}") else() - dpdk_find_library(IBVERBS_LIB "ibverbs") - list(APPEND DPDK_LINK_LIBRARIES "${IBVERBS_LIB}") - dpdk_find_library(MLX5_LIB "mlx5") - list(APPEND DPDK_LINK_LIBRARIES "${MLX5_LIB}") - message(STATUS "DPDK depends on libmnl, libibverbs, libmlx5 (Mellanox PMD requirement)") + message(WARNING "EXPERIMENTAL: DPDK plugin without dlopen mode") + vpp_plugin_find_library(dpdk IBVERBS_LIB "libibverbs.a") + vpp_plugin_find_library(dpdk MLX5_LIB "libmlx5.a") + vpp_plugin_find_library(dpdk MLX4_LIB "libmlx4.a") + vpp_plugin_find_library(dpdk CCAN_LIB "libccan.a") + vpp_plugin_find_library(dpdk RDMA_UTIL_LIB "rdma_util") + string_append(DPDK_LINK_FLAGS "-Wl,--whole-archive,${IBVERBS_LIB},${MLX5_LIB},${MLX4_LIB},${CCAN_LIB},${RDMA_UTIL_LIB},--no-whole-archive") endif() endif() ############################################################################## # DPDK plugin ############################################################################## + +if (${DPDK_VERSION} VERSION_GREATER_EQUAL "20.8.0") + set(DPDK_CRYPTODEV_SOURCE cryptodev_dp_api) +else () + set(DPDK_CRYPTODEV_SOURCE cryptodev) +endif () + add_vpp_plugin(dpdk SOURCES buffer.c main.c thread.c -# api/dpdk_api.c -# api/dpdk_test.c device/cli.c device/common.c device/device.c @@ -143,12 +123,12 @@ add_vpp_plugin(dpdk device/format.c device/init.c device/node.c -# hqos/hqos.c ipsec/cli.c ipsec/crypto_node.c ipsec/esp_decrypt.c ipsec/esp_encrypt.c ipsec/ipsec.c + cryptodev/${DPDK_CRYPTODEV_SOURCE}.c MULTIARCH_SOURCES buffer.c @@ -158,15 +138,8 @@ add_vpp_plugin(dpdk ipsec/esp_decrypt.c ipsec/esp_encrypt.c -# API_FILES -# api/dpdk.api - -# API_TEST_SOURCES -# api/dpdk_test.c - INSTALL_HEADERS device/dpdk.h -# api/dpdk_all_api_h.h ipsec/ipsec.h LINK_FLAGS @@ -178,4 +151,3 @@ add_vpp_plugin(dpdk COMPONENT vpp-plugin-dpdk ) -