On Thu, Feb 04, 2021 at 04:29:14PM -0800, Jianxin Xiong wrote:
Compilation of pyverbs/dmabuf_alloc.c depends on a few DRM headers that are installed by either the kernel-header or the libdrm package. The installation is optional and the location is not unique.
Check the presence of the headers at both the standard locations and any location defined by custom libdrm installation. If the headers are missing, the dmabuf allocation routines are replaced by stubs that return suitable error to allow the related tests to skip.
Signed-off-by: Jianxin Xiong jianxin.xiong@intel.com CMakeLists.txt | 15 +++++++++++++++ pyverbs/CMakeLists.txt | 14 ++++++++++++-- pyverbs/dmabuf_alloc.c | 8 ++++---- pyverbs/dmabuf_alloc_stub.c | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 pyverbs/dmabuf_alloc_stub.c
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4113423..95aec11 100644 +++ b/CMakeLists.txt @@ -515,6 +515,21 @@ find_package(Systemd) include_directories(${SYSTEMD_INCLUDE_DIRS}) RDMA_DoFixup("${SYSTEMD_FOUND}" "systemd/sd-daemon.h")
+# drm headers
+# First check the standard locations. The headers could have been installed +# by either the kernle-headers package or the libdrm package. +find_path(DRM_INCLUDE_DIRS "drm.h" PATH_SUFFIXES "drm" "libdrm")
Is there a reason not to just always call pkg_check_modules?
+# Then check custom installation of libdrm +if (NOT DRM_INCLUDE_DIRS)
- pkg_check_modules(DRM libdrm)
+endif()
+if (DRM_INCLUDE_DIRS)
- include_directories(${DRM_INCLUDE_DIRS})
+endif()
This needs a hunk at the end:
if (NOT DRM_INCLUDE_DIRS) message(STATUS " DMABUF NOT supported (disabling some tests)") endif()
#------------------------- # Apply fixups
diff --git a/pyverbs/CMakeLists.txt b/pyverbs/CMakeLists.txt index 6fd7625..922253f 100644 +++ b/pyverbs/CMakeLists.txt @@ -13,8 +13,6 @@ rdma_cython_module(pyverbs "" cmid.pyx cq.pyx device.pyx
- dmabuf.pyx
- dmabuf_alloc.c enums.pyx mem_alloc.pyx mr.pyx
@@ -25,6 +23,18 @@ rdma_cython_module(pyverbs "" xrcd.pyx )
+if (DRM_INCLUDE_DIRS) +rdma_cython_module(pyverbs ""
- dmabuf.pyx
- dmabuf_alloc.c
+) +else() +rdma_cython_module(pyverbs ""
- dmabuf.pyx
- dmabuf_alloc_stub.c
+) +endif()
Like this:
if (DRM_INCLUDE_DIRS) set(DMABUF_ALLOC dmabuf_alloc.c) else() set(DMABUF_ALLOC dmabuf_alloc_stbub.c) endif() rdma_cython_module(pyverbs "" dmabuf.pyx $(DMABUF_ALLOC) )
Jason