]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: enable Finddpdk to find DPDK to be built
authorKefu Chai <kchai@redhat.com>
Thu, 24 Oct 2019 09:35:26 +0000 (17:35 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 24 Oct 2019 09:54:05 +0000 (17:54 +0800)
find_package(dpdk...) is used by seastar to find DPDK if Seastar_DPDK is
enabled. but `build_dpdk()` only exposes `dpdk::dpdk`, and it does not
set the variables like `dpdk_INCLUDE_DIRS` and `dpdk_LIBRARIES` when it
gets called. so we need to adapt Finddpdk to query them from `dpdk::dpdk`
target.

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

index fdb44ec61c71cb36fe4a8f82db90bc4ed906d3af..751e1c4594d696a0a504a0f4bdc3e44e351be7db 100644 (file)
@@ -12,7 +12,12 @@ if(PKG_CONFIG_FOUND)
   pkg_check_modules(dpdk QUIET libdpdk)
 endif()
 
-if(NOT dpdk_INCLUDE_DIRS)
+if(dpdk_INCLUDE_DIRS)
+  # good
+elseif(TARGET dpdk::dpdk)
+  get_target_property(dpdk_INCLUDE_DIRS
+     dpdk::dpdk INTERFACE_INCLUDE_DIRECTORIES)
+else()
   find_path(dpdk_config_INCLUDE_DIR rte_config.h
     HINTS
       ENV DPDK_DIR
@@ -58,13 +63,18 @@ set(_dpdk_libs)
 set(dpdk_LIBRARIES)
 
 foreach(c ${components})
-  find_library(DPDK_rte_${c}_LIBRARY rte_${c}
-    HINTS
-      ENV DPDK_DIR
-      ${dpdk_LIBRARY_DIRS}
-    PATH_SUFFIXES lib)
+  set(dpdk_lib dpdk::${c})
+  if(TARGET ${dpdk_lib})
+    get_target_property(DPDK_rte_${c}_LIBRARY
+      ${dpdk_lib} IMPORTED_LOCATION)
+  else()
+    find_library(DPDK_rte_${c}_LIBRARY rte_${c}
+      HINTS
+        ENV DPDK_DIR
+        ${dpdk_LIBRARY_DIRS}
+        PATH_SUFFIXES lib)
+  endif()
   if(DPDK_rte_${c}_LIBRARY)
-    set(dpdk_lib dpdk::${c})
     if (NOT TARGET ${dpdk_lib})
       add_library(${dpdk_lib} UNKNOWN IMPORTED)
       set_target_properties(${dpdk_lib} PROPERTIES