summaryrefslogtreecommitdiffstats
path: root/cmake/FindGLESv2.cmake
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2019-02-11 16:58:26 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2019-02-12 14:57:30 +0000
commit519ef817ffb4dbadb00ac958e7402cbfeaf135af (patch)
tree1a3dd3891011fb0b433a5b1f6c880e3751b36dde /cmake/FindGLESv2.cmake
parent6424e70bbef492f052d1aa6b7ce36d5326625e6e (diff)
Fix Desktop GL/EGL/GLESv2 linkage
This change fixes a few things in one go: * cmake's FindOpenGL cannot be used reliably to detect EGL. So use a custom module for that. * Added a custom module for GLESv2 detection, as cmake's FindOpenGL does not support that. * Map CONFIG += opengl to a WrapOpenGL target, which links against either GLESv2 or libGL - just like mkspecs/features/*/opengl.prf * cmake's FindOpenGL remains in use solely to detect the availability of desktop gl. Change-Id: I9315e5ad1fd88e1b7dc7e920053e98fb51fea7fc Reviewed-by: Volker Krause <volker.krause@kdab.com>
Diffstat (limited to 'cmake/FindGLESv2.cmake')
-rw-r--r--cmake/FindGLESv2.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/cmake/FindGLESv2.cmake b/cmake/FindGLESv2.cmake
new file mode 100644
index 0000000000..a4af6cbbbc
--- /dev/null
+++ b/cmake/FindGLESv2.cmake
@@ -0,0 +1,40 @@
+include(CheckCXXSourceCompiles)
+
+find_library(GLESv2_LIBRARY NAMES GLESv2)
+find_path(GLESv2_INCLUDE_DIR NAMES "GLES2/gl2.h" DOC "The OpenGLES 2 include path")
+
+set(_libraries "${CMAKE_REQUIRED_LIBRARIES}")
+list(APPEND CMAKE_REQUIRED_LIBRARIES "${GLESv2_LIBRARY}")
+set(_includes "${CMAKE_REQUIRED_INCLUDES}")
+list(APPEND CMAKE_REQUIRED_INCLUDES "${GLESv2_INCLUDE_DIR}")
+
+check_cxx_source_compiles("
+#ifdef __APPLE__
+# include <OpenGLES/ES2/gl.h>
+#else
+# define GL_GLEXT_PROTOTYPES
+# include <GLES2/gl2.h>
+#endif
+
+int main(int argc, char *argv[]) {
+ glUniform1f(1, GLfloat(1.0));
+ glClear(GL_COLOR_BUFFER_BIT);
+}" HAVE_GLESv2)
+
+set(CMAKE_REQUIRED_LIBRARY "${_libraries}")
+unset(_libraries)
+set(CMAKE_REQUIRED_INCLUDES "${_includes}")
+unset(_includes)
+
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLESv2 DEFAULT_MSG GLESv2_INCLUDE_DIR GLESv2_LIBRARY HAVE_GLESv2)
+
+mark_as_advanced(GLESv2_INCLUDE_DIR GLESv2_LIBRARY HAVE_GLESv2)
+
+if(GLESv2_FOUND AND NOT TARGET GLESv2::GLESv2)
+ add_library(GLESv2::GLESv2 UNKNOWN IMPORTED)
+ set_target_properties(GLESv2::GLESv2 PROPERTIES
+ IMPORTED_LOCATION "${GLESv2_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${GLESv2_INCLUDE_DIR}")
+endif()