X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fdpdk%2FCMakeLists.txt;h=af8c80d8fa3adfa2c9e8d54f291dfab8017d329e;hb=548d70de68a4156d5bd4148e50a81555a0ef169f;hp=6c987ecf72b6cff72f3843354f61184d19a33196;hpb=ff426930051664aee1638ccff23c3345b4c129e7;p=vpp.git diff --git a/src/plugins/dpdk/CMakeLists.txt b/src/plugins/dpdk/CMakeLists.txt index 6c987ecf72b..af8c80d8fa3 100644 --- a/src/plugins/dpdk/CMakeLists.txt +++ b/src/plugins/dpdk/CMakeLists.txt @@ -11,99 +11,45 @@ # See the License for the specific language governing permissions and # limitations under the License. -if (CMAKE_CROSSCOMPILING) - # not supported yet - return() -endif() - -############################################################################## -# 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() ############################################################################## -# Find DPDK Version -############################################################################## -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c -" -#include -#include -int main() -{ - printf(\"VERSION=%s\\n\", strchr(rte_version(), ' ') + 1); - printf(\"RTE_PKTMBUF_HEADROOM=%u\\n\", RTE_PKTMBUF_HEADROOM); -#ifdef RTE_LIBRTE_PMD_AESNI_MB - printf(\"RTE_LIBRTE_PMD_AESNI_MB=%u\\n\", RTE_LIBRTE_PMD_AESNI_MB); -#endif -#ifdef RTE_LIBRTE_PMD_AESNI_GCM - printf(\"RTE_LIBRTE_PMD_AESNI_GCM=%u\\n\", RTE_LIBRTE_PMD_AESNI_GCM); -#endif -#ifdef RTE_LIBRTE_MLX4_PMD - printf(\"RTE_LIBRTE_MLX4_PMD=%u\\n\", RTE_LIBRTE_MLX4_PMD); -#endif -#ifdef RTE_LIBRTE_MLX5_PMD - printf(\"RTE_LIBRTE_MLX5_PMD=%u\\n\", RTE_LIBRTE_MLX5_PMD); -#ifdef RTE_LIBRTE_MLX5_DLOPEN_DEPS - printf(\"RTE_LIBRTE_MLX5_DLOPEN_DEPS=%u\\n\", RTE_LIBRTE_MLX5_DLOPEN_DEPS); -#endif -#endif - return 0; -} -") - -try_compile(DPDK_VARS_COMPILED - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c - CMAKE_FLAGS - -DINCLUDE_DIRECTORIES=${DPDK_INCLUDE_DIR} - COPY_FILE ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.bin -) +# Parse DPDK config and version header files +############################################################################## -if(DPDK_VARS_COMPILED) - execute_process( - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ./dpdk_vars.bin - OUTPUT_VARIABLE DPDK_VARS - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - string(REPLACE "\n" ";" DPDK_VARS ${DPDK_VARS}) - foreach(v ${DPDK_VARS}) - string(REPLACE "=" ";" v ${v}) +file(STRINGS ${DPDK_INCLUDE_DIR}/rte_config.h rte_config) +file(STRINGS ${DPDK_INCLUDE_DIR}/rte_version.h rte_version) + +foreach(l ${rte_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) list(GET v 1 value) set(DPDK_${name} ${value}) - endforeach() -endif() + endif() +endforeach() -file(REMOVE - ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.c - ${CMAKE_CURRENT_BINARY_DIR}/dpdk_vars.bin -) +set(DPDK_VERSION + "${DPDK_RTE_VER_YEAR}.${DPDK_RTE_VER_MONTH}.${DPDK_RTE_VER_MINOR}") +############################################################################## +# verify headroom size +############################################################################## if(NOT ${DPDK_RTE_PKTMBUF_HEADROOM} EQUAL ${PRE_DATA_SIZE}) message( FATAL_ERROR @@ -133,7 +79,7 @@ endif() ############################################################################## # libnuma ############################################################################## -dpdk_find_library(NUMA_LIB "numa") +vpp_plugin_find_library(dpdk NUMA_LIB "numa") list(APPEND DPDK_LINK_LIBRARIES ${NUMA_LIB}) ############################################################################## @@ -141,10 +87,10 @@ list(APPEND DPDK_LINK_LIBRARIES ${NUMA_LIB}) ############################################################################## 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") + vpp_plugin_find_library(dpdk IPSECMB_LIB "libIPSec_MB.so") list(APPEND DPDK_LINK_LIBRARIES "${IPSECMB_LIB}") else() - dpdk_find_library(IPSECMB_LIB "libIPSec_MB.a") + vpp_plugin_find_library(dpdk 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") @@ -155,16 +101,12 @@ endif() # Mellanox libraries ############################################################################## if(DPDK_RTE_LIBRTE_MLX4_PMD OR DPDK_RTE_LIBRTE_MLX5_PMD) - dpdk_find_library(MNL_LIB "mnl") + vpp_plugin_find_library(dpdk MNL_LIB "mnl") list(APPEND DPDK_LINK_LIBRARIES "${MNL_LIB}") - if (DPDK_RTE_LIBRTE_MLX5_DLOPEN_DEPS) + if (DPDK_RTE_IBVERBS_LINK_DLOPEN) message(STATUS "DPDK depends on libmnl (Mellanox PMD requirement)") 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 "unsupported DPDK configuration: DPDK Mellanox PMD requires RTE_IBVERBS_LINK_DLOPEN") endif() endif() @@ -176,8 +118,6 @@ add_vpp_plugin(dpdk buffer.c main.c thread.c - api/dpdk_api.c - api/dpdk_test.c device/cli.c device/common.c device/device.c @@ -185,7 +125,6 @@ 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 @@ -200,15 +139,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