summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKefu Chai <tchaikov@gmail.com>2022-01-22 19:51:58 +0800
committerGitHub <noreply@github.com>2022-01-22 19:51:58 +0800
commit0f448714c2493b0bfd798dba6ef7bdb0f08282e2 (patch)
tree2b8b1fe7ee7bf30cd6cb6e9f915721d4220b9b91
parente1793ebbf0dba5038ec094939a81ff9327ced5e7 (diff)
parente82b0a7b094361a5195694691761b02d3413c299 (diff)
downloadceph-0f448714c2493b0bfd798dba6ef7bdb0f08282e2.tar.gz
Merge pull request #44572 from 5cs/fix-spdk-cmake
cmake/modules/BuildSPDK.cmake: link whole-archive Reviewed-by: Kefu Chai <tchaikov@gmail.com>
-rw-r--r--cmake/modules/BuildSPDK.cmake14
-rw-r--r--src/blk/CMakeLists.txt3
2 files changed, 10 insertions, 7 deletions
diff --git a/cmake/modules/BuildSPDK.cmake b/cmake/modules/BuildSPDK.cmake
index 0a6acc8d059..d6ce97e1d2e 100644
--- a/cmake/modules/BuildSPDK.cmake
+++ b/cmake/modules/BuildSPDK.cmake
@@ -68,12 +68,14 @@ macro(build_spdk)
add_dependencies(${spdk_lib} spdk-ext)
endforeach()
- set_target_properties(spdk::env_dpdk PROPERTIES
- INTERFACE_LINK_LIBRARIES "dpdk::dpdk;rt")
- set_target_properties(spdk::lvol PROPERTIES
- INTERFACE_LINK_LIBRARIES spdk::util)
- set_target_properties(spdk::util PROPERTIES
- INTERFACE_LINK_LIBRARIES ${UUID_LIBRARIES})
set(SPDK_INCLUDE_DIR "${source_dir}/include")
+ add_library(spdk::spdk INTERFACE IMPORTED)
+ add_dependencies(spdk::spdk
+ ${SPDK_LIBRARIES})
+ # workaround for https://review.spdk.io/gerrit/c/spdk/spdk/+/6798
+ set_target_properties(spdk::spdk PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${SPDK_INCLUDE_DIR}
+ INTERFACE_LINK_LIBRARIES
+ "-Wl,--whole-archive $<JOIN:${spdk_libs}, > -Wl,--no-whole-archive;dpdk::dpdk;rt;${UUID_LIBRARIES}")
unset(source_dir)
endmacro()
diff --git a/src/blk/CMakeLists.txt b/src/blk/CMakeLists.txt
index aaebc3c99f0..37b9c0a410c 100644
--- a/src/blk/CMakeLists.txt
+++ b/src/blk/CMakeLists.txt
@@ -35,7 +35,8 @@ if(HAVE_LIBAIO)
endif(HAVE_LIBAIO)
if(WITH_SPDK)
- target_link_libraries(blk PRIVATE ${SPDK_LIBRARIES})
+ target_link_libraries(blk
+ PRIVATE spdk::spdk)
endif()
if(WITH_ZBD)