sdl2-compat: cmake: only build testgles2 tests when opengles headers are found

From cf8095a459568f9c7b98a283cb429343a528d537 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 29 Nov 2022 16:07:58 +0100
Subject: [PATCH] cmake: only build testgles2 tests when opengles headers are
 found

---
 CMakeLists.txt        | 14 +++++++++++---
 cmake/sdlchecks.cmake | 23 +++++++++++++++++++++++
 2 files changed, 34 insertions(+), 3 deletions(-)
 create mode 100644 cmake/sdlchecks.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d3ed04..04f2ba7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,9 @@ include(CheckIncludeFile)
 include(CheckCCompilerFlag)
 include(CMakePackageConfigHelpers)
 include(GNUInstallDirs)
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlchecks.cmake")
+
+CheckOpenGLES()
 
 set(CMAKE_SKIP_RPATH TRUE)
 
@@ -254,6 +257,7 @@ if(SDL2COMPAT_TESTS)
     find_library(MATH_LIBRARY m)
   endif()
 
+  set(OpenGL_GL_PREFERENCE GLVND)
   find_package(OpenGL COMPONENTS OpenGL)
   if(OPENGL_FOUND)
     set(HAVE_OPENGL_DEFINE "HAVE_OPENGL")
@@ -356,9 +360,13 @@ if(SDL2COMPAT_TESTS)
   test_program(testyuv "test/testyuv.c;test/testyuv_cvt.c")
   test_program(torturethread "test/torturethread.c")
   test_program(testgl2 "test/testgl2.c")
-  test_program(testgles "test/testgles.c")
-  test_program(testgles2 "test/testgles2.c")
-  test_program(testgles2_sdf "test/testgles2_sdf.c;test/testutils.c")
+  if(HAVE_OPENGLES)
+    test_program(testgles "test/testgles.c")
+  endif()
+  if(HAVE_OPENGLES_V2)
+    test_program(testgles2 "test/testgles2.c")
+    test_program(testgles2_sdf "test/testgles2_sdf.c;test/testutils.c")
+  endif()
 
   list(APPEND TESTAUTOMATION_SRCS "test/testautomation.c")
   list(APPEND TESTAUTOMATION_SRCS "test/testautomation_audio.c")
diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake
new file mode 100644
index 0000000..cf996e7
--- /dev/null
+++ b/cmake/sdlchecks.cmake
@@ -0,0 +1,23 @@
+# Requires:
+# - nada
+macro(CheckOpenGLES)
+  set(HAVE_OPENGLES FALSE)
+  check_c_source_compiles("
+      #include <GLES/gl.h>
+      #include <GLES/glext.h>
+      int main (int argc, char** argv) { return 0; }" HAVE_OPENGLES_V1)
+  if(HAVE_OPENGLES_V1)
+    set(HAVE_OPENGLES TRUE)
+    set(SDL_VIDEO_OPENGL_ES 1)
+    set(SDL_VIDEO_RENDER_OGL_ES 1)
+  endif()
+  check_c_source_compiles("
+      #include <GLES2/gl2.h>
+      #include <GLES2/gl2ext.h>
+      int main (int argc, char** argv) { return 0; }" HAVE_OPENGLES_V2)
+  if(HAVE_OPENGLES_V2)
+    set(HAVE_OPENGLES TRUE)
+    set(SDL_VIDEO_OPENGL_ES2 1)
+    set(SDL_VIDEO_RENDER_OGL_ES2 1)
+  endif()
+endmacro()