54 lines
2.6 KiB
CMake
54 lines
2.6 KiB
CMake
cmake_minimum_required(VERSION 3.10.0)
|
|
project(ppd)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/msg/msg.pb.cc
|
|
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/msg/
|
|
COMMAND protoc --cpp_out=${CMAKE_CURRENT_BINARY_DIR}/msg/ --proto_path=${CMAKE_CURRENT_SOURCE_DIR}/msg/ msg.proto
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/msg/msg.proto)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(rocksdb rocksdb)
|
|
pkg_check_modules(protobuf REQUIRED protobuf)
|
|
|
|
|
|
if (${ENABLE_FSTACK} MATCHES "y")
|
|
pkg_check_modules(dpdk REQUIRED libdpdk)
|
|
pkg_check_modules(bsdtopo REQUIRED bsdtopo)
|
|
pkg_check_modules(ssl REQUIRED libssl)
|
|
include_directories(${dpdk_INCLUDE_DIRS})
|
|
include_directories(${ssl_INCLUDE_DIRS})
|
|
include_directories(${bsdtopo_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
include_directories(${rocksdb_INCLUDE_DIRS})
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/msg)
|
|
include_directories(${protobuf_INCLUDE_DIRS})
|
|
|
|
set(CFLAGS -Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-variable -std=c++17 -O2 -g)
|
|
|
|
add_executable(dismember ${CMAKE_CURRENT_SOURCE_DIR}/dismember/dismember.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/dismember/Generator.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/dismember/reqgen.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/dismember/util.cc
|
|
${CMAKE_CURRENT_BINARY_DIR}/msg/msg.pb.cc)
|
|
target_link_libraries(dismember ${protobuf_LINK_LIBRARIES} ${rocksdb_LINK_LIBRARIES} bz2 z pthread)
|
|
target_compile_options(dismember PRIVATE ${CFLAGS})
|
|
|
|
add_executable(ppd ${CMAKE_CURRENT_SOURCE_DIR}/ppd/ppd.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ppd/reqproc.cc
|
|
${CMAKE_CURRENT_BINARY_DIR}/msg/msg.pb.cc)
|
|
target_link_libraries(ppd ${protobuf_LINK_LIBRARIES} ${rocksdb_LINK_LIBRARIES} bz2 z pthread)
|
|
target_compile_options(ppd PRIVATE ${CFLAGS})
|
|
|
|
if (${ENABLE_FSTACK} MATCHES "y")
|
|
add_executable(ppd_ff ${CMAKE_CURRENT_SOURCE_DIR}/ppd_ff/ppd.cc
|
|
${CMAKE_CURRENT_SOURCE_DIR}/ppd_ff/reqproc.cc
|
|
${CMAKE_CURRENT_BINARY_DIR}/msg/msg.pb.cc)
|
|
target_link_libraries(ppd_ff ${protobuf_LINK_LIBRARIES} fstack ${ssl_LINK_LIBRARIES} bz2 z crypto ${dpdk_LIBRARIES} ${bsdtopo_LIBRARIES} librte_net_bond.a librte_bus_vdev.a)
|
|
target_link_directories(ppd_ff PRIVATE /usr/local/lib ${dpdk_LIBRARY_DIRS} ${bsdtopo_LIBRARY_DIRS})
|
|
target_compile_options(ppd_ff PRIVATE ${CFLAGS} ${dpdk_CFLAGS})
|
|
endif()
|