4 # Finds the LibDRM library
6 # This will define the following target:
8 # ${APP_NAME_LC}::LibDRM - The LibDRM library
10 if(NOT TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME})
11 if(LibDRM_FIND_VERSION)
12 if(LibDRM_FIND_VERSION_EXACT)
13 set(LibDRM_FIND_SPEC "=${LibDRM_FIND_VERSION_COMPLETE}")
15 set(LibDRM_FIND_SPEC ">=${LibDRM_FIND_VERSION_COMPLETE}")
19 find_package(PkgConfig)
21 pkg_check_modules(PC_LIBDRM libdrm${LibDRM_FIND_SPEC} QUIET)
24 find_path(LIBDRM_INCLUDE_DIR NAMES drm.h
25 PATH_SUFFIXES libdrm drm
26 HINTS ${PC_LIBDRM_INCLUDEDIR})
27 find_library(LIBDRM_LIBRARY NAMES drm
28 HINTS ${PC_LIBDRM_LIBDIR})
30 set(LIBDRM_VERSION ${PC_LIBDRM_VERSION})
32 include(FindPackageHandleStandardArgs)
33 find_package_handle_standard_args(LibDRM
34 REQUIRED_VARS LIBDRM_LIBRARY LIBDRM_INCLUDE_DIR
35 VERSION_VAR LIBDRM_VERSION)
37 include(CheckCSourceCompiles)
38 set(CMAKE_REQUIRED_INCLUDES ${LIBDRM_INCLUDE_DIR})
39 check_c_source_compiles("#include <drm_mode.h>
43 struct hdr_output_metadata test;
44 return test.metadata_type;
46 " LIBDRM_HAS_HDR_OUTPUT_METADATA)
48 include(CheckSymbolExists)
49 set(CMAKE_REQUIRED_LIBRARIES ${LIBDRM_LIBRARY})
50 check_symbol_exists(drmGetFormatModifierName xf86drm.h LIBDRM_HAS_MODIFIER_NAME)
51 set(CMAKE_REQUIRED_LIBRARIES)
54 add_library(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} UNKNOWN IMPORTED)
55 set_target_properties(${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES
56 IMPORTED_LOCATION "${LIBDRM_LIBRARY}"
57 INTERFACE_INCLUDE_DIRECTORIES "${LIBDRM_INCLUDE_DIR}")
58 if(LIBDRM_HAS_HDR_OUTPUT_METADATA)
59 set_property(TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} APPEND PROPERTY
60 INTERFACE_COMPILE_DEFINITIONS HAVE_HDR_OUTPUT_METADATA)
62 if(LIBDRM_HAS_MODIFIER_NAME)
63 set_property(TARGET ${APP_NAME_LC}::${CMAKE_FIND_PACKAGE_NAME} APPEND PROPERTY
64 INTERFACE_COMPILE_DEFINITIONS HAVE_DRM_MODIFIER_NAME)