summaryrefslogtreecommitdiff
path: root/cmake/sdlchecks.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/sdlchecks.cmake')
-rw-r--r--cmake/sdlchecks.cmake43
1 files changed, 43 insertions, 0 deletions
diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
index 770378828..6f6a41f90 100644
--- a/cmake/sdlchecks.cmake
+++ b/cmake/sdlchecks.cmake
@@ -1149,3 +1149,46 @@ macro(CheckRPI)
endif(SDL_VIDEO AND HAVE_VIDEO_RPI)
endif(VIDEO_RPI)
endmacro(CheckRPI)
+
+# Requires:
+# - EGL
+# - PkgCheckModules
+# Optional:
+# - KMSDRM_SHARED opt
+# - HAVE_DLOPEN opt
+macro(CheckKMSDRM)
+ if(VIDEO_KMSDRM)
+ pkg_check_modules(KMSDRM libdrm gbm egl)
+ if(KMSDRM_FOUND)
+ link_directories(
+ ${KMSDRM_LIBRARY_DIRS}
+ )
+ include_directories(
+ ${KMSDRM_INCLUDE_DIRS}
+ )
+ set(HAVE_VIDEO_KMSDRM TRUE)
+ set(HAVE_SDL_VIDEO TRUE)
+
+ file(GLOB KMSDRM_SOURCES ${SDL2_SOURCE_DIR}/src/video/kmsdrm/*.c)
+ set(SOURCE_FILES ${SOURCE_FILES} ${KMSDRM_SOURCES})
+
+ list(APPEND EXTRA_CFLAGS ${KMSDRM_CLFLAGS})
+
+ set(SDL_VIDEO_DRIVER_KMSDRM 1)
+
+ if(KMSDRM_SHARED)
+ if(NOT HAVE_DLOPEN)
+ message_warn("You must have SDL_LoadObject() support for dynamic KMS/DRM loading")
+ else()
+ FindLibraryAndSONAME(drm)
+ FindLibraryAndSONAME(gbm)
+ set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC "\"${DRM_LIB_SONAME}\"")
+ set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM "\"${GBM_LIB_SONAME}\"")
+ set(HAVE_KMSDRM_SHARED TRUE)
+ endif()
+ else()
+ set(EXTRA_LIBS ${KMSDRM_LIBRARIES} ${EXTRA_LIBS})
+ endif()
+ endif()
+ endif()
+endmacro()