78 lines
2.5 KiB
CMake
78 lines
2.5 KiB
CMake
# FindDRI support
|
|
# Check for existance of glxinfo application
|
|
# Check for existance of support for pyopengl
|
|
MESSAGE(STATUS "Looking for display capabilities")
|
|
|
|
IF ((DEFINED FORCE_GRAPHIC_TESTS_COMPILATION) AND (${FORCE_GRAPHIC_TESTS_COMPILATION}))
|
|
SET (VALID_DISPLAY TRUE)
|
|
SET (VALID_DRI_DISPLAY TRUE)
|
|
MESSAGE(STATUS " + Force requested. All capabilities on without checking")
|
|
RETURN()
|
|
ENDIF()
|
|
|
|
SET (VALID_DISPLAY FALSE)
|
|
SET (VALID_DRI_DISPLAY FALSE)
|
|
SET (CHECKER_ERROR "(no glxinfo or pyopengl)")
|
|
|
|
IF((DEFINED ENV{DISPLAY}) AND NOT ("$ENV{DISPLAY}" STREQUAL ""))
|
|
EXECUTE_PROCESS(
|
|
COMMAND xwininfo -root
|
|
RESULT_VARIABLE DISPLAY_FAIL_RESULT
|
|
ERROR_QUIET
|
|
OUTPUT_QUIET)
|
|
IF (NOT DISPLAY_FAIL_RESULT)
|
|
MESSAGE(STATUS " + found a display available ($DISPLAY is set)")
|
|
SET (VALID_DISPLAY TRUE)
|
|
|
|
# Continue check for DRI support in the display
|
|
# Try to run glxinfo. If not found, variable will be empty
|
|
FIND_PROGRAM(GLXINFO glxinfo)
|
|
|
|
# If not display found, it will throw an error
|
|
# Another grep pattern: "direct rendering:[[:space:]]*Yes[[:space:]]*"
|
|
IF (GLXINFO)
|
|
EXECUTE_PROCESS(
|
|
COMMAND glxinfo
|
|
COMMAND grep "direct rendering:[[:space:]]*Yes[[:space:]]*"
|
|
ERROR_QUIET
|
|
OUTPUT_VARIABLE GLX)
|
|
|
|
IF (GLX)
|
|
MESSAGE(STATUS " + found a valid dri display (glxinfo)")
|
|
SET (VALID_DRI_DISPLAY TRUE)
|
|
ELSE()
|
|
SET (CHECKER_ERROR "using glxinfo")
|
|
ENDIF ()
|
|
ELSE ()
|
|
EXECUTE_PROCESS(
|
|
# RESULT_VARIABLE is store in a FAIL variable since the command
|
|
# returns 0 if ok and 1 if error (inverse than cmake IF)
|
|
COMMAND ${PROJECT_SOURCE_DIR}/tools/gl-test.py
|
|
RESULT_VARIABLE GL_FAIL_RESULT
|
|
ERROR_VARIABLE GL_ERROR
|
|
OUTPUT_QUIET)
|
|
|
|
IF (NOT GL_FAIL_RESULT)
|
|
MESSAGE(STATUS " + found a valid dri display (pyopengl)")
|
|
SET (VALID_DRI_DISPLAY TRUE)
|
|
ELSE()
|
|
# Check error string: no python module means no pyopengl
|
|
STRING(FIND ${GL_ERROR}
|
|
"ImportError: No module named OpenGL.GLUT" ERROR_POS)
|
|
# -1 will imply pyopengl is present but real DRI test fails
|
|
IF ("${ERROR_POS}" STREQUAL "-1")
|
|
SET (CHECKER_ERROR "using pyopengl")
|
|
ENDIF ()
|
|
ENDIF ()
|
|
ENDIF ()
|
|
ENDIF ()
|
|
ENDIF ()
|
|
|
|
IF (NOT VALID_DISPLAY)
|
|
MESSAGE(STATUS " ! valid display not found")
|
|
ENDIF ()
|
|
|
|
IF (NOT VALID_DRI_DISPLAY)
|
|
MESSAGE(STATUS " ! valid dri display not found ${CHECKER_ERROR}")
|
|
ENDIF ()
|