> -----Original Message----- > From: Daniel Vetter <dan...@ffwll.ch> > Sent: Friday, February 05, 2021 5:54 AM > To: Jason Gunthorpe <j...@ziepe.ca> > Cc: Xiong, Jianxin <jianxin.xi...@intel.com>; Yishai Hadas > <yish...@nvidia.com>; Leon Romanovsky <l...@kernel.org>; linux-rdma <linux- > r...@vger.kernel.org>; John Hubbard <jhubb...@nvidia.com>; Edward Srouji > <edwa...@nvidia.com>; Emil Velikov > <emil.l.veli...@gmail.com>; Gal Pressman <galpr...@amazon.com>; dri-devel > <dri-devel@lists.freedesktop.org>; Doug Ledford > <dledf...@redhat.com>; Ali Alnubani <alia...@nvidia.com>; Vetter, Daniel > <daniel.vet...@intel.com>; Christian Koenig > <christian.koe...@amd.com> > Subject: Re: [PATCH rdma-core v2 3/3] configure: Add check for the presence > of DRM headers > > On Fri, Feb 5, 2021 at 2:22 PM Jason Gunthorpe <j...@ziepe.ca> 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.xi...@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? > > 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.
The headers come from the libdrm-devel package, which present itself as "libdrm" under pkg-config. The gpu-specific packages only include the libraries, not the headers. The kernel-headers packages doesn't have pkg-config info and can't be checked via pkg_check_modules(). One change I can make here is to use find_path() only for the headers installed by the kernel-headers package (the "drm" path). The "libdrm" path is covered by the pkg_check_modules() check anyway. > -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() Thanks, missed that. > > > > > #------------------------- > > > # 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) > > ) Sure, will change. > > > > Jason > > _______________________________________________ > > dri-devel mailing list > > dri-devel@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel