-
Notifications
You must be signed in to change notification settings - Fork 6.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DPDK is a set of libraries and drivers for fast packet processing. (cherry picked from commit 8127cb7b23557f21281186980883fdfb4fa08c47)
- Loading branch information
1 parent
0ef0ddd
commit d92ad53
Showing
7 changed files
with
176 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
CMAKE_MINIMUM_REQUIRED(VERSION 3.9) | ||
PROJECT(dpdk C) | ||
|
||
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}") | ||
LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}") | ||
|
||
INCLUDE(ProcessorCount) | ||
PROCESSORCOUNT(PROCS) | ||
|
||
#ARCH can be: i686, x86_64, ppc_64, arm64 | ||
#MACHINE can be: native, power8, armv8a | ||
#EXECENV can be: linuxapp, bsdapp | ||
#TOOLCHAIN can be: gcc, icc | ||
|
||
SET(ARCH x86_64) | ||
SET(MACHINE native) | ||
SET(EXECENV linuxapp) | ||
SET(TOOLCHAIN gcc) | ||
|
||
IF (CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") | ||
SET(ARCH "i686") | ||
ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") | ||
SET(MACHINE arm8a) | ||
ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") | ||
SET(MACHINE power8) | ||
SET(ARCH ppc_64) | ||
ENDIF () | ||
|
||
IF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") | ||
SET(EXECENV bsdapp) | ||
ENDIF () | ||
|
||
FIND_PACKAGE(Numa REQUIRED) | ||
FIND_PROGRAM(MAKE make) | ||
|
||
SET(DPDK_CFLAGS "-fPIC") | ||
IF (CMAKE_BUILD_TYPE STREQUAL Debug) | ||
STRING(APPEND ${DPDK_CFLAGS} "-O0 -g") | ||
ENDIF () | ||
|
||
SET(DPDK_TARGET ${ARCH}-${MACHINE}-${EXECENV}-${TOOLCHAIN}) | ||
#SET(DPDK_CONFIG O=${CMAKE_BUILD_TYPE}/build T=${DPDK_TARGET}) | ||
SET(DPDK_CONFIG "T=${DPDK_TARGET}") | ||
|
||
IF (SOURCE_PATH) | ||
SET(CMAKE_SOURCE_DIR ${SOURCE_PATH}) | ||
ENDIF () | ||
|
||
ADD_CUSTOM_TARGET(dpdk-configure | ||
COMMAND ${MAKE} config ${DPDK_CONFIG} | ||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/ | ||
VERBATIM | ||
) | ||
|
||
ADD_CUSTOM_TARGET(dpdk ALL | ||
COMMAND ${MAKE} EXTRA_CFLAGS=\"${DPDK_CFLAGS}\" MAKEFLAGS=\"${DPDK_CONFIG} -j ${PROCS}\" | ||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/ | ||
) | ||
|
||
ADD_DEPENDENCIES(dpdk dpdk-configure) | ||
|
||
INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/build/lib | ||
DESTINATION ${CMAKE_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Source: dpdk | ||
Version: 19.02 | ||
Description: A set of libraries and drivers for fast packet processing | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
INCLUDE(FindPackageHandleStandardArgs) | ||
|
||
FIND_PATH(NUMA_ROOT_DIR | ||
NAMES include/numa.h | ||
PATHS ENV NUMA_ROOT | ||
DOC "NUMA library root directory") | ||
|
||
FIND_PATH(NUMA_INCLUDE_DIR | ||
NAMES numa.h | ||
HINTS ${NUMA_ROOT_DIR} | ||
PATH_SUFFIXES include | ||
DOC "NUMA include directory") | ||
|
||
FIND_LIBRARY(NUMA_LIBRARY | ||
NAMES numa | ||
HINTS ${NUMA_ROOT_DIR} | ||
DOC "NUMA library file") | ||
|
||
IF (NUMA_LIBRARY) | ||
GET_FILENAME_COMPONENT(NUMA_LIBRARY_DIR ${NUMA_LIBRARY} PATH) | ||
MARK_AS_ADVANCED(NUMA_INCLUDE_DIR NUMA_LIBRARY_DIR NUMA_LIBRARY) | ||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NUMA REQUIRED_VARS NUMA_ROOT_DIR NUMA_INCLUDE_DIR NUMA_LIBRARY) | ||
ELSE () | ||
SET(NUMA_FOUND FALSE) | ||
MESSAGE(FATAL_ERROR "Numa library not found.\nTry: 'sudo yum install numactl numactl-devel' (or sudo apt-get install libnuma1 libnuma-dev)") | ||
ENDIF () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
|
||
FUNCTION(SET_LIBRARY_TARGET NAMESPACE LIB_NAME DEBUG_LIB_FILE_NAME RELEASE_LIB_FILE_NAME INCLUDE_DIR) | ||
ADD_LIBRARY(${NAMESPACE}::${LIB_NAME} STATIC IMPORTED) | ||
SET_TARGET_PROPERTIES(${NAMESPACE}::${LIB_NAME} PROPERTIES | ||
IMPORTED_CONFIGURATIONS "RELEASE;DEBUG" | ||
IMPORTED_LOCATION_RELEASE "${RELEASE_LIB_FILE_NAME}" | ||
IMPORTED_LOCATION_DEBUG "${DEBUG_LIB_FILE_NAME}" | ||
INTERFACE_INCLUDE_DIRECTORIES "${INCLUDE_DIR}" | ||
) | ||
SET(${NAMESPACE}_${LIB_NAME}_FOUND 1) | ||
ENDFUNCTION() | ||
|
||
GET_FILENAME_COMPONENT(DPDK_ROOT "${CMAKE_CURRENT_LIST_FILE}" PATH) | ||
GET_FILENAME_COMPONENT(DPDK_ROOT "${DPDK_ROOT}" PATH) | ||
GET_FILENAME_COMPONENT(DPDK_ROOT "${DPDK_ROOT}" PATH) | ||
|
||
SET_LIBRARY_TARGET("DPDK" "dpdk" "${DPDK_ROOT}/debug/lib/libdpdk.a" "${DPDK_ROOT}/lib/libdpdk.a" "${DPDK_ROOT}/include/dpdk") | ||
|
||
IF (CMAKE_BUILD_TYPE STREQUAL Debug) | ||
LINK_DIRECTORIES(${DPDK_ROOT}/debug/lib/) | ||
ELSE () | ||
LINK_DIRECTORIES(${DPDK_ROOT}/lib/) | ||
ENDIF () | ||
|
||
FILE(GLOB DPDK_LIBS ${DPDK_ROOT}/lib/librte*.*) | ||
FOREACH (LIB_FILE_NAME ${DPDK_LIBS}) | ||
GET_FILENAME_COMPONENT(LIB_NAME ${LIB_FILE_NAME} NAME_WE) | ||
GET_FILENAME_COMPONENT(FULL_LIB_NAME ${LIB_FILE_NAME} NAME) | ||
STRING(REPLACE "lib" "" LIB_NAME "${LIB_NAME}") | ||
SET_LIBRARY_TARGET("DPDK" "${LIB_NAME}" "${DPDK_ROOT}/debug/lib/${FULL_LIB_NAME}" "${DPDK_ROOT}/lib/${FULL_LIB_NAME}" "${DPDK_ROOT}/include/dpdk") | ||
ENDFOREACH () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
INCLUDE(vcpkg_common_functions) | ||
|
||
IF (NOT VCPKG_CMAKE_SYSTEM_NAME OR NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||
MESSAGE(FATAL_ERROR "Intel dpdk currently only supports Linux/BSD platforms") | ||
ENDIF () | ||
|
||
VCPKG_FROM_GITHUB( | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO DPDK/dpdk | ||
REF v19.02 | ||
SHA512 e0cc7081b163b4e264b65c1abb7e0f8aa29211539cecc5cf52986699b800eb4d4f2026377c3048c5c3bd2791e41f21645bb655797a3300740aa83633fb87626e | ||
HEAD_REF master | ||
) | ||
|
||
FIND_PATH(NUMA_INCLUDE_DIR NAME numa.h | ||
PATHS ENV NUMA_ROOT | ||
HINTS $ENV{HOME}/local/include /opt/local/include /usr/local/include /usr/include | ||
) | ||
IF (NOT NUMA_INCLUDE_DIR) | ||
MESSAGE(FATAL_ERROR "Numa library not found.\nTry: 'sudo yum install numactl numactl-devel' (or sudo apt-get install libnuma1 libnuma-dev)") | ||
ENDIF () | ||
|
||
VCPKG_CONFIGURE_CMAKE( | ||
SOURCE_PATH ${CMAKE_CURRENT_LIST_DIR} | ||
PREFER_NINJA | ||
OPTIONS | ||
-DSOURCE_PATH=${SOURCE_PATH} | ||
) | ||
|
||
VCPKG_INSTALL_CMAKE() | ||
|
||
# Headers are symbolic links here, gather all, resolve and copy real files | ||
FILE(GLOB_RECURSE HEADERS FOLLOW_SYMLINKS "${SOURCE_PATH}/build/include/*") | ||
SET(REAL_FILES "") | ||
FOREACH (HEADER ${HEADERS}) | ||
GET_FILENAME_COMPONENT(REAL_FILE "${HEADER}" REALPATH) | ||
LIST(APPEND REAL_FILES "${REAL_FILE}") | ||
ENDFOREACH () | ||
|
||
FILE(INSTALL ${SOURCE_PATH}/Release/lib/ DESTINATION ${CURRENT_PACKAGES_DIR}/lib) | ||
FILE(INSTALL ${SOURCE_PATH}/Debug/lib/ DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib) | ||
FILE(INSTALL ${REAL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/${PORT}) | ||
FILE(INSTALL ${CMAKE_CURRENT_LIST_DIR}/dpdkConfig.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) | ||
FILE(INSTALL ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) | ||
FILE(INSTALL ${SOURCE_PATH}/license/README DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) | ||
|
||
VCPKG_TEST_CMAKE(PACKAGE_NAME ${PORT}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
The package dpdk is compatible with built-in CMake targets: | ||
|
||
FIND_PACKAGE(dpdk CONFIGURE REQUIRED) | ||
TARGET_LINK_LIBRARIES(main PRIVATE DPDK::dpdk) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters