Skip to content

Commit 6a2af48

Browse files
caramellislouken
authored andcommitted
CMake: Generic check for desktop GL and EGL on Linux systems
1 parent fd121b5 commit 6a2af48

File tree

2 files changed

+46
-64
lines changed

2 files changed

+46
-64
lines changed

CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,14 +1202,14 @@ elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS)
12021202
CheckRPI()
12031203
CheckX11()
12041204
CheckDirectFB()
1205-
CheckOpenGLX11()
1206-
CheckOpenGLESX11()
1205+
# Need to check for EGL first because KMSDRM and Wayland depends on it.
1206+
CheckEGL()
1207+
CheckKMSDRM()
1208+
CheckGLX()
1209+
CheckOpenGL()
1210+
CheckOpenGLES()
12071211
CheckWayland()
12081212
CheckVivante()
1209-
# Need to check EGL before checking KMSDRM because KMSDRM depends on it.
1210-
CheckEGLKMSDRM()
1211-
CheckKMSDRM()
1212-
CheckOpenGLKMSDRM()
12131213
endif()
12141214

12151215
if(UNIX)

cmake/sdlchecks.cmake

Lines changed: 40 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,10 @@ macro(CheckX11)
593593
set(CMAKE_REQUIRED_LIBRARIES)
594594
endif()
595595
endif()
596+
if(NOT HAVE_VIDEO_X11)
597+
# Prevent Mesa from including X11 headers
598+
list(APPEND EXTRA_CFLAGS "-DMESA_EGL_NO_X11_HEADERS -DEGL_NO_X11")
599+
endif()
596600
endmacro()
597601

598602
macro(WaylandProtocolGen _SCANNER _CODE_MODE _XML _PROTL)
@@ -627,7 +631,7 @@ macro(CheckWayland)
627631
pkg_check_modules(WAYLAND wayland-client wayland-scanner wayland-egl wayland-cursor egl xkbcommon)
628632
pkg_check_modules(WAYLAND_SCANNER_1_15 "wayland-scanner>=1.15")
629633

630-
if(WAYLAND_FOUND)
634+
if(WAYLAND_FOUND AND HAVE_VIDEO_OPENGL_EGL)
631635
execute_process(
632636
COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=wayland_scanner wayland-scanner
633637
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
@@ -777,98 +781,76 @@ macro(CheckVivante)
777781
endif(VIDEO_VIVANTE)
778782
endmacro(CheckVivante)
779783

780-
# Requires:
781-
# - libglvnd
782-
macro(CheckOpenGLKMSDRM)
783-
if(VIDEO_OPENGL AND HAVE_VIDEO_KMSDRM)
784-
check_c_source_compiles("
785-
#include <GL/gl.h>
786-
int main(int argc, char** argv) {}" HAVE_VIDEO_OPENGL)
787-
788-
if(HAVE_VIDEO_OPENGL)
789-
set(HAVE_VIDEO_OPENGL TRUE)
790-
set(SDL_VIDEO_OPENGL 1)
791-
set(SDL_VIDEO_RENDER_OGL 1)
792-
endif()
793-
endif()
794-
endmacro()
795-
796784
# Requires:
797785
# - nada
798-
macro(CheckOpenGLX11)
786+
macro(CheckGLX)
799787
if(VIDEO_OPENGL)
800788
check_c_source_compiles("
801-
#include <GL/gl.h>
802789
#include <GL/glx.h>
803-
int main(int argc, char** argv) {}" HAVE_VIDEO_OPENGL)
804-
805-
if(HAVE_VIDEO_OPENGL)
806-
set(HAVE_VIDEO_OPENGL TRUE)
807-
set(SDL_VIDEO_OPENGL 1)
790+
int main(int argc, char** argv) {}" HAVE_VIDEO_OPENGL_GLX)
791+
if(HAVE_VIDEO_OPENGL_GLX)
808792
set(SDL_VIDEO_OPENGL_GLX 1)
809-
set(SDL_VIDEO_RENDER_OGL 1)
810793
endif()
811794
endif()
812795
endmacro()
813796

814797
# Requires:
815798
# - PkgCheckModules
816799
macro(CheckEGL)
817-
pkg_check_modules(EGL egl)
818-
string(REPLACE "-D_THREAD_SAFE;" "-D_THREAD_SAFE=1;" EGL_CFLAGS "${EGL_CFLAGS}")
819-
endmacro()
820-
821-
# Requires:
822-
# - PkgCheckModules
823-
macro(CheckEGLKMSDRM)
824-
if (HAVE_VIDEO_OPENGLES OR HAVE_VIDEO_OPENGL)
825-
CheckEGL()
800+
if (VIDEO_OPENGL OR VIDEO_OPENGLES)
801+
pkg_check_modules(EGL egl)
802+
string(REPLACE "-D_THREAD_SAFE;" "-D_THREAD_SAFE=1;" EGL_CFLAGS "${EGL_CFLAGS}")
826803
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${EGL_CFLAGS}")
827804
check_c_source_compiles("
828-
#define EGL_API_FB
829-
#define MESA_EGL_NO_X11_HEADERS
830-
#define EGL_NO_X11
831-
#include <EGL/egl.h>
832-
#include <EGL/eglext.h>
833-
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGL_EGL)
805+
#define EGL_API_FB
806+
#define MESA_EGL_NO_X11_HEADERS
807+
#define EGL_NO_X11
808+
#include <EGL/egl.h>
809+
#include <EGL/eglext.h>
810+
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGL_EGL)
834811
if(HAVE_VIDEO_OPENGL_EGL)
835-
set(SDL_VIDEO_OPENGL_EGL 1)
812+
set(SDL_VIDEO_OPENGL_EGL 1)
836813
endif()
837814
endif()
838815
endmacro()
839816

840817
# Requires:
841-
# - PkgCheckModules
842-
macro(CheckOpenGLESX11)
843-
CheckEGL()
844-
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${EGL_CFLAGS}")
845-
if(VIDEO_OPENGLES)
818+
# - nada
819+
macro(CheckOpenGL)
820+
if(VIDEO_OPENGL)
846821
check_c_source_compiles("
847-
#define EGL_API_FB
848-
#include <EGL/egl.h>
849-
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGL_EGL)
850-
if(HAVE_VIDEO_OPENGL_EGL)
851-
set(SDL_VIDEO_OPENGL_EGL 1)
822+
#include <GL/gl.h>
823+
#include <GL/glext.h>
824+
int main(int argc, char** argv) {}" HAVE_VIDEO_OPENGL)
825+
if(HAVE_VIDEO_OPENGL)
826+
set(SDL_VIDEO_OPENGL 1)
827+
set(SDL_VIDEO_RENDER_OGL 1)
852828
endif()
829+
endif()
830+
endmacro()
831+
832+
# Requires:
833+
# - nada
834+
macro(CheckOpenGLES)
835+
if(VIDEO_OPENGLES)
853836
check_c_source_compiles("
854-
#include <GLES/gl.h>
855-
#include <GLES/glext.h>
856-
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGLES_V1)
837+
#include <GLES/gl.h>
838+
#include <GLES/glext.h>
839+
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGLES_V1)
857840
if(HAVE_VIDEO_OPENGLES_V1)
858841
set(HAVE_VIDEO_OPENGLES TRUE)
859842
set(SDL_VIDEO_OPENGL_ES 1)
860843
set(SDL_VIDEO_RENDER_OGL_ES 1)
861844
endif()
862845
check_c_source_compiles("
863-
#include <GLES2/gl2.h>
864-
#include <GLES2/gl2ext.h>
865-
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGLES_V2)
846+
#include <GLES2/gl2.h>
847+
#include <GLES2/gl2ext.h>
848+
int main (int argc, char** argv) {}" HAVE_VIDEO_OPENGLES_V2)
866849
if(HAVE_VIDEO_OPENGLES_V2)
867850
set(HAVE_VIDEO_OPENGLES TRUE)
868851
set(SDL_VIDEO_OPENGL_ES2 1)
869852
set(SDL_VIDEO_RENDER_OGL_ES2 1)
870853
endif()
871-
872854
endif()
873855
endmacro()
874856

0 commit comments

Comments
 (0)