]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: define BUILD_BYPRODUCTS for spdk-ext
authorKefu Chai <kchai@redhat.com>
Thu, 4 Mar 2021 07:04:13 +0000 (15:04 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 9 Mar 2021 11:13:21 +0000 (19:13 +0800)
so if a cmake generator needs any one of them, it knowns how to build
it.

Signed-off-by: Kefu Chai <kchai@redhat.com>
cmake/modules/BuildSPDK.cmake

index 05a6b237006769d68f20c8bf47c6b788133c9cc2..17b2d74cd19960684d4d2f2ea53d7c577b7f8b36 100644 (file)
@@ -26,9 +26,21 @@ macro(build_spdk)
     # default arch used by SPDK
     set(target_arch native)
   endif()
+
+  set(source_dir "${CMAKE_SOURCE_DIR}/src/spdk")
+  foreach(c lvol env_dpdk sock nvmf bdev nvme conf thread trace notify accel event_accel blob vmd event_vmd event_bdev sock_posix event_sock event rpc jsonrpc json util log)
+    add_library(spdk::${c} STATIC IMPORTED)
+    set(lib_path "${source_dir}/build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}spdk_${c}${CMAKE_STATIC_LIBRARY_SUFFIX}")
+    set_target_properties(spdk::${c} PROPERTIES
+      IMPORTED_LOCATION "${lib_path}"
+      INTERFACE_INCLUDE_DIRECTORIES "${source_dir}/include")
+    list(APPEND spdk_libs "${lib_path}")
+    list(APPEND SPDK_LIBRARIES spdk::${c})
+  endforeach()
+
   ExternalProject_Add(spdk-ext
     DEPENDS dpdk-ext
-    SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/spdk
+    SOURCE_DIR ${source_dir}
     CONFIGURE_COMMAND ./configure
       --with-dpdk=${DPDK_DIR}
       --without-isal
@@ -39,17 +51,13 @@ macro(build_spdk)
     # unset $LDFLAGS, otherwise SPDK will fail to mock some functions.
     BUILD_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} ${make_cmd} EXTRA_CFLAGS="${spdk_CFLAGS}"
     BUILD_IN_SOURCE 1
+    BUILD_BYPRODUCTS ${spdk_libs}
     INSTALL_COMMAND "true")
   unset(make_cmd)
-  ExternalProject_Get_Property(spdk-ext source_dir)
-  foreach(c lvol env_dpdk sock nvmf bdev nvme conf thread trace notify accel event_accel blob vmd event_vmd event_bdev sock_posix event_sock event rpc jsonrpc json util log)
-    add_library(spdk::${c} STATIC IMPORTED)
-    add_dependencies(spdk::${c} spdk-ext)
-    set_target_properties(spdk::${c} PROPERTIES
-      IMPORTED_LOCATION "${source_dir}/build/lib/${CMAKE_STATIC_LIBRARY_PREFIX}spdk_${c}${CMAKE_STATIC_LIBRARY_SUFFIX}"
-      INTERFACE_INCLUDE_DIRECTORIES "${source_dir}/include")
-    list(APPEND SPDK_LIBRARIES spdk::${c})
+  foreach(spdk_lib ${SPDK_LIBRARIES})
+    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