Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions CMake/Finddpdk.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
find_package(PkgConfig REQUIRED)

pkg_check_modules(DPDK REQUIRED libdpdk)

set(DPDK_FOUND_LIBRARIES)
set(DPDK_LIBRARY_NAMES
rte_bus_pci
rte_bus_vdev
rte_cmdline
rte_compressdev
rte_cryptodev
rte_eal
rte_ethdev
rte_hash
rte_kvargs
rte_mbuf
rte_mempool
rte_mempool_ring
rte_meter
rte_net
rte_pci
rte_power
rte_rcu
rte_reorder
rte_ring
rte_security
rte_telemetry
rte_timer
rte_vhost
rte_kni
rte_net_bond
)
foreach(LIB_NAME IN LISTS DPDK_LIBRARY_NAMES)
find_library(FOUND_${LIB_NAME} NAMES ${LIB_NAME} PATHS ${DPDK_LIBRARY_DIRS} NO_DEFAULT_PATH)
if(FOUND_${LIB_NAME})
list(APPEND DPDK_FOUND_LIBRARIES ${FOUND_${LIB_NAME}})
else()
message(WARNING "Could not find DPDK library ${LIB_NAME}")
endif()
endforeach()

set(DPDK_LIBRARIES ${DPDK_FOUND_LIBRARIES})

find_package_handle_standard_args(dpdk DEFAULT_MSG DPDK_LIBRARIES DPDK_INCLUDE_DIRS)

mark_as_advanced(DPDK_LIBRARIES DPDK_INCLUDE_DIRS)
6 changes: 3 additions & 3 deletions CMake/Findfstack.cmake
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
find_package(PkgConfig REQUIRED)

pkg_check_modules(DPDK REQUIRED libdpdk)
# pkg_check_modules(DPDK REQUIRED libdpdk)

find_path(FSTACK_INCLUDE_DIRS NAMES ff_api.h PATHS /usr/local/include NO_DEFAULT_PATH)

find_library(FSTACK_LIBRARIES NAMES fstack PATHS /usr/local/lib NO_DEFAULT_PATH)

set(FSTACK_INCLUDE_DIRS ${FSTACK_INCLUDE_DIRS} ${DPDK_INCLUDE_DIRS})
# set(FSTACK_INCLUDE_DIRS ${FSTACK_INCLUDE_DIRS} ${DPDK_INCLUDE_DIRS})

set(FSTACK_LIBRARIES ${FSTACK_LIBRARIES} ${DPDK_STATIC_LDFLAGS})
# set(FSTACK_LIBRARIES ${FSTACK_LIBRARIES} ${DPDK_STATIC_LDFLAGS})

find_package_handle_standard_args(fstack DEFAULT_MSG FSTACK_LIBRARIES FSTACK_INCLUDE_DIRS)

Expand Down
62 changes: 7 additions & 55 deletions CMake/Findspdk.cmake
Original file line number Diff line number Diff line change
@@ -1,57 +1,7 @@
find_package(PkgConfig REQUIRED)

set(SPDK_ROOT ~/spdk/spdk_v21.04.x)

set(DPDK_INCLUDE_DIRS ${SPDK_ROOT}/dpdk/build/include/)
set(SPDK_INCLUDE_DIRS ${SPDK_ROOT}/build/include/)

set(ISAL_LIBRARIES_PATH ${SPDK_ROOT}/isa-l/.libs/)
set(DPDK_LIBRARIES_PATH ${SPDK_ROOT}/dpdk/build/lib/)
set(SPDK_LIBRARIES_PATH ${SPDK_ROOT}/build/lib/)

find_library(ISAL_LIBRARY NAMES isal PATHS ${ISAL_LIBRARIES_PATH} NO_DEFAULT_PATH)
if(NOT ISAL_LIBRARY)
message(WARNING "isal library not found")
endif()

set(DPDK_LIBRARIES)
set(DPDK_LIBRARY_NAMES
rte_bus_pci
rte_bus_vdev
rte_cmdline
rte_compressdev
rte_cryptodev
rte_eal
rte_ethdev
rte_hash
rte_kvargs
rte_mbuf
rte_mempool
rte_mempool_ring
rte_meter
rte_net
rte_pci
rte_power
rte_rcu
rte_reorder
rte_ring
rte_security
rte_telemetry
rte_timer
rte_vhost
)
foreach(LIB_NAME IN LISTS DPDK_LIBRARY_NAMES)
find_library(FOUND_${LIB_NAME} NAMES ${LIB_NAME} PATHS ${DPDK_LIBRARIES_PATH} NO_DEFAULT_PATH)
if(FOUND_${LIB_NAME})
list(APPEND DPDK_LIBRARIES ${FOUND_${LIB_NAME}})
else()
message(WARNING "Could not find DPDK library ${LIB_NAME}")
endif()
endforeach()


set(SPDK_LIBRARIES)
set(SPDK_LIBRARY_NAMES
set(SPDK_LIBRARY_NAMES
spdk_accel_ioat
spdk_accel
spdk_bdev_aio
Expand Down Expand Up @@ -110,19 +60,21 @@ spdk_virtio
spdk_vmd
)
foreach(LIB_NAME IN LISTS SPDK_LIBRARY_NAMES)
find_library(FOUND_${LIB_NAME} NAMES ${LIB_NAME} PATHS ${SPDK_LIBRARIES_PATH} NO_DEFAULT_PATH)
find_library(FOUND_${LIB_NAME} NAMES ${LIB_NAME} PATHS /usr/local/lib NO_DEFAULT_PATH)
if(FOUND_${LIB_NAME})
list(APPEND SPDK_LIBRARIES ${FOUND_${LIB_NAME}})
else()
message(WARNING "SPDK library not found: ${LIB_NAME}")
endif()
endforeach()

find_path(SPDK_INCLUDE_DIRS NAMES spdk/env.h PATHS /usr/local/include NO_DEFAULT_PATH)


set(SPDK_INCLUDE_DIRS ${SPDK_INCLUDE_DIRS} ${DPDK_INCLUDE_DIRS})
pkg_check_modules(ISAL REQUIRED libisal)

set(SPDK_LIBRARIES ${SPDK_LIBRARIES} ${DPDK_LIBRARIES} ${ISAL_LIBRARY})
set(SPDK_LIBRARIES ${SPDK_LIBRARIES} ${ISAL_STATIC_LDFLAGS})

find_package_handle_standard_args(spdk DEFAULT_MSG SPDK_LIBRARIES SPDK_INCLUDE_DIRS)
find_package_handle_standard_args(spdk DEFAULT_MSG SPDK_INCLUDE_DIRS SPDK_LIBRARIES)

mark_as_advanced(SPDK_INCLUDE_DIRS SPDK_LIBRARIES)
179 changes: 177 additions & 2 deletions CMake/build-from-src.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ function(build_from_src [dep])
set(OPENSSL_ROOT_DIR ${BINARY_DIR} PARENT_SCOPE)
set(OPENSSL_INCLUDE_DIRS ${BINARY_DIR}/include PARENT_SCOPE)
set(OPENSSL_LIBRARIES ${BINARY_DIR}/lib/libssl.a ${BINARY_DIR}/lib/libcrypto.a PARENT_SCOPE)
set(OPENSSL_LIBRARY_DIR ${BINARY_DIR}/lib)

elseif (dep STREQUAL "curl")
if (${OPENSSL_ROOT_DIR} STREQUAL "")
Expand All @@ -105,9 +106,9 @@ function(build_from_src [dep])
curl
URL ${PHOTON_CURL_SOURCE}
URL_MD5 1211d641ae670cebce361ab6a7c6acff
CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DCMAKE_INSTALL_PREFIX=${BINARY_DIR}
CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} -DCMAKE_INSTALL_PREFIX=${BINARY_DIR} -DCMAKE_INSTALL_LIBDIR=lib
-DBUILD_SHARED_LIBS=OFF -DHTTP_ONLY=ON -DBUILD_CURL_EXE=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCURL_USE_LIBSSH2=OFF
)
add_dependencies(curl openssl)
set(CURL_INCLUDE_DIRS ${BINARY_DIR}/include PARENT_SCOPE)
Expand Down Expand Up @@ -136,6 +137,180 @@ function(build_from_src [dep])
)
# Next, use rdmacore_STATIC_LIBRARIES, rdmacore_LIBRARY_DIRS, rdmacore_INCLUDE_DIRS accordingly

elseif (dep STREQUAL "dpdk")
set(BINARY_DIR ${PROJECT_BINARY_DIR}/dpdk-build)
ExternalProject_Add(
dpdk
URL ${PHOTON_DPDK_SOURCE}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${BINARY_DIR}
UPDATE_DISCONNECTED ON
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND meson build --prefix ${BINARY_DIR} -Dc_args=-fPIC -Dlibdir=lib
BUILD_COMMAND ninja -C build
INSTALL_COMMAND meson install --no-rebuild -C build
LOG_CONFIGURE ON
LOG_BUILD ON
LOG_INSTALL ON
)
set(DPDK_ROOT ${BINARY_DIR})
set(DPDK_INCLUDE_DIRS ${DPDK_ROOT}/include)
set(DPDK_LIBRARY_DIR ${DPDK_ROOT}/lib)
set(DPDK_LIBRARY_NAMES
rte_bus_pci
rte_bus_vdev
rte_cmdline
rte_compressdev
rte_cryptodev
rte_eal
rte_ethdev
rte_hash
rte_kvargs
rte_mbuf
rte_kni
rte_mempool
rte_mempool_ring
rte_meter
rte_net
rte_net_bond
rte_pci
rte_power
rte_rcu
rte_reorder
rte_ring
rte_security
rte_telemetry
rte_timer
rte_vhost
)
foreach(LIB_NAME IN LISTS DPDK_LIBRARY_NAMES)
list(APPEND DPDK_LIBRARIES ${DPDK_LIBRARY_DIR}/lib${LIB_NAME}.so)
endforeach()
set(DPDK_INCLUDE_DIRS ${DPDK_INCLUDE_DIRS} PARENT_SCOPE)
set(DPDK_LIBRARY_DIR ${DPDK_LIBRARY_DIR} PARENT_SCOPE)
set(DPDK_LIBRARIES ${DPDK_LIBRARIES} PARENT_SCOPE)

elseif (dep STREQUAL "spdk")
set(BINARY_DIR ${PROJECT_BINARY_DIR}/spdk-build)
ExternalProject_Add(
isa-l
URL ${PHOTON_ISAL_SOURCE}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${BINARY_DIR}
DEPENDS dpdk
UPDATE_DISCONNECTED ON
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure --prefix=${BINARY_DIR} --libdir=${BINARY_DIR}/lib
BUILD_COMMAND $(MAKE)
INSTALL_COMMAND $(MAKE) install
LOG_CONFIGURE ON
LOG_BUILD ON
LOG_INSTALL ON
)
ExternalProject_Add(
spdk
URL ${PHOTON_SPDK_SOURCE}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${BINARY_DIR}
DEPENDS dpdk isa-l
UPDATE_DISCONNECTED ON
BUILD_IN_SOURCE ON
CONFIGURE_COMMAND cp -rf ${PROJECT_BINARY_DIR}/isa-l-prefix/src/isa-l ${PROJECT_BINARY_DIR}/spdk-prefix/src/spdk/
COMMAND ./configure --with-dpdk=${PROJECT_BINARY_DIR}/dpdk-build/ --with-isal --disable-tests --disable-unit-tests --disable-examples --with-shared --prefix=${BINARY_DIR}
BUILD_COMMAND $(MAKE) -j
INSTALL_COMMAND $(MAKE) install
LOG_CONFIGURE ON
LOG_BUILD ON
LOG_INSTALL ON
)
set(SPDK_ROOT ${BINARY_DIR})
set(SPDK_INCLUDE_DIRS ${SPDK_ROOT}/include)
set(SPDK_LIBRARY_DIR ${SPDK_ROOT}/lib)
set(SPDK_LIBRARIES)
set(SPDK_LIBRARY_NAMES
spdk_accel_ioat
spdk_accel
spdk_bdev_aio
spdk_bdev_delay
spdk_bdev_error
spdk_bdev_ftl
spdk_bdev_gpt
spdk_bdev_lvol
spdk_bdev_malloc
spdk_bdev_null
spdk_bdev_nvme
spdk_bdev_passthru
spdk_bdev
spdk_bdev_raid
spdk_bdev_split
spdk_bdev_virtio
spdk_bdev_zone_block
spdk_blob_bdev
spdk_blobfs_bdev
spdk_blobfs
spdk_blob
spdk_conf
spdk_env_dpdk
spdk_env_dpdk_rpc
spdk_event_accel
spdk_event_bdev
spdk_event_iscsi
spdk_event_nbd
spdk_event_net
spdk_event_nvmf
spdk_event
spdk_event_scsi
spdk_event_sock
spdk_event_vhost
spdk_event_vmd
spdk_ftl
spdk_ioat
spdk_iscsi
spdk_json
spdk_jsonrpc
spdk_lvol
spdk_nbd
spdk_net
spdk_notify
spdk_nvme
spdk_nvmf
spdk_rpc
spdk_scsi
spdk_sock
spdk_sock_posix
spdk_thread
spdk_trace
spdk_util
spdk_vhost
spdk_virtio
spdk_vmd
isal
)
foreach(LIB_NAME IN LISTS SPDK_LIBRARY_NAMES)
list(APPEND SPDK_LIBRARIES ${SPDK_LIBRARY_DIR}/lib${LIB_NAME}.so)
endforeach()

set(SPDK_INCLUDE_DIRS ${SPDK_INCLUDE_DIRS} ${DPDK_INCLUDE_DIRS} PARENT_SCOPE)
set(SPDK_LIBRARY_DIR ${SPDK_LIBRARY_DIR} PARENT_SCOPE)
set(SPDK_LIBRARIES ${SPDK_LIBRARIES} ${DPDK_LIBRARIES} PARENT_SCOPE)

elseif (dep STREQUAL "fstack")
set(BINARY_DIR ${PROJECT_BINARY_DIR}/fstack-build)
ExternalProject_Add(
fstack
URL ${PHOTON_FSTACK_SOURCE}
DEPENDS dpdk
UPDATE_DISCONNECTED ON
BUILD_IN_SOURCE ON
SOURCE_SUBDIR lib
CONFIGURE_COMMAND mkdir -p ${BINARY_DIR}/bin COMMAND mkdir -p ${BINARY_DIR}/include COMMAND mkdir -p ${BINARY_DIR}/lib
BUILD_COMMAND bash -c "PREFIX=${PROJECT_BINARY_DIR}/fstack-build PKG_CONFIG_PATH=${PROJECT_BINARY_DIR}/dpdk-build/lib/pkgconfig:$PKG_CONFIG_PATH CONF_CFLAGS=-fPIC make"
INSTALL_COMMAND bash -c "PKG_CONFIG_PATH=${PROJECT_BINARY_DIR}/dpdk-build/lib/pkgconfig:$PKG_CONFIG_PATH make install PREFIX=${BINARY_DIR} PREFIX_INCLUDE=${BINARY_DIR}/include PREFIX_BIN=${BINARY_DIR}/bin"
LOG_CONFIGURE ON
LOG_BUILD ON
LOG_INSTALL ON
)
set(FSTACK_INCLUDE_DIRS ${BINARY_DIR}/include PARENT_SCOPE)
set(FSTACK_LIBRARIES ${BINARY_DIR}/lib/libfstack.a PARENT_SCOPE)
set(FSTACK_LIBRARIES ${FSTACK_LIBRARIES} ${DPDK_LIBRARIES} PARENT_SCOPE)

endif ()

list(APPEND actually_built ${dep})
Expand Down
13 changes: 11 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,12 @@ set(PHOTON_CURL_SOURCE "https://github.com/curl/curl/releases/download/curl-7_88
set(PHOTON_URING_SOURCE "https://github.com/axboe/liburing/archive/refs/tags/liburing-2.3.tar.gz" CACHE STRING "")
set(PHOTON_FUSE_SOURCE "" CACHE STRING "")
set(PHOTON_GSASL_SOURCE "" CACHE STRING "")
set(PHOTON_FSTACK_SOURCE "" CACHE STRING "")
set(PHOTON_SPDK_SOURCE "" CACHE STRING "")
set(PHOTON_DPDK_SOURCE "https://github.com/DPDK/dpdk/archive/refs/tags/v20.11.6.tar.gz" CACHE STRING "")
set(PHOTON_FSTACK_SOURCE "https://github.com/F-Stack/f-stack/archive/refs/tags/v1.22.tar.gz" CACHE STRING "")
# Since spdk release package contains no submodules that needed to build
# we use git clone to get the source code
set(PHOTON_ISAL_SOURCE "https://github.com/spdk/isa-l/archive/2df39cf5f1b9ccaa2973f6ef273857e4dc46f0cf.zip" CACHE STRING "")
set(PHOTON_SPDK_SOURCE "https://github.com/spdk/spdk/archive/refs/tags/v21.04.tar.gz" CACHE STRING "")
set(PHOTON_E2FS_SOURCE "" CACHE STRING "")
set(PHOTON_GFLAGS_SOURCE "https://github.com/gflags/gflags/archive/refs/tags/v2.2.2.tar.gz" CACHE STRING "")
set(PHOTON_GOOGLETEST_SOURCE "https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz" CACHE STRING "")
Expand Down Expand Up @@ -145,6 +149,9 @@ endif ()
if (PHOTON_ENABLE_SASL)
LIST(APPEND dependencies gsasl)
endif ()
if (PHOTON_ENABLE_FSTACK_DPDK OR PHOTON_ENABLE_SPDK)
LIST(APPEND dependencies dpdk)
endif()
if (PHOTON_ENABLE_FSTACK_DPDK)
LIST(APPEND dependencies fstack)
endif ()
Expand Down Expand Up @@ -344,9 +351,11 @@ if (PHOTON_ENABLE_SASL)
list(APPEND static_deps ${GSASL_LIBRARIES})
endif ()
if (PHOTON_ENABLE_FSTACK_DPDK)
list(APPEND static_deps ${DPDK_LIBRARIES})
list(APPEND static_deps ${FSTACK_LIBRARIES})
endif ()
if (PHOTON_ENABLE_SPDK)
list(APPEND static_deps ${DPDK_LIBRARIES})
list(APPEND static_deps ${SPDK_LIBRARIES})
endif ()
if (PHOTON_ENABLE_EXTFS)
Expand Down
Loading
Loading