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}/)