diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-10-19 14:57:13 -0700 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-10-25 18:08:28 +0300 |
commit | 9d87dc8cf17f00eb6a8aadc0612972d63dd7f6e3 (patch) | |
tree | 27de0e27076a8b00b560c923b3b46fb6c61890cb | |
parent | 5fa4790fdc24622d85db5fc503bcca9fe8c40b60 (diff) | |
download | qtlocation-mapboxgl-9d87dc8cf17f00eb6a8aadc0612972d63dd7f6e3.tar.gz |
[core] Make the OpenGL implementation platform specific
Split the headers, so each platform includes the most appropriated
header.
-rw-r--r-- | platform/android/config.cmake | 5 | ||||
-rw-r--r-- | platform/android/mbgl/gl/gl_impl.hpp | 5 | ||||
-rw-r--r-- | platform/darwin/mbgl/gl/gl_impl.hpp | 16 | ||||
-rw-r--r-- | platform/linux/config.cmake | 5 | ||||
-rw-r--r-- | platform/linux/mbgl/gl/gl_impl.hpp | 11 | ||||
-rw-r--r-- | platform/macos/config.cmake | 4 | ||||
-rw-r--r-- | platform/qt/config.cmake | 5 | ||||
-rw-r--r-- | platform/qt/mbgl/gl/gl_impl.hpp | 21 | ||||
-rw-r--r-- | src/mbgl/gl/gl.hpp | 30 |
9 files changed, 74 insertions, 28 deletions
diff --git a/platform/android/config.cmake b/platform/android/config.cmake index db75b850f1..53f9b40d7f 100644 --- a/platform/android/config.cmake +++ b/platform/android/config.cmake @@ -74,6 +74,7 @@ macro(mbgl_platform_core) target_include_directories(mbgl-core PUBLIC platform/default + PRIVATE platform/android ) target_add_mason_package(mbgl-core PUBLIC nunicode) @@ -346,6 +347,10 @@ macro(mbgl_platform_test) platform/linux/src/headless_display_egl.cpp ) + target_include_directories(mbgl-test + PRIVATE platform/android + ) + target_compile_options(mbgl-test PRIVATE -fvisibility=hidden ) diff --git a/platform/android/mbgl/gl/gl_impl.hpp b/platform/android/mbgl/gl/gl_impl.hpp new file mode 100644 index 0000000000..b9b5d8e315 --- /dev/null +++ b/platform/android/mbgl/gl/gl_impl.hpp @@ -0,0 +1,5 @@ +#pragma once + +#define GL_GLEXT_PROTOTYPES +#include <GLES2/gl2.h> +#include <GLES2/gl2ext.h> diff --git a/platform/darwin/mbgl/gl/gl_impl.hpp b/platform/darwin/mbgl/gl/gl_impl.hpp new file mode 100644 index 0000000000..b4c062a474 --- /dev/null +++ b/platform/darwin/mbgl/gl/gl_impl.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "TargetConditionals.h" +#if TARGET_OS_IPHONE + #include <OpenGLES/ES2/gl.h> + #include <OpenGLES/ES2/glext.h> +#elif TARGET_IPHONE_SIMULATOR + #include <OpenGLES/ES2/gl.h> + #include <OpenGLES/ES2/glext.h> +#elif TARGET_OS_MAC + #include <OpenGL/OpenGL.h> + #include <OpenGL/gl.h> + #include <OpenGL/glext.h> +#else + #error Unsupported Apple platform +#endif diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index 47c4c68806..edac8e59ac 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -76,6 +76,7 @@ macro(mbgl_platform_core) target_include_directories(mbgl-core PRIVATE platform/default + PRIVATE platform/linux ) target_add_mason_package(mbgl-core PUBLIC nunicode) @@ -149,6 +150,10 @@ macro(mbgl_platform_test) PRIVATE platform/default/mbgl/test/main.cpp ) + target_include_directories(mbgl-test + PRIVATE platform/linux + ) + set_source_files_properties( platform/default/mbgl/test/main.cpp PROPERTIES diff --git a/platform/linux/mbgl/gl/gl_impl.hpp b/platform/linux/mbgl/gl/gl_impl.hpp new file mode 100644 index 0000000000..ae829f3f7e --- /dev/null +++ b/platform/linux/mbgl/gl/gl_impl.hpp @@ -0,0 +1,11 @@ +#pragma once + +#if MBGL_USE_GLES2 + #define GL_GLEXT_PROTOTYPES + #include <GLES2/gl2.h> + #include <GLES2/gl2ext.h> +#else + #define GL_GLEXT_PROTOTYPES + #include <GL/gl.h> + #include <GL/glext.h> +#endif diff --git a/platform/macos/config.cmake b/platform/macos/config.cmake index aca99f9b40..2716f7c84d 100644 --- a/platform/macos/config.cmake +++ b/platform/macos/config.cmake @@ -133,6 +133,10 @@ macro(mbgl_platform_test) PRIVATE platform/default/mbgl/test/main.cpp ) + target_include_directories(mbgl-test + PRIVATE platform/macos + ) + set_source_files_properties( platform/default/mbgl/test/main.cpp PROPERTIES diff --git a/platform/qt/config.cmake b/platform/qt/config.cmake index a7fdbf3542..e3b15fddfd 100644 --- a/platform/qt/config.cmake +++ b/platform/qt/config.cmake @@ -20,6 +20,7 @@ macro(mbgl_platform_core) target_include_directories(mbgl-core PUBLIC platform/default + PRIVATE platform/qt PRIVATE platform/qt/include ) @@ -69,6 +70,10 @@ macro(mbgl_platform_test) PRIVATE platform/qt/test/qmapboxgl.test.cpp ) + target_include_directories(mbgl-test + PRIVATE platform/qt + ) + set_source_files_properties( platform/qt/test/main.cpp PROPERTIES COMPILE_FLAGS -DWORK_DIRECTORY="${CMAKE_SOURCE_DIR}" diff --git a/platform/qt/mbgl/gl/gl_impl.hpp b/platform/qt/mbgl/gl/gl_impl.hpp new file mode 100644 index 0000000000..5e4c6f12af --- /dev/null +++ b/platform/qt/mbgl/gl/gl_impl.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include <QtGlobal> + +// Qt4 +#if QT_VERSION < 0x050000 + #if MBGL_USE_GLES2 + #define GL_GLEXT_PROTOTYPES + #include <GLES2/gl2.h> + #include <GLES2/gl2ext.h> + #else + #define GL_GLEXT_PROTOTYPES + #include <GL/gl.h> + #include <GL/glext.h> + #endif + +// Qt5 +#else + #define GL_GLEXT_PROTOTYPES + #include <QtGui/qopengl.h> +#endif diff --git a/src/mbgl/gl/gl.hpp b/src/mbgl/gl/gl.hpp index 3e21731330..976b7d2f74 100644 --- a/src/mbgl/gl/gl.hpp +++ b/src/mbgl/gl/gl.hpp @@ -1,36 +1,10 @@ #pragma once +#include <mbgl/gl/gl_impl.hpp> + #include <stdexcept> #include <limits> -#if __APPLE__ - #include "TargetConditionals.h" - #if TARGET_OS_IPHONE - #include <OpenGLES/ES2/gl.h> - #include <OpenGLES/ES2/glext.h> - #elif TARGET_IPHONE_SIMULATOR - #include <OpenGLES/ES2/gl.h> - #include <OpenGLES/ES2/glext.h> - #elif TARGET_OS_MAC - #include <OpenGL/OpenGL.h> - #include <OpenGL/gl.h> - #include <OpenGL/glext.h> - #else - #error Unsupported Apple platform - #endif -#elif __ANDROID__ || MBGL_USE_GLES2 - #define GL_GLEXT_PROTOTYPES - #include <GLES2/gl2.h> - #include <GLES2/gl2ext.h> -#elif __QT__ && QT_VERSION >= 0x050000 - #define GL_GLEXT_PROTOTYPES - #include <QtGui/qopengl.h> -#else - #define GL_GLEXT_PROTOTYPES - #include <GL/gl.h> - #include <GL/glext.h> -#endif - namespace mbgl { namespace gl { |