> -----Original Message----- > From: Jason Gunthorpe <j...@nvidia.com> > Sent: Thursday, February 04, 2021 1:12 PM > To: Xiong, Jianxin <jianxin.xi...@intel.com> > Cc: linux-r...@vger.kernel.org; dri-devel@lists.freedesktop.org; Doug Ledford > <dledf...@redhat.com>; Leon Romanovsky > <l...@kernel.org>; Sumit Semwal <sumit.sem...@linaro.org>; Christian Koenig > <christian.koe...@amd.com>; Vetter, Daniel > <daniel.vet...@intel.com>; Edward Srouji <edwa...@nvidia.com>; Yishai Hadas > <yish...@nvidia.com>; John Hubbard > <jhubb...@nvidia.com>; Ali Alnubani <alia...@nvidia.com>; Gal Pressman > <galpr...@amazon.com>; Emil Velikov > <emil.l.veli...@gmail.com> > Subject: Re: [PATCH rdma-core 3/3] configure: Add check for the presence of > DRM headers > > On Thu, Feb 04, 2021 at 10:50:51AM -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. > > > > The standard locations (such as /usr/include/drm, /usr/include/libdrm) > > are checked first. If failed, pkg-config is tried to find the include > > path of custom libdrm installation. The dmabuf allocation routines now > > return suitable error when the headers are not available. The related > > tests will recognize this error code and skip. > > > > Signed-off-by: Jianxin Xiong <jianxin.xi...@intel.com> > > CMakeLists.txt | 7 +++++++ > > buildlib/Finddrm.cmake | 19 +++++++++++++++++++ > > buildlib/config.h.in | 2 ++ > > pyverbs/dmabuf_alloc.c | 47 > > ++++++++++++++++++++++++++++++++++++++++++----- > > 4 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 > > buildlib/Finddrm.cmake > > > > diff --git a/CMakeLists.txt b/CMakeLists.txt index 4113423..feaba3a > > 100644 > > +++ b/CMakeLists.txt > > @@ -515,6 +515,13 @@ find_package(Systemd) > > include_directories(${SYSTEMD_INCLUDE_DIRS}) > > RDMA_DoFixup("${SYSTEMD_FOUND}" "systemd/sd-daemon.h") > > > > +# drm headers > > +find_package(drm) > > +if (DRM_INCLUDE_DIRS) > > + include_directories(${DRM_INCLUDE_DIRS}) > > + set(HAVE_DRM_H 1) > > +endif() > > + > > #------------------------- > > # Apply fixups > > > > diff --git a/buildlib/Finddrm.cmake b/buildlib/Finddrm.cmake new file > > mode 100644 index 0000000..6f8e5f2 > > +++ b/buildlib/Finddrm.cmake > > @@ -0,0 +1,19 @@ > > +# COPYRIGHT (c) 2021 Intel Corporation. > > +# Licensed under BSD (MIT variant) or GPLv2. See COPYING. > > + > > +# Check standard locations first > > +find_path(DRM_INCLUDE_DIRS "drm.h" PATH_SUFFIXES "drm" "libdrm") > > + > > +# Check custom libdrm installation, if any if (NOT DRM_INCLUDE_DIRS) > > + execute_process(COMMAND pkg-config --cflags-only-I libdrm > > + OUTPUT_VARIABLE _LIBDRM > > + RESULT_VARIABLE _LIBDRM_RESULT > > + ERROR_QUIET) > > + > > + if (NOT _LIBDRM_RESULT) > > + string(REGEX REPLACE "^-I" "" DRM_INCLUDE_DIRS "${_LIBDRM}") > > + endif() > > + unset(_LIBDRM) > > + unset(_LIBDRM_RESULT) > > +endif() > > I think this should be using pkg_check_modules() ?? > > Look at the NL stuff: > > pkg_check_modules(NL libnl-3.0 libnl-route-3.0 REQUIRED) > include_directories(${NL_INCLUDE_DIRS}) > link_directories(${NL_LIBRARY_DIRS}) >
Yes, this is much simpler than the pkg-config method. > > +#if HAVE_DRM_H > > + > > Would rather you use cmake to conditionally compile a dmabuf_alloc.c or a > dmabuf_alloc_stub.c than ifdef the entire file Sure, will try that. > > Jaason _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel