Merge pull request #25883 from CrystalP/fix-slowscan
[xbmc.git] / cmake / modules / FindLibDRM.cmake
bloba58a817aa458bf601ebf51c5c2c5146a57fac790
1 #.rst:
2 # FindLibDRM
3 # ----------
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}")
14     else()
15       set(LibDRM_FIND_SPEC ">=${LibDRM_FIND_VERSION_COMPLETE}")
16     endif()
17   endif()
19   find_package(PkgConfig)
20   if(PKG_CONFIG_FOUND)
21     pkg_check_modules(PC_LIBDRM libdrm${LibDRM_FIND_SPEC} QUIET)
22   endif()
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>
41                            int main()
42                            {
43                              struct hdr_output_metadata test;
44                              return test.metadata_type;
45                            }
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)
53   if(LIBDRM_FOUND)
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)
61     endif()
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)
65     endif()
66   endif()
67 endif()