On Fri, Feb 5, 2021 at 2:22 PM Jason Gunthorpe <jgg@xxxxxxxx> wrote: > > 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@xxxxxxxxx> > > 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? Note that the gpu-specific libraries are split out, so I'd also check for those just to be sure - I don't know whether all distros package the uapi headers consistently in libdrm or sometimes also in one of the libdrm-$vendor packages. -Daniel > > > +# 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 > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch