8d866e1
From e2f5d3d365ced3da2005792c69d7e1cdbe5ece50 Mon Sep 17 00:00:00 2001
8d866e1
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
8d866e1
Date: Fri, 25 Nov 2016 20:25:27 +0000
8d866e1
Subject: [PATCH] change from glew to epoxy
8d866e1
8d866e1
cause that works under wayland out of the box and gtk3 uses it already
8d866e1
8d866e1
Change-Id: Iefaac31e325534a81a5389f752804af917c1baef
8d866e1
---
8d866e1
 Makefile.fetch                                     |  2 +-
8d866e1
 RepositoryExternal.mk                              | 46 +++++------
8d866e1
 avmedia/Library_avmedia.mk                         |  2 +-
8d866e1
 avmedia/Library_avmediaogl.mk                      |  6 +-
8d866e1
 bin/check-elf-dynamic-objects                      |  2 +-
8d866e1
 bin/lo-all-static-libs                             |  2 +-
8d866e1
 canvas/Library_oglcanvas.mk                        |  7 +-
8d866e1
 canvas/source/opengl/ogl_buffercontext.hxx         |  2 +-
8d866e1
 canvas/source/opengl/ogl_canvascustomsprite.cxx    |  2 +-
8d866e1
 canvas/source/opengl/ogl_canvashelper.cxx          |  2 +-
8d866e1
 canvas/source/opengl/ogl_canvastools.cxx           |  2 +-
8d866e1
 canvas/source/opengl/ogl_texturecache.cxx          |  2 +-
8d866e1
 canvas/source/opengl/ogl_tools.hxx                 |  3 +-
8d866e1
 chart2/Library_chartcore.mk                        |  9 +--
8d866e1
 chart2/Library_chartopengl.mk                      |  4 +-
8d866e1
 chart2/inc/pch/precompiled_chartcore.hxx           |  2 +-
8d866e1
 chart2/source/view/charttypes/GL3DBarChart.cxx     |  2 +-
8d866e1
 chart2/source/view/main/GL3DRenderer.cxx           |  8 +-
8d866e1
 chart2/source/view/main/OpenGLRender.cxx           |  2 +-
8d866e1
 config_host.mk.in                                  |  6 +-
8d866e1
 config_host/config_opengl.h.in                     | 10 ---
8d866e1
 configure.ac                                       | 21 ++---
8d866e1
 cui/Library_cui.mk                                 |  2 +-
8d866e1
 distro-configs/LibreOfficeFlatpak.conf             |  1 -
8d866e1
 download.lst                                       |  7 +-
8d866e1
 external/Module_external.mk                        |  2 +-
8d866e1
 external/epoxy/Library_epoxy.mk                    | 63 +++++++++++++++
8d866e1
 external/{glew => epoxy}/Makefile                  |  0
8d866e1
 .../{glew/Module_glew.mk => epoxy/Module_epoxy.mk} |  9 +--
8d866e1
 external/epoxy/README                              |  5 ++
8d866e1
 external/epoxy/UnpackedTarball_epoxy.mk            | 20 +++++
8d866e1
 external/epoxy/epoxy.windows.api.patch             | 90 ++++++++++++++++++++++
8d866e1
 external/glew/ExternalPackage_glew.mk              | 33 --------
8d866e1
 external/glew/ExternalProject_glew.mk              | 36 ---------
8d866e1
 external/glew/README                               |  6 --
8d866e1
 external/glew/UnpackedTarball_glew.mk              | 48 ------------
8d866e1
 external/glew/glew-macosx-install-name.patch.1     | 13 ----
8d866e1
 external/glew/glew-msvc-disable-sse2.patch.1       | 10 ---
8d866e1
 external/glew/glew-static-only.patch.1             | 12 ---
8d866e1
 external/glew/glew-tmpdir.patch.1                  | 13 ----
8d866e1
 external/glew/glew_use_CC_variable.patch.1         | 24 ------
8d866e1
 external/libgltf/ExternalProject_libgltf.mk        | 10 +--
8d866e1
 external/libgltf/libgltf-msvc-x64.patch.1          | 31 ++++----
8d866e1
 include/vcl/opengl/OpenGLContext.hxx               |  6 +-
8d866e1
 include/vcl/opengl/OpenGLHelper.hxx                |  2 +-
8d866e1
 include/vcl/opengl/OpenGLWrapper.hxx               |  2 +-
8d866e1
 slideshow/Library_OGLTrans.mk                      |  9 +--
8d866e1
 slideshow/Library_slideshow.mk                     |  2 +-
8d866e1
 slideshow/source/engine/opengl/TransitionImpl.cxx  |  1 -
8d866e1
 slideshow/source/engine/opengl/TransitionImpl.hxx  |  3 +-
8d866e1
 .../source/engine/opengl/TransitionerImpl.cxx      |  2 +-
8d866e1
 svx/Library_svxcore.mk                             |  2 +-
8d866e1
 toolkit/Library_tk.mk                              |  2 +-
8d866e1
 vcl/CppunitTest_vcl_bitmap_test.mk                 |  2 +-
8d866e1
 vcl/CppunitTest_vcl_wmf_test.mk                    |  4 +-
8d866e1
 vcl/Executable_icontest.mk                         |  2 +-
8d866e1
 vcl/Executable_vcldemo.mk                          |  2 +-
8d866e1
 vcl/Executable_visualbackendtest.mk                |  1 -
8d866e1
 vcl/Library_vcl.mk                                 |  3 +-
8d866e1
 vcl/Library_vclplug_gen.mk                         |  3 +-
8d866e1
 vcl/Library_vclplug_gtk.mk                         |  2 +-
8d866e1
 vcl/Library_vclplug_gtk3.mk                        |  2 +-
8d866e1
 vcl/Library_vclplug_kde4.mk                        |  2 +-
8d866e1
 vcl/inc/opengl/LineRenderUtils.hxx                 |  1 -
8d866e1
 vcl/inc/opengl/VertexUtils.hxx                     |  2 +-
8d866e1
 vcl/inc/opengl/framebuffer.hxx                     |  1 -
8d866e1
 vcl/inc/opengl/program.hxx                         |  1 -
8d866e1
 vcl/inc/opengl/texture.hxx                         |  2 +-
8d866e1
 vcl/inc/pch/precompiled_vcl.hxx                    |  2 +-
8d866e1
 vcl/inc/unx/saldisp.hxx                            |  2 +-
8d866e1
 vcl/opengl/x11/gdiimpl.cxx                         | 31 ++++----
8d866e1
 vcl/osx/salobj.cxx                                 |  4 +-
8d866e1
 vcl/source/opengl/OpenGLContext.cxx                | 34 ++------
8d866e1
 vcl/source/opengl/OpenGLHelper.cxx                 |  8 +-
8d866e1
 vcl/unx/generic/app/saldisp.cxx                    |  1 -
8d866e1
 vcl/workben/icontest.cxx                           |  2 -
8d866e1
 77 files changed, 340 insertions(+), 418 deletions(-)
8d866e1
 delete mode 100644 config_host/config_opengl.h.in
8d866e1
 create mode 100644 external/epoxy/Library_epoxy.mk
8d866e1
 rename external/{glew => epoxy}/Makefile (100%)
8d866e1
 rename external/{glew/Module_glew.mk => epoxy/Module_epoxy.mk} (69%)
8d866e1
 create mode 100644 external/epoxy/README
8d866e1
 create mode 100644 external/epoxy/UnpackedTarball_epoxy.mk
8d866e1
 create mode 100644 external/epoxy/epoxy.windows.api.patch
8d866e1
 delete mode 100644 external/glew/ExternalPackage_glew.mk
8d866e1
 delete mode 100644 external/glew/ExternalProject_glew.mk
8d866e1
 delete mode 100644 external/glew/README
8d866e1
 delete mode 100644 external/glew/UnpackedTarball_glew.mk
8d866e1
 delete mode 100644 external/glew/glew-macosx-install-name.patch.1
8d866e1
 delete mode 100644 external/glew/glew-msvc-disable-sse2.patch.1
8d866e1
 delete mode 100644 external/glew/glew-static-only.patch.1
8d866e1
 delete mode 100644 external/glew/glew-tmpdir.patch.1
8d866e1
 delete mode 100644 external/glew/glew_use_CC_variable.patch.1
8d866e1
8d866e1
diff --git a/Makefile.fetch b/Makefile.fetch
8d866e1
index 3e21be3..cf31e5b 100644
8d866e1
--- a/Makefile.fetch
8d866e1
+++ b/Makefile.fetch
8d866e1
@@ -129,7 +129,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
8d866e1
 		$(call fetch_Optional,FONTCONFIG,FONTCONFIG_TARBALL) \
8d866e1
 		$(call fetch_Optional,FREEHAND,FREEHAND_TARBALL) \
8d866e1
 		$(call fetch_Optional,FREETYPE,FREETYPE_TARBALL) \
8d866e1
-		$(call fetch_Optional,GLEW,GLEW_TARBALL) \
8d866e1
+		$(call fetch_Optional,EPOXY,EPOXY_TARBALL) \
8d866e1
 		$(call fetch_Optional,GLM,GLM_TARBALL) \
8d866e1
 		$(call fetch_Optional_pack,GOOGLE_DOCS_EXTENSION_PACK) \
8d866e1
 		$(call fetch_Optional,GRAPHITE,GRAPHITE_TARBALL) \
8d866e1
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
8d866e1
index 109b924..16ba7a8 100644
8d866e1
--- a/RepositoryExternal.mk
8d866e1
+++ b/RepositoryExternal.mk
8d866e1
@@ -183,51 +183,43 @@ endef
8d866e1
 
8d866e1
 endif # SYSTEM_CPPUNIT
8d866e1
 
8d866e1
-ifneq ($(SYSTEM_GLEW),)
8d866e1
+ifneq ($(SYSTEM_EPOXY),)
8d866e1
 
8d866e1
-define gb_LinkTarget__use_glew
8d866e1
+define gb_LinkTarget__use_epoxy
8d866e1
 $(call gb_LinkTarget_set_include,$(1),\
8d866e1
 	$$(INCLUDE) \
8d866e1
-    $(GLEW_CFLAGS) \
8d866e1
+    $(EPOXY_CFLAGS) \
8d866e1
 )
8d866e1
-$(call gb_LinkTarget_add_libs,$(1),$(GLEW_LIBS))
8d866e1
+$(call gb_LinkTarget_add_libs,$(1),$(EPOXY_LIBS))
8d866e1
 
8d866e1
 endef
8d866e1
 
8d866e1
-gb_ExternalProject__use_glew :=
8d866e1
+gb_ExternalProject__use_epoxy :=
8d866e1
 
8d866e1
-else # !SYSTEM_GLEW
8d866e1
+else # !SYSTEM_EPOXY
8d866e1
 
8d866e1
-$(eval $(call gb_Helper_register_packages_for_install,ooo,\
8d866e1
-	glew \
8d866e1
-))
8d866e1
-
8d866e1
-define gb_LinkTarget__use_glew
8d866e1
-$(call gb_LinkTarget_use_package,$(1),glew)
8d866e1
+define gb_LinkTarget__use_epoxy
8d866e1
 $(call gb_LinkTarget_set_include,$(1),\
8d866e1
-	-I$(call gb_UnpackedTarball_get_dir,glew/include) \
8d866e1
-	-DGLEW_NO_GLU \
8d866e1
-	$$(INCLUDE) \
8d866e1
+       -I$(call gb_UnpackedTarball_get_dir,epoxy/include) \
8d866e1
+       $$(INCLUDE) \
8d866e1
 )
8d866e1
 
8d866e1
-ifeq ($(COM),MSC)
8d866e1
-$(call gb_LinkTarget_add_libs,$(1),\
8d866e1
-	$(call gb_UnpackedTarball_get_dir,glew)/lib/$(if $(MSVC_USE_DEBUG_RUNTIME),Debug/$(wnt_arch_subdir_mandatory)/glew32d.lib,Release/$(wnt_arch_subdir_mandatory)/glew32.lib) \
8d866e1
-)
8d866e1
-else
8d866e1
-$(call gb_LinkTarget_add_libs,$(1),\
8d866e1
-	-L$(call gb_UnpackedTarball_get_dir,glew)/lib/ -lGLEW \
8d866e1
+$(call gb_LinkTarget_use_libraries,$(1),\
8d866e1
+    epoxy \
8d866e1
 )
8d866e1
-endif
8d866e1
 
8d866e1
 endef
8d866e1
 
8d866e1
-define gb_ExternalProject__use_glew
8d866e1
-$(call gb_ExternalProject_use_external_project,$(1),glew)
8d866e1
+$(eval $(call gb_Helper_register_libraries_for_install,PLAINLIBS_OOO,ooo,\
8d866e1
+	epoxy \
8d866e1
+))
8d866e1
+
8d866e1
+define gb_ExternalProject__use_epoxy
8d866e1
+$(call gb_ExternalProject_use_external_project,$(1),epoxy)
8d866e1
 
8d866e1
 endef
8d866e1
 
8d866e1
-endif # SYSTEM_GLEW
8d866e1
+endif # SYSTEM_EPOXY
8d866e1
 
8d866e1
 define gb_LinkTarget__use_iconv
8d866e1
 $(call gb_LinkTarget_add_libs,$(1),-liconv)
8d866e1
@@ -3444,7 +3436,7 @@ $(call gb_LinkTarget_add_libs,$(1),\
8d866e1
 )
8d866e1
 else
8d866e1
 $(call gb_LinkTarget_add_libs,$(1),\
8d866e1
-	$(call gb_UnpackedTarball_get_dir,libgltf)/src/.libs/libgltf-0.0$(gb_StaticLibrary_PLAINEXT) \
8d866e1
+	$(call gb_UnpackedTarball_get_dir,libgltf)/src/.libs/libgltf-0.1$(gb_StaticLibrary_PLAINEXT) \
8d866e1
 )
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/avmedia/Library_avmedia.mk b/avmedia/Library_avmedia.mk
8d866e1
index 4e8f3b1..e662fc3 100644
8d866e1
--- a/avmedia/Library_avmedia.mk
8d866e1
+++ b/avmedia/Library_avmedia.mk
8d866e1
@@ -29,7 +29,7 @@ $(eval $(call gb_Library_use_externals,avmedia,\
8d866e1
 
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,avmedia,\
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
 ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/avmedia/Library_avmediaogl.mk b/avmedia/Library_avmediaogl.mk
8d866e1
index b7498bf..191fb75 100644
8d866e1
--- a/avmedia/Library_avmediaogl.mk
8d866e1
+++ b/avmedia/Library_avmediaogl.mk
8d866e1
@@ -16,7 +16,7 @@ $(eval $(call gb_Library_use_sdk_api,avmediaogl))
8d866e1
 $(eval $(call gb_Library_use_externals,avmediaogl, \
8d866e1
     boost_headers \
8d866e1
     libgltf \
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
     glm_headers \
8d866e1
 ))
8d866e1
 
8d866e1
@@ -51,10 +51,6 @@ else ifeq ($(OS),MACOSX)
8d866e1
 $(eval $(call gb_Library_use_system_darwin_frameworks,avmediaogl,\
8d866e1
 	OpenGL \
8d866e1
 ))
8d866e1
-else ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
8d866e1
-$(eval $(call gb_Library_add_libs,avmediaogl,\
8d866e1
-    -lGL \
8d866e1
-))
8d866e1
 endif
8d866e1
 
8d866e1
 # vim: set noet sw=4 ts=4:
8d866e1
diff --git a/bin/check-elf-dynamic-objects b/bin/check-elf-dynamic-objects
8d866e1
index f05d513..d189c1b 100755
8d866e1
--- a/bin/check-elf-dynamic-objects
8d866e1
+++ b/bin/check-elf-dynamic-objects
8d866e1
@@ -110,7 +110,7 @@ local file="$1"
8d866e1
         */libdesktop_detectorlo.so|*/ui-previewer|*/oosplash|*/gengal.bin)
8d866e1
             whitelist="${whitelist} ${x11whitelist}"
8d866e1
         ;;
8d866e1
-        */libvclplug_genlo.so|*/libGLEW.so.*|*/libchartcorelo.so|*/libavmediaogl.so|*/libOGLTranslo.so|*/liboglcanvaslo.so|*/libchartopengllo.so)
8d866e1
+        */libvclplug_genlo.so|*/libchartcorelo.so|*/libavmediaogl.so|*/libOGLTranslo.so|*/liboglcanvaslo.so|*/libchartopengllo.so)
8d866e1
             whitelist="${whitelist} ${x11whitelist} ${openglwhitelist}"
8d866e1
         ;;
8d866e1
         */libvcllo.so|*/libsofficeapp.so)
8d866e1
diff --git a/bin/lo-all-static-libs b/bin/lo-all-static-libs
8d866e1
index 813241e..9faa042 100755
8d866e1
--- a/bin/lo-all-static-libs
8d866e1
+++ b/bin/lo-all-static-libs
8d866e1
@@ -63,7 +63,7 @@ echo $INSTDIR/$LIBO_LIB_FOLDER/lib*.a \
8d866e1
      $WORKDIR/UnpackedTarball/coinmp/CoinMP/src/.libs/*.a \
8d866e1
      $WORKDIR/UnpackedTarball/coinmp/CoinUtils/src/.libs/*.a \
8d866e1
      $WORKDIR/UnpackedTarball/coinmp/Osi/src/Osi/.libs/*.a \
8d866e1
-     $WORKDIR/UnpackedTarball/glew/lib/*.a \
8d866e1
+     $WORKDIR/UnpackedTarball/epoxy/lib/*.a \
8d866e1
      $WORKDIR/UnpackedTarball/icu/source/lib/*.a \
8d866e1
      $WORKDIR/UnpackedTarball/langtag/liblangtag/.libs/*.a \
8d866e1
      $WORKDIR/UnpackedTarball/lcms2/src/.libs/*.a \
8d866e1
diff --git a/canvas/Library_oglcanvas.mk b/canvas/Library_oglcanvas.mk
8d866e1
index 0118eb1..9d1042d 100644
8d866e1
--- a/canvas/Library_oglcanvas.mk
8d866e1
+++ b/canvas/Library_oglcanvas.mk
8d866e1
@@ -42,7 +42,7 @@ $(eval $(call gb_Library_add_exception_objects,oglcanvas,\
8d866e1
 
8d866e1
 $(eval $(call gb_Library_use_externals,oglcanvas,\
8d866e1
 	boost_headers \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 ))
8d866e1
 
8d866e1
 ifeq ($(strip $(OS)),MACOSX)
8d866e1
@@ -58,11 +58,6 @@ $(eval $(call gb_Library_use_system_win32_libs,oglcanvas,\
8d866e1
     opengl32 \
8d866e1
 ))
8d866e1
 
8d866e1
-else
8d866e1
-$(eval $(call gb_Library_add_libs,oglcanvas,\
8d866e1
-    -lGL \
8d866e1
-    -lX11 \
8d866e1
-))
8d866e1
 endif
8d866e1
 
8d866e1
 # vim: set noet sw=4 ts=4:
8d866e1
diff --git a/canvas/source/opengl/ogl_buffercontext.hxx b/canvas/source/opengl/ogl_buffercontext.hxx
8d866e1
index 202e063..7f2066a 100644
8d866e1
--- a/canvas/source/opengl/ogl_buffercontext.hxx
8d866e1
+++ b/canvas/source/opengl/ogl_buffercontext.hxx
8d866e1
@@ -10,7 +10,7 @@
8d866e1
 #ifndef INCLUDED_CANVAS_SOURCE_OPENGL_OGL_BUFFERCONTEXT_HXX
8d866e1
 #define INCLUDED_CANVAS_SOURCE_OPENGL_OGL_BUFFERCONTEXT_HXX
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <sal/config.h>
8d866e1
 #include <memory>
8d866e1
diff --git a/canvas/source/opengl/ogl_canvascustomsprite.cxx b/canvas/source/opengl/ogl_canvascustomsprite.cxx
8d866e1
index 8d38177..6b23d45 100644
8d866e1
--- a/canvas/source/opengl/ogl_canvascustomsprite.cxx
8d866e1
+++ b/canvas/source/opengl/ogl_canvascustomsprite.cxx
8d866e1
@@ -9,7 +9,7 @@
8d866e1
 
8d866e1
 #include <sal/config.h>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <basegfx/matrix/b2dhommatrix.hxx>
8d866e1
 #include <basegfx/point/b2dpoint.hxx>
8d866e1
diff --git a/canvas/source/opengl/ogl_canvashelper.cxx b/canvas/source/opengl/ogl_canvashelper.cxx
8d866e1
index 84a96ce..175a02b 100644
8d866e1
--- a/canvas/source/opengl/ogl_canvashelper.cxx
8d866e1
+++ b/canvas/source/opengl/ogl_canvashelper.cxx
8d866e1
@@ -11,7 +11,7 @@
8d866e1
 
8d866e1
 #include <memory>
8d866e1
 #include <functional>
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <basegfx/polygon/b2dpolygontriangulator.hxx>
8d866e1
 #include <basegfx/polygon/b2dpolypolygon.hxx>
8d866e1
diff --git a/canvas/source/opengl/ogl_canvastools.cxx b/canvas/source/opengl/ogl_canvastools.cxx
8d866e1
index 657a220..3d9448b 100644
8d866e1
--- a/canvas/source/opengl/ogl_canvastools.cxx
8d866e1
+++ b/canvas/source/opengl/ogl_canvastools.cxx
8d866e1
@@ -9,7 +9,7 @@
8d866e1
 
8d866e1
 #include <sal/config.h>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <basegfx/matrix/b2dhommatrix.hxx>
8d866e1
 #include <basegfx/polygon/b2dpolygontriangulator.hxx>
8d866e1
diff --git a/canvas/source/opengl/ogl_texturecache.cxx b/canvas/source/opengl/ogl_texturecache.cxx
8d866e1
index 08cdd2f..43fb7d8 100644
8d866e1
--- a/canvas/source/opengl/ogl_texturecache.cxx
8d866e1
+++ b/canvas/source/opengl/ogl_texturecache.cxx
8d866e1
@@ -9,7 +9,7 @@
8d866e1
 
8d866e1
 #include <sal/config.h>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <com/sun/star/geometry/IntegerSize2D.hpp>
8d866e1
 
8d866e1
diff --git a/canvas/source/opengl/ogl_tools.hxx b/canvas/source/opengl/ogl_tools.hxx
8d866e1
index 8133212..469a5be 100644
8d866e1
--- a/canvas/source/opengl/ogl_tools.hxx
8d866e1
+++ b/canvas/source/opengl/ogl_tools.hxx
8d866e1
@@ -11,8 +11,7 @@
8d866e1
 #define INCLUDED_CANVAS_SOURCE_OPENGL_OGL_TOOLS_HXX
8d866e1
 
8d866e1
 #include <sal/config.h>
8d866e1
-#include <GL/glew.h>
8d866e1
-
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 namespace oglcanvas
8d866e1
 {
8d866e1
diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk
8d866e1
index b15f634..cc06fbd 100644
8d866e1
--- a/chart2/Library_chartcore.mk
8d866e1
+++ b/chart2/Library_chartcore.mk
8d866e1
@@ -32,7 +32,7 @@ $(eval $(call gb_Library_use_externals,chartcore,\
8d866e1
 
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,chartcore,\
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
 ))
8d866e1
 endif
8d866e1
 
8d866e1
@@ -264,13 +264,6 @@ else ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
8d866e1
 $(eval $(call gb_Library_add_libs,chartcore,\
8d866e1
 	$(DLOPEN_LIBS) \
8d866e1
 ))
8d866e1
-ifeq ($(ENABLE_HEADLESS),)
8d866e1
-$(eval $(call gb_Library_add_libs,chartcore,\
8d866e1
-    -lGL \
8d866e1
-    -lX11 \
8d866e1
-))
8d866e1
-endif #!ENABLE_HEADLESS
8d866e1
-
8d866e1
 endif
8d866e1
 
8d866e1
 # vim: set noet sw=4 ts=4:
8d866e1
diff --git a/chart2/Library_chartopengl.mk b/chart2/Library_chartopengl.mk
8d866e1
index 95ea58d..53056aa 100644
8d866e1
--- a/chart2/Library_chartopengl.mk
8d866e1
+++ b/chart2/Library_chartopengl.mk
8d866e1
@@ -22,7 +22,7 @@ $(eval $(call gb_Library_set_precompiled_header,chartopengl,$(SRCDIR)/chart2/inc
8d866e1
 $(eval $(call gb_Library_use_externals,chartopengl,\
8d866e1
 	boost_headers \
8d866e1
 	glm_headers \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 ))
8d866e1
 
8d866e1
 $(eval $(call gb_Library_use_sdk_api,chartopengl))
8d866e1
@@ -68,8 +68,6 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,chartopengl,\
8d866e1
 else ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
8d866e1
 $(eval $(call gb_Library_add_libs,chartopengl,\
8d866e1
 	$(DLOPEN_LIBS) \
8d866e1
-	-lGL \
8d866e1
-	-lX11 \
8d866e1
 ))
8d866e1
 endif
8d866e1
  
8d866e1
diff --git a/chart2/inc/pch/precompiled_chartcore.hxx b/chart2/inc/pch/precompiled_chartcore.hxx
8d866e1
index 8d02451..908d7ac 100644
8d866e1
--- a/chart2/inc/pch/precompiled_chartcore.hxx
8d866e1
+++ b/chart2/inc/pch/precompiled_chartcore.hxx
8d866e1
@@ -73,7 +73,6 @@
8d866e1
 #include <vcl/virdev.hxx>
8d866e1
 #include <vcl/wall.hxx>
8d866e1
 #include <ChartModel.hxx>
8d866e1
-#include <GL/glew.h>
8d866e1
 #include <basegfx/basegfxdllapi.h>
8d866e1
 #include <basegfx/matrix/b3dhommatrix.hxx>
8d866e1
 #include <basegfx/numeric/ftools.hxx>
8d866e1
@@ -169,6 +168,7 @@
8d866e1
 #include <cppuhelper/weak.hxx>
8d866e1
 #include <editeng/editengdllapi.h>
8d866e1
 #include <editeng/unoprnms.hxx>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <i18nlangtag/i18nlangtagdllapi.h>
8d866e1
 #include <i18nlangtag/lang.h>
8d866e1
 #include <i18nlangtag/languagetag.hxx>
8d866e1
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
8d866e1
index a4193da..401b664 100644
8d866e1
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
8d866e1
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
8d866e1
@@ -9,7 +9,7 @@
8d866e1
 
8d866e1
 #include <GL3DBarChart.hxx>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <glm/glm.hpp>
8d866e1
 #include <glm/gtx/transform.hpp>
8d866e1
diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx
8d866e1
index fb4fb13..e1e4c01 100644
8d866e1
--- a/chart2/source/view/main/GL3DRenderer.cxx
8d866e1
+++ b/chart2/source/view/main/GL3DRenderer.cxx
8d866e1
@@ -7,7 +7,7 @@
8d866e1
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
  */
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include "GL3DRenderer.hxx"
8d866e1
 
8d866e1
@@ -244,8 +244,8 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
8d866e1
         m_3DBatchNormalID = glGetAttribLocation(m_3DBatchProID, "vertexNormalModelspace");
8d866e1
         m_3DBatchColorID = glGetAttribLocation(m_3DBatchProID, "barColor");
8d866e1
 #if !defined MACOSX
8d866e1
-        //check whether the texture array is support
8d866e1
-        mbTexBatchSupport = GLEW_EXT_texture_array;
8d866e1
+        //check whether the texture array is supported
8d866e1
+        mbTexBatchSupport = epoxy_has_gl_extension("GL_EXT_texture_array");
8d866e1
 #endif
8d866e1
         CHECK_GL_ERROR();
8d866e1
         if (mbTexBatchSupport)
8d866e1
@@ -401,7 +401,7 @@ void OpenGL3DRenderer::init()
8d866e1
     m_fViewAngle = 30.0f;
8d866e1
     m_3DProjection = glm::perspective(m_fViewAngle, (float)m_iWidth / (float)m_iHeight, 0.01f, 6000.0f);
8d866e1
 
8d866e1
-    maResources.m_b330Support = GLEW_VERSION_3_3;
8d866e1
+    maResources.m_b330Support = epoxy_gl_version() >= 33;
8d866e1
     CHECK_GL_ERROR();
8d866e1
     maResources.LoadShaders();
8d866e1
     maPickingResources.LoadShaders();
8d866e1
diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
8d866e1
index 3182e66..91a3763 100644
8d866e1
--- a/chart2/source/view/main/OpenGLRender.cxx
8d866e1
+++ b/chart2/source/view/main/OpenGLRender.cxx
8d866e1
@@ -7,7 +7,7 @@
8d866e1
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
  */
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <vector>
8d866e1
 #include "OpenGLRender.hxx"
8d866e1
 #include <vcl/graph.hxx>
8d866e1
diff --git a/config_host.mk.in b/config_host.mk.in
8d866e1
index 3d39dcd..2a8fe3d 100644
8d866e1
--- a/config_host.mk.in
8d866e1
+++ b/config_host.mk.in
8d866e1
@@ -201,8 +201,8 @@ export GIO_LIBS=$(gb_SPACE)@GIO_LIBS@
8d866e1
 export GIT_REFERENCE_SRC=@GIT_REFERENCE_SRC@
8d866e1
 export GIT_LINK_SRC=@GIT_LINK_SRC@
8d866e1
 export GIT_NEEDED_SUBMODULES=@GIT_NEEDED_SUBMODULES@
8d866e1
-export GLEW_CFLAGS=$(gb_SPACE)@GLEW_CFLAGS@
8d866e1
-export GLEW_LIBS=$(gb_SPACE)@GLEW_LIBS@
8d866e1
+export EPOXY_CFLAGS=$(gb_SPACE)@EPOXY_CFLAGS@
8d866e1
+export EPOXY_LIBS=$(gb_SPACE)@EPOXY_LIBS@
8d866e1
 export GLM_CFLAGS=$(gb_SPACE)@GLM_CFLAGS@
8d866e1
 export GNOMEVFS_CFLAGS=$(gb_SPACE)@GNOMEVFS_CFLAGS@
8d866e1
 export GNOMEVFS_LIBS=$(gb_SPACE)@GNOMEVFS_LIBS@
8d866e1
@@ -514,7 +514,7 @@ export SYSTEM_FIREBIRD=@SYSTEM_FIREBIRD@
8d866e1
 export SYSTEM_GENBRK=@SYSTEM_GENBRK@
8d866e1
 export SYSTEM_GENCCODE=@SYSTEM_GENCCODE@
8d866e1
 export SYSTEM_GENCMN=@SYSTEM_GENCMN@
8d866e1
-export SYSTEM_GLEW=@SYSTEM_GLEW@
8d866e1
+export SYSTEM_EPOXY=@SYSTEM_EPOXY@
8d866e1
 export SYSTEM_GLM=@SYSTEM_GLM@
8d866e1
 export SYSTEM_GRAPHITE=@SYSTEM_GRAPHITE@
8d866e1
 export SYSTEM_HARFBUZZ=@SYSTEM_HARFBUZZ@
8d866e1
diff --git a/config_host/config_opengl.h.in b/config_host/config_opengl.h.in
8d866e1
deleted file mode 100644
8d866e1
index 67b9e47..0000000
8d866e1
--- a/config_host/config_opengl.h.in
8d866e1
+++ /dev/null
8d866e1
@@ -1,10 +0,0 @@
8d866e1
-/*
8d866e1
-Settings for OpenGL
8d866e1
-*/
8d866e1
-
8d866e1
-#ifndef CONFIG_OPENGL_H
8d866e1
-#define CONFIG_OPENGL_H
8d866e1
-
8d866e1
-#define HAVE_GLEW_1_12 0
8d866e1
-
8d866e1
-#endif
8d866e1
diff --git a/configure.ac b/configure.ac
8d866e1
index 079e856..0f8e58d 100644
8d866e1
--- a/configure.ac
8d866e1
+++ b/configure.ac
8d866e1
@@ -1634,6 +1634,11 @@ AC_ARG_WITH(system-cairo,
8d866e1
         [Use cairo libraries already on system.  Happens automatically for
8d866e1
          (implicit) --enable-gtk and for --enable-gtk3.]))
8d866e1
 
8d866e1
+AC_ARG_WITH(system-epoxy,
8d866e1
+    AS_HELP_STRING([--with-system-epoxy],
8d866e1
+        [Use epoxy libraries already on system.  Happens automatically for
8d866e1
+         --enable-gtk3.]))
8d866e1
+
8d866e1
 AC_ARG_WITH(myspell-dicts,
8d866e1
     AS_HELP_STRING([--with-myspell-dicts],
8d866e1
         [Adds myspell dictionaries to the LibreOffice installation set]),
8d866e1
@@ -8941,14 +8946,6 @@ AC_SUBST([GLM_CFLAGS])
8d866e1
 AC_SUBST([SYSTEM_GLM])
8d866e1
 
8d866e1
 dnl ===================================================================
8d866e1
-dnl Check for system glew
8d866e1
-dnl ===================================================================
8d866e1
-libo_CHECK_SYSTEM_MODULE([glew], [GLEW], [glew >= 1.10.0])
8d866e1
-AS_IF([test "$with_system_glew" = "yes"],
8d866e1
-    [PKG_CHECK_EXISTS([glew >= 1.12.0], [AC_DEFINE([HAVE_GLEW_1_12])])],
8d866e1
-    [AC_DEFINE([HAVE_GLEW_1_12])])
8d866e1
-
8d866e1
-dnl ===================================================================
8d866e1
 dnl Check for system odbc
8d866e1
 dnl ===================================================================
8d866e1
 AC_MSG_CHECKING([which odbc headers to use])
8d866e1
@@ -10497,7 +10494,7 @@ if test "x$enable_gltf" != "xno" -a $_os != iOS -a $_os != Android -a "$ENABLE_H
8d866e1
     AC_DEFINE(HAVE_FEATURE_GLTF,1)
8d866e1
     if test "$with_system_libgltf" = "yes"; then
8d866e1
         SYSTEM_LIBGLTF=TRUE
8d866e1
-        PKG_CHECK_MODULES( LIBGLTF, [libgltf-0.0 >= 0.0.1] )
8d866e1
+        PKG_CHECK_MODULES( LIBGLTF, [libgltf-0.1 >= 0.1.0] )
8d866e1
         FilterLibs "${LIBGLTF_LIBS}"
8d866e1
         LIBGLTF_LIBS="${filteredlibs}"
8d866e1
     else
8d866e1
@@ -11728,6 +11725,11 @@ AC_SUBST(CAIRO_CFLAGS)
8d866e1
 AC_SUBST(CAIRO_LIBS)
8d866e1
 
8d866e1
 dnl ===================================================================
8d866e1
+dnl Check for system epoxy
8d866e1
+dnl ===================================================================
8d866e1
+libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.3.1], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
8d866e1
+
8d866e1
+dnl ===================================================================
8d866e1
 dnl Test whether to use avahi
8d866e1
 dnl ===================================================================
8d866e1
 if test "$_os" = "WINNT"; then
8d866e1
@@ -12886,7 +12888,6 @@ AC_CONFIG_HEADERS([config_host/config_mpl.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_orcus.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_kde4.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_oox.h])
8d866e1
-AC_CONFIG_HEADERS([config_host/config_opengl.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_options.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
8d866e1
 AC_CONFIG_HEADERS([config_host/config_test.h])
8d866e1
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
8d866e1
index 6a63a1d..64f7844 100644
8d866e1
--- a/cui/Library_cui.mk
8d866e1
+++ b/cui/Library_cui.mk
8d866e1
@@ -72,7 +72,7 @@ $(eval $(call gb_Library_use_externals,cui,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,cui,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/distro-configs/LibreOfficeFlatpak.conf b/distro-configs/LibreOfficeFlatpak.conf
8d866e1
index d5d6686..121d198 100644
8d866e1
--- a/distro-configs/LibreOfficeFlatpak.conf
8d866e1
+++ b/distro-configs/LibreOfficeFlatpak.conf
8d866e1
@@ -11,7 +11,6 @@
8d866e1
 --without-system-coinmp
8d866e1
 --without-system-cppunit
8d866e1
 --without-system-firebird
8d866e1
---without-system-glew
8d866e1
 --without-system-glm
8d866e1
 --without-system-libabw
8d866e1
 --without-system-libcdr
8d866e1
diff --git a/download.lst b/download.lst
8d866e1
index 3e3313b..9d7af4f 100644
8d866e1
--- a/download.lst
8d866e1
+++ b/download.lst
8d866e1
@@ -29,6 +29,8 @@ export CURL_TARBALL := curl-7.51.0.tar.gz
8d866e1
 export DBGHELP_DLL := 13fbc2e8b37ddf28181dd6d8081c2b8e-dbghelp.dll
8d866e1
 export EBOOK_MD5SUM := 6b48eda57914e6343efebc9381027b78
8d866e1
 export EBOOK_TARBALL := libe-book-0.1.2.tar.bz2
8d866e1
+export EPOXY_MD5SUM := 96f6620a9b005a503e7b44b0b528287d
8d866e1
+export EPOXY_TARBALL := libepoxy-1.3.1.tar.bz2
8d866e1
 export EPM_TARBALL := 3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz
8d866e1
 export ETONYEK_MD5SUM := 77ff46936dcc83670557274e7dd2aa33
8d866e1
 export ETONYEK_VERSION_MICRO := 6
8d866e1
@@ -54,7 +56,6 @@ export FONT_EMOJIONE_COLOR_TARBALL := EmojiOneColor-SVGinOT-1.3.tar.gz
8d866e1
 export FREEHAND_MD5SUM := 8cf70c5dc4d24d2dc4a107f509d2d6d7
8d866e1
 export FREEHAND_TARBALL := libfreehand-0.1.1.tar.bz2
8d866e1
 export FREETYPE_TARBALL := dbf2caca1d3afd410a29217a9809d397-freetype-2.4.8.tar.bz2
8d866e1
-export GLEW_TARBALL := 3941e9cab2f4f9d8faee3e8d57ae7664-glew-1.12.0.zip
8d866e1
 export GLM_TARBALL := bae83fa5dc7f081768daace6e199adc3-glm-0.9.4.6-libreoffice.zip
8d866e1
 export GRAPHITE_TARBALL := 3069842a88b8f40c6b83ad2850cda293-graphite2-minimal-1.3.9.tgz
8d866e1
 export HARFBUZZ_MD5SUM := 5986e1bfcd983d1f6caa53ef64c4abc5
8d866e1
@@ -88,8 +89,8 @@ export LIBATOMIC_OPS_TARBALL := libatomic_ops-7_2d.zip
8d866e1
 export LIBEOT_MD5SUM := aa24f5dd2a2992f4a116aa72af817548
8d866e1
 export LIBEOT_TARBALL := libeot-0.01.tar.bz2
8d866e1
 export LIBEXTTEXTCAT_TARBALL := 10d61fbaa6a06348823651b1bd7940fe-libexttextcat-3.4.4.tar.bz2
8d866e1
-export LIBGLTF_MD5SUM := d63a9f47ab048f5009d90693d6aa6424
8d866e1
-export LIBGLTF_TARBALL := libgltf-0.0.2.tar.bz2
8d866e1
+export LIBGLTF_MD5SUM := 63ae962d0c436909979826fce0fca2fd
8d866e1
+export LIBGLTF_TARBALL := libgltf-0.1.0.tar.gz
8d866e1
 export LIBLANGTAG_MD5SUM := 284f120247323a35122ab32b4b359c45
8d866e1
 export LIBLANGTAG_TARBALL := liblangtag-0.6.2.tar.bz2
8d866e1
 export LIBTOMMATH_MD5SUM := da283d2e3e72137d0c600ac36b991c9d
8d866e1
diff --git a/external/Module_external.mk b/external/Module_external.mk
8d866e1
index 1dbf97b..c14e668 100644
8d866e1
--- a/external/Module_external.mk
8d866e1
+++ b/external/Module_external.mk
8d866e1
@@ -38,13 +38,13 @@ $(eval $(call gb_Module_add_moduledirs,external,\
8d866e1
 	$(call gb_Helper_optional,CURL,curl) \
8d866e1
 	$(call gb_Helper_optional,EBOOK,libebook) \
8d866e1
 	$(call gb_Helper_optional,EPM,epm) \
8d866e1
+	$(call gb_Helper_optional,EPOXY,epoxy) \
8d866e1
 	$(call gb_Helper_optional,ETONYEK,libetonyek) \
8d866e1
 	$(call gb_Helper_optional,EXPAT,expat) \
8d866e1
 	$(call gb_Helper_optional,FIREBIRD,firebird) \
8d866e1
 	$(call gb_Helper_optional,FONTCONFIG,fontconfig) \
8d866e1
 	$(call gb_Helper_optional,FREEHAND,libfreehand) \
8d866e1
 	$(call gb_Helper_optional,FREETYPE,freetype) \
8d866e1
-	$(call gb_Helper_optional,GLEW,glew) \
8d866e1
 	$(call gb_Helper_optional,GLM,glm) \
8d866e1
 	$(call gb_Helper_optional,GRAPHITE,graphite) \
8d866e1
 	$(call gb_Helper_optional,HARFBUZZ,harfbuzz) \
8d866e1
diff --git a/external/epoxy/Library_epoxy.mk b/external/epoxy/Library_epoxy.mk
8d866e1
new file mode 100644
8d866e1
index 0000000..28f9dab
8d866e1
--- /dev/null
8d866e1
+++ b/external/epoxy/Library_epoxy.mk
8d866e1
@@ -0,0 +1,63 @@
8d866e1
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
8d866e1
+#
8d866e1
+# This file is part of the LibreOffice project.
8d866e1
+#
8d866e1
+# This Source Code Form is subject to the terms of the Mozilla Public
8d866e1
+# License, v. 2.0. If a copy of the MPL was not distributed with this
8d866e1
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
+#
8d866e1
+
8d866e1
+$(eval $(call gb_Library_Library,epoxy))
8d866e1
+
8d866e1
+$(eval $(call gb_Library_use_unpacked,epoxy,epoxy))
8d866e1
+
8d866e1
+$(eval $(call gb_Library_set_warnings_not_errors,epoxy))
8d866e1
+
8d866e1
+$(eval $(call gb_Library_set_include,epoxy,\
8d866e1
+	-I$(WORKDIR)/UnpackedTarball/epoxy/include \
8d866e1
+	-I$(WORKDIR)/UnpackedTarball/epoxy/src \
8d866e1
+	$$(INCLUDE) \
8d866e1
+))
8d866e1
+
8d866e1
+# epoxy is riddled with warnings... let's spare use
8d866e1
+# the pointless spamming
8d866e1
+$(eval $(call gb_Library_add_cxxflags,epoxy,\
8d866e1
+	-w \
8d866e1
+))
8d866e1
+$(eval $(call gb_Library_add_cflags,epoxy,\
8d866e1
+	-w \
8d866e1
+))
8d866e1
+
8d866e1
+ifeq ($(OS),LINUX)
8d866e1
+$(eval $(call gb_Library_add_libs,epoxy,\
8d866e1
+	-ldl \
8d866e1
+))
8d866e1
+endif
8d866e1
+
8d866e1
+$(eval $(call gb_Library_add_generated_cobjects,epoxy,\
8d866e1
+	UnpackedTarball/epoxy/src/dispatch_common \
8d866e1
+	UnpackedTarball/epoxy/src/gl_generated_dispatch \
8d866e1
+))
8d866e1
+
8d866e1
+ifeq ($(OS),WNT)
8d866e1
+$(eval $(call gb_Library_add_generated_cobjects,epoxy,\
8d866e1
+	UnpackedTarball/epoxy/src/dispatch_wgl \
8d866e1
+	UnpackedTarball/epoxy/src/wgl_generated_dispatch \
8d866e1
+))
8d866e1
+else ifeq ($(OS),MACOSX)
8d866e1
+# nothing
8d866e1
+else ifeq ($(OS),ANDROID)
8d866e1
+$(eval $(call gb_Library_add_generated_cobjects,epoxy,\
8d866e1
+	UnpackedTarball/epoxy/src/dispatch_egl \
8d866e1
+	UnpackedTarball/epoxy/src/egl_generated_dispatch \
8d866e1
+))
8d866e1
+else
8d866e1
+$(eval $(call gb_Library_add_generated_cobjects,epoxy,\
8d866e1
+	UnpackedTarball/epoxy/src/dispatch_glx \
8d866e1
+	UnpackedTarball/epoxy/src/glx_generated_dispatch \
8d866e1
+	UnpackedTarball/epoxy/src/dispatch_egl \
8d866e1
+	UnpackedTarball/epoxy/src/egl_generated_dispatch \
8d866e1
+))
8d866e1
+endif
8d866e1
+
8d866e1
+# vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/glew/Makefile b/external/epoxy/Makefile
8d866e1
similarity index 100%
8d866e1
rename from external/glew/Makefile
8d866e1
rename to external/epoxy/Makefile
8d866e1
diff --git a/external/glew/Module_glew.mk b/external/epoxy/Module_epoxy.mk
8d866e1
similarity index 69%
8d866e1
rename from external/glew/Module_glew.mk
8d866e1
rename to external/epoxy/Module_epoxy.mk
8d866e1
index 1d1b9a7..ea65176 100644
8d866e1
--- a/external/glew/Module_glew.mk
8d866e1
+++ b/external/epoxy/Module_epoxy.mk
8d866e1
@@ -7,12 +7,11 @@
8d866e1
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
 #
8d866e1
 
8d866e1
-$(eval $(call gb_Module_Module,glew))
8d866e1
+$(eval $(call gb_Module_Module,epoxy))
8d866e1
 
8d866e1
-$(eval $(call gb_Module_add_targets,glew,\
8d866e1
-	ExternalProject_glew \
8d866e1
-	UnpackedTarball_glew \
8d866e1
-	ExternalPackage_glew \
8d866e1
+$(eval $(call gb_Module_add_targets,epoxy,\
8d866e1
+	Library_epoxy \
8d866e1
+	UnpackedTarball_epoxy \
8d866e1
 ))
8d866e1
 
8d866e1
 # vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/epoxy/README b/external/epoxy/README
8d866e1
new file mode 100644
8d866e1
index 0000000..8bd467a
8d866e1
--- /dev/null
8d866e1
+++ b/external/epoxy/README
8d866e1
@@ -0,0 +1,5 @@
8d866e1
+Epoxy is an OpenGL Extension Wrangler
8d866e1
+
8d866e1
+Epoxy is a library for handling OpenGL function pointer management for you
8d866e1
+
8d866e1
+https://github.com/anholt/libepoxy
8d866e1
diff --git a/external/epoxy/UnpackedTarball_epoxy.mk b/external/epoxy/UnpackedTarball_epoxy.mk
8d866e1
new file mode 100644
8d866e1
index 0000000..76c0fdf
8d866e1
--- /dev/null
8d866e1
+++ b/external/epoxy/UnpackedTarball_epoxy.mk
8d866e1
@@ -0,0 +1,20 @@
8d866e1
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
8d866e1
+#
8d866e1
+# This file is part of the LibreOffice project.
8d866e1
+#
8d866e1
+# This Source Code Form is subject to the terms of the Mozilla Public
8d866e1
+# License, v. 2.0. If a copy of the MPL was not distributed with this
8d866e1
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
+#
8d866e1
+
8d866e1
+$(eval $(call gb_UnpackedTarball_UnpackedTarball,epoxy))
8d866e1
+
8d866e1
+$(eval $(call gb_UnpackedTarball_set_tarball,epoxy,$(EPOXY_TARBALL)))
8d866e1
+
8d866e1
+$(eval $(call gb_UnpackedTarball_set_patchlevel,epoxy,0))
8d866e1
+
8d866e1
+$(eval $(call gb_UnpackedTarball_add_patches,epoxy, \
8d866e1
+    external/epoxy/epoxy.windows.api.patch \
8d866e1
+))
8d866e1
+
8d866e1
+# vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/epoxy/epoxy.windows.api.patch b/external/epoxy/epoxy.windows.api.patch
8d866e1
new file mode 100644
8d866e1
index 0000000..12d2afb
8d866e1
--- /dev/null
8d866e1
+++ b/external/epoxy/epoxy.windows.api.patch
8d866e1
@@ -0,0 +1,90 @@
8d866e1
+--- include/epoxy/gl.h
8d866e1
++++ include/epoxy/gl.h
8d866e1
+@@ -59,7 +59,8 @@
8d866e1
+ 
8d866e1
+ #else
8d866e1
+ #ifndef APIENTRY
8d866e1
+-#define APIENTRY __stdcall
8d866e1
++#define WINAPI __stdcall
8d866e1
++#define APIENTRY WINAPI
8d866e1
+ #endif
8d866e1
+ 
8d866e1
+ #ifndef GLAPIENTRY
8d866e1
+--- src/egl_generated_dispatch.c
8d866e1
++++ src/egl_generated_dispatch.c
8d866e1
+@@ -128,7 +128,11 @@
8d866e1
+ };
8d866e1
+ 
8d866e1
+ #if USING_DISPATCH_TABLE
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void);
8d866e1
+ 
8d866e1
+ #endif
8d866e1
+@@ -1642,7 +1646,11 @@
8d866e1
+ uint32_t egl_tls_index;
8d866e1
+ uint32_t egl_tls_size = sizeof(struct dispatch_table);
8d866e1
+ 
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void)
8d866e1
+ {
8d866e1
+ 	return TlsGetValue(egl_tls_index);
8d866e1
+--- src/gl_generated_dispatch.c
8d866e1
++++ src/gl_generated_dispatch.c
8d866e1
+@@ -3122,7 +3122,11 @@
8d866e1
+ };
8d866e1
+ 
8d866e1
+ #if USING_DISPATCH_TABLE
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void);
8d866e1
+ 
8d866e1
+ #endif
8d866e1
+@@ -51507,7 +51511,11 @@
8d866e1
+ uint32_t gl_tls_index;
8d866e1
+ uint32_t gl_tls_size = sizeof(struct dispatch_table);
8d866e1
+ 
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void)
8d866e1
+ {
8d866e1
+ 	return TlsGetValue(gl_tls_index);
8d866e1
+--- src/wgl_generated_dispatch.c
8d866e1
++++ src/wgl_generated_dispatch.c
8d866e1
+@@ -157,7 +157,11 @@
8d866e1
+ };
8d866e1
+ 
8d866e1
+ #if USING_DISPATCH_TABLE
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void);
8d866e1
+ 
8d866e1
+ #endif
8d866e1
+@@ -1701,7 +1705,11 @@
8d866e1
+ uint32_t wgl_tls_index;
8d866e1
+ uint32_t wgl_tls_size = sizeof(struct dispatch_table);
8d866e1
+ 
8d866e1
++#if defined (_MSC_VER)
8d866e1
++static __inline struct dispatch_table *
8d866e1
++#else
8d866e1
+ static inline struct dispatch_table *
8d866e1
++#endif
8d866e1
+ get_dispatch_table(void)
8d866e1
+ {
8d866e1
+ 	return TlsGetValue(wgl_tls_index);
8d866e1
diff --git a/external/glew/ExternalPackage_glew.mk b/external/glew/ExternalPackage_glew.mk
8d866e1
deleted file mode 100644
8d866e1
index e6adc8b..0000000
8d866e1
--- a/external/glew/ExternalPackage_glew.mk
8d866e1
+++ /dev/null
8d866e1
@@ -1,33 +0,0 @@
8d866e1
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
8d866e1
-#
8d866e1
-# This file is part of the LibreOffice project.
8d866e1
-#
8d866e1
-# This Source Code Form is subject to the terms of the Mozilla Public
8d866e1
-# License, v. 2.0. If a copy of the MPL was not distributed with this
8d866e1
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
-#
8d866e1
-
8d866e1
-$(eval $(call gb_ExternalPackage_ExternalPackage,glew,glew))
8d866e1
-
8d866e1
-$(eval $(call gb_ExternalPackage_use_external_project,glew,glew))
8d866e1
-
8d866e1
-ifeq ($(OS)-$(COM),WNT-MSC)
8d866e1
-ifeq ($(CPUNAME),INTEL)
8d866e1
-glew_arch_subdir=Win32
8d866e1
-else ifeq ($(CPUNAME),X86_64)
8d866e1
-glew_arch_subdir=x64
8d866e1
-endif
8d866e1
-endif
8d866e1
-
8d866e1
-ifeq ($(OS),MACOSX)
8d866e1
-$(eval $(call gb_ExternalPackage_add_file,glew,$(LIBO_LIB_FOLDER)/libGLEW.1.12.0.dylib,lib/libGLEW.1.12.0.dylib))
8d866e1
-else ifeq ($(OS)-$(COM),WNT-GCC)
8d866e1
-else ifeq ($(COM),MSC)
8d866e1
-$(eval $(call gb_ExternalPackage_add_files,glew,$(LIBO_LIB_FOLDER), \
8d866e1
-	bin/$(if $(MSVC_USE_DEBUG_RUNTIME),Debug/$(glew_arch_subdir)/glew32d.dll,Release/$(glew_arch_subdir)/glew32.dll) \
8d866e1
-))
8d866e1
-else ifeq ($(DISABLE_DYNLOADING),)
8d866e1
-$(eval $(call gb_ExternalPackage_add_file,glew,$(LIBO_LIB_FOLDER)/libGLEW.so.1.12,lib/libGLEW.so.1.12.0))
8d866e1
-endif
8d866e1
-
8d866e1
-# vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/glew/ExternalProject_glew.mk b/external/glew/ExternalProject_glew.mk
8d866e1
deleted file mode 100644
8d866e1
index 0d80cd0..0000000
8d866e1
--- a/external/glew/ExternalProject_glew.mk
8d866e1
+++ /dev/null
8d866e1
@@ -1,36 +0,0 @@
8d866e1
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
8d866e1
-#
8d866e1
-# This file is part of the LibreOffice project.
8d866e1
-#
8d866e1
-# This Source Code Form is subject to the terms of the Mozilla Public
8d866e1
-# License, v. 2.0. If a copy of the MPL was not distributed with this
8d866e1
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
-#
8d866e1
-
8d866e1
-$(eval $(call gb_ExternalProject_ExternalProject,glew))
8d866e1
-
8d866e1
-$(eval $(call gb_ExternalProject_register_targets,glew,\
8d866e1
-	build \
8d866e1
-))
8d866e1
-
8d866e1
-ifeq ($(COM),MSC)
8d866e1
-$(call gb_ExternalProject_get_state_target,glew,build) :
8d866e1
-	$(call gb_ExternalProject_run,build,\
8d866e1
-		$(if $(filter 140,$(VCVER)),$(DEVENV) /Upgrade glew.sln,echo up-to-date) && \
8d866e1
-		msbuild.exe glew_shared.vcxproj /p:Platform=$(if $(filter INTEL,$(CPUNAME)),Win32,x64) /p:Configuration=$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release) $(if $(filter 140,$(VCVER)),/p:PlatformToolset=v140,/p:PlatformToolset=v120) \
8d866e1
-	,build/vc12) \
8d866e1
-	$(call gb_ExternalProject_run,build,\
8d866e1
-		msbuild.exe glewinfo.vcxproj /p:Platform=$(if $(filter INTEL,$(CPUNAME)),Win32,x64) /p:Configuration=Release $(if $(filter 140,$(VCVER)),/p:PlatformToolset=v140,/p:PlatformToolset=v120) \
8d866e1
-	,build/vc12)
8d866e1
-
8d866e1
-else
8d866e1
-
8d866e1
-$(call gb_ExternalProject_get_state_target,glew,build) :
8d866e1
-	$(call gb_ExternalProject_run,glew,\
8d866e1
-		$(if $(ENABLE_DEBUG),STRIP=) LD="$(CC)" \
8d866e1
-			$(MAKE) STRIP= glew.lib $(if $(filter DESKTOP,$(BUILD_TYPE)),$(if $(ENABLE_DEBUG),debug)) \
8d866e1
-	)
8d866e1
-
8d866e1
-endif
8d866e1
-
8d866e1
-# vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/glew/README b/external/glew/README
8d866e1
deleted file mode 100644
8d866e1
index 34b2d24..0000000
8d866e1
--- a/external/glew/README
8d866e1
+++ /dev/null
8d866e1
@@ -1,6 +0,0 @@
8d866e1
-GLEW is the OpenGL Extension Wrangler
8d866e1
-
8d866e1
-GLEW provides efficient run-time mechanisms for determining which OpenGL
8d866e1
-extensions are supported on the target platform.
8d866e1
-
8d866e1
-http://glew.sourceforge.net/
8d866e1
diff --git a/external/glew/UnpackedTarball_glew.mk b/external/glew/UnpackedTarball_glew.mk
8d866e1
deleted file mode 100644
8d866e1
index c47b7a0..0000000
8d866e1
--- a/external/glew/UnpackedTarball_glew.mk
8d866e1
+++ /dev/null
8d866e1
@@ -1,48 +0,0 @@
8d866e1
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
8d866e1
-#
8d866e1
-# This file is part of the LibreOffice project.
8d866e1
-#
8d866e1
-# This Source Code Form is subject to the terms of the Mozilla Public
8d866e1
-# License, v. 2.0. If a copy of the MPL was not distributed with this
8d866e1
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
-#
8d866e1
-
8d866e1
-$(eval $(call gb_UnpackedTarball_UnpackedTarball,glew))
8d866e1
-
8d866e1
-$(eval $(call gb_UnpackedTarball_set_tarball,glew,$(GLEW_TARBALL)))
8d866e1
-
8d866e1
-$(eval $(call gb_UnpackedTarball_set_patchlevel,glew,0))
8d866e1
-
8d866e1
-$(eval $(call gb_UnpackedTarball_fix_end_of_line,glew,\
8d866e1
-	Makefile \
8d866e1
-	include/GL/glew.h \
8d866e1
-))
8d866e1
-
8d866e1
-ifeq ($(OS)$(COM),WNTMSC)
8d866e1
-$(eval $(call gb_UnpackedTarball_set_patchflags,glew,--binary))
8d866e1
-$(eval $(call gb_UnpackedTarball_add_patches,glew,\
8d866e1
-	external/glew/glew-msvc-disable-sse2.patch.1 \
8d866e1
-))
8d866e1
-else
8d866e1
-$(eval $(call gb_UnpackedTarball_add_patches,glew,\
8d866e1
-	external/glew/glew_use_CC_variable.patch.1 \
8d866e1
-))
8d866e1
-endif
8d866e1
-
8d866e1
-ifeq ($(OS),MACOSX)
8d866e1
-$(eval $(call gb_UnpackedTarball_add_patches,glew,\
8d866e1
-	external/glew/glew-macosx-install-name.patch.1 \
8d866e1
-))
8d866e1
-endif
8d866e1
-
8d866e1
-ifeq ($(DISABLE_DYNLOADING),TRUE)
8d866e1
-$(eval $(call gb_UnpackedTarball_add_patches,glew,\
8d866e1
-	external/glew/glew-static-only.patch.1 \
8d866e1
-))
8d866e1
-endif
8d866e1
-
8d866e1
-$(eval $(call gb_UnpackedTarball_add_patches,glew,\
8d866e1
-	external/glew/glew-tmpdir.patch.1 \
8d866e1
-))
8d866e1
-
8d866e1
-# vim: set noet sw=4 ts=4:
8d866e1
diff --git a/external/glew/glew-macosx-install-name.patch.1 b/external/glew/glew-macosx-install-name.patch.1
8d866e1
deleted file mode 100644
8d866e1
index 75e8e7f..0000000
8d866e1
--- a/external/glew/glew-macosx-install-name.patch.1
8d866e1
+++ /dev/null
8d866e1
@@ -1,13 +0,0 @@
8d866e1
--*- Mode:Diff -*-
8d866e1
-diff -ur glew.org/build/glew.rc glew/build/glew.rc
8d866e1
---- glew/config/Makefile.darwin
8d866e1
-+++ glew/config/Makefile.darwin
8d866e1
-@@ -20,7 +20,7 @@
8d866e1
- LIB.DEVLNK    = lib$(NAME).dylib
8d866e1
- LIB.SHARED    = lib$(NAME).$(SO_VERSION).dylib
8d866e1
- LIB.STATIC    = lib$(NAME).a
8d866e1
--LDFLAGS.SO    = -dynamiclib -install_name $(GLEW_DEST)/lib/$(LIB.SHARED) -current_version $(SO_VERSION) -compatibility_version $(SO_MAJOR)
8d866e1
-+LDFLAGS.SO    = -dynamiclib -install_name @__________________________________________________OOO/$(LIB.SHARED) -current_version $(SO_VERSION) -compatibility_version $(SO_MAJOR)
8d866e1
- LIB.SONAME.MX = lib$(NAME)mx.$(SO_MAJOR).dylib
8d866e1
- LIB.DEVLNK.MX = lib$(NAME)mx.dylib
8d866e1
- LIB.SHARED.MX = lib$(NAME)mx.$(SO_VERSION).dylib
8d866e1
diff --git a/external/glew/glew-msvc-disable-sse2.patch.1 b/external/glew/glew-msvc-disable-sse2.patch.1
8d866e1
deleted file mode 100644
8d866e1
index 6b07044..0000000
8d866e1
--- a/external/glew/glew-msvc-disable-sse2.patch.1
8d866e1
+++ /dev/null
8d866e1
@@ -1,10 +0,0 @@
8d866e1
---- glew/build//vc10/common.props.orig	2014-10-02 15:06:57.027060664 +0200
8d866e1
-+++ glew/build//vc10/common.props	2014-10-02 15:06:59.026060509 +0200
8d866e1
-@@ -10,6 +10,7 @@
8d866e1
-   <ItemDefinitionGroup>
8d866e1
-     <ClCompile>
8d866e1
-       <AdditionalIncludeDirectories>$(INCLUDE_DIR)</AdditionalIncludeDirectories>
8d866e1
-+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
8d866e1
-     </ClCompile>
8d866e1
-   </ItemDefinitionGroup>
8d866e1
-   <ItemGroup>
8d866e1
diff --git a/external/glew/glew-static-only.patch.1 b/external/glew/glew-static-only.patch.1
8d866e1
deleted file mode 100644
8d866e1
index 14ccff2..0000000
8d866e1
--- a/external/glew/glew-static-only.patch.1
8d866e1
+++ /dev/null
8d866e1
@@ -1,12 +0,0 @@
8d866e1
--*- Mode:Diff -*-
8d866e1
---- glew/Makefile
8d866e1
-+++ glew/Makefile
8d866e1
-@@ -93,7 +93,7 @@
8d866e1
- LIB.SOBJS.MX       := $(addprefix tmp/$(SYSTEM)/mx/shared/,$(LIB.SRCS.NAMES))
8d866e1
- LIB.SOBJS.MX       := $(LIB.SOBJS.MX:.c=.o)
8d866e1
- 
8d866e1
--glew.lib: lib lib/$(LIB.SHARED) lib/$(LIB.STATIC) glew.pc
8d866e1
-+glew.lib: lib lib/$(LIB.STATIC)
8d866e1
- 
8d866e1
- lib:
8d866e1
- 	mkdir lib
8d866e1
diff --git a/external/glew/glew-tmpdir.patch.1 b/external/glew/glew-tmpdir.patch.1
8d866e1
deleted file mode 100644
8d866e1
index 9a2847b..0000000
8d866e1
--- a/external/glew/glew-tmpdir.patch.1
8d866e1
+++ /dev/null
8d866e1
@@ -1,13 +0,0 @@
8d866e1
-diff -ur glew.org/Makefile glew/Makefile
8d866e1
---- glew.org/Makefile	2016-05-02 06:25:53.521291677 +0200
8d866e1
-+++ glew/Makefile	2016-05-02 06:31:10.325035494 +0200
8d866e1
-@@ -55,7 +55,8 @@
8d866e1
- DIST_SRC_TGZ ?= $(shell pwd)/$(DIST_NAME).tgz
8d866e1
- DIST_WIN32   ?= $(shell pwd)/$(DIST_NAME)-win32.zip
8d866e1
- 
8d866e1
--DIST_DIR := $(shell mktemp -d /tmp/glew.XXXXXX)/$(DIST_NAME)
8d866e1
-+TMPDIR ?= /tmp
8d866e1
-+DIST_DIR := $(shell mktemp -d $(TMPDIR)/glew.XXXXXX)/$(DIST_NAME)
8d866e1
- 
8d866e1
- # To disable stripping of binaries either:
8d866e1
- #   - use STRIP= on gmake command-line
8d866e1
diff --git a/external/glew/glew_use_CC_variable.patch.1 b/external/glew/glew_use_CC_variable.patch.1
8d866e1
deleted file mode 100644
8d866e1
index 56e9903..0000000
8d866e1
--- a/external/glew/glew_use_CC_variable.patch.1
8d866e1
+++ /dev/null
8d866e1
@@ -1,24 +0,0 @@
8d866e1
-Use CC variable from environment, don't hardcode "cc".
8d866e1
-
8d866e1
---- glew/config/Makefile.linux.orig	2014-01-29 15:39:43.364972925 +0100
8d866e1
-+++ glew/config/Makefile.linux	2014-01-29 15:44:45.621000941 +0100
8d866e1
-@@ -1,6 +1,6 @@
8d866e1
- NAME = $(GLEW_NAME)
8d866e1
--CC = cc
8d866e1
--LD = cc
8d866e1
-+CC ?= cc
8d866e1
-+LD ?= $(CC)
8d866e1
- M_ARCH ?= $(shell uname -m)
8d866e1
- ARCH64 = false
8d866e1
- ifeq (x86_64,${M_ARCH})
8d866e1
---- glew/config/Makefile.darwin.orig	2014-01-29 15:44:39.541000377 +0100
8d866e1
-+++ glew/config/Makefile.darwin	2014-01-29 15:44:47.548001120 +0100
8d866e1
-@@ -1,6 +1,6 @@
8d866e1
- NAME = $(GLEW_NAME)
8d866e1
--CC = cc
8d866e1
--LD = cc
8d866e1
-+CC ?= cc
8d866e1
-+LD ?= $(CC)
8d866e1
- CFLAGS.EXTRA = -dynamic -fno-common
8d866e1
- #CFLAGS.EXTRA += -no-cpp-precomp
8d866e1
- LDFLAGS.EXTRA =
8d866e1
diff --git a/external/libgltf/ExternalProject_libgltf.mk b/external/libgltf/ExternalProject_libgltf.mk
8d866e1
index 57c01d0..90a1d96 100644
8d866e1
--- a/external/libgltf/ExternalProject_libgltf.mk
8d866e1
+++ b/external/libgltf/ExternalProject_libgltf.mk
8d866e1
@@ -17,7 +17,7 @@ $(eval $(call gb_ExternalProject_register_targets,libgltf,\
8d866e1
 
8d866e1
 $(eval $(call gb_ExternalProject_use_externals,libgltf,\
8d866e1
 	boost_headers \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 	glm_headers \
8d866e1
 ))
8d866e1
 
8d866e1
@@ -30,8 +30,8 @@ ifeq ($(SYSTEM_BOOST),)
8d866e1
 libgltf_AdditionalIncludes += "$(call gb_UnpackedTarball_get_dir,boost)"
8d866e1
 endif
8d866e1
 
8d866e1
-ifeq ($(SYSTEM_GLEW),)
8d866e1
-libgltf_AdditionalIncludes += "$(call gb_UnpackedTarball_get_dir,glew)/include"
8d866e1
+ifeq ($(SYSTEM_EPOXY),)
8d866e1
+libgltf_AdditionalIncludes += "$(call gb_UnpackedTarball_get_dir,epoxy)/include"
8d866e1
 endif
8d866e1
 
8d866e1
 ifeq ($(SYSTEM_GLM),)
8d866e1
@@ -45,7 +45,7 @@ $(call gb_ExternalProject_get_state_target,libgltf,build) :
8d866e1
 			$(if $(filter 120,$(VCVER)),/p:PlatformToolset=v120 /p:VisualStudioVersion=12.0 /ToolsVersion:12.0) \
8d866e1
 			$(if $(filter 140,$(VCVER)),/p:PlatformToolset=v140 /p:VisualStudioVersion=14.0 /ToolsVersion:14.0) \
8d866e1
 			'/p:AdditionalIncludeDirectories=$(subst $(WHITESPACE),;,$(subst /,\,$(strip $(libgltf_AdditionalIncludes))))' \
8d866e1
-			/p:AdditionalLibraryDirectories=$(if $(SYSTEM_GLEW),,"$(subst /,\,$(call gb_UnpackedTarball_get_dir,glew))\lib\$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)\Win32") \
8d866e1
+			/p:AdditionalLibraryDirectories=$(if $(SYSTEM_EPOXY),,"$(subst /,\,$(call gb_UnpackedTarball_get_dir,epoxy))\lib\$(if $(MSVC_USE_DEBUG_RUNTIME),Debug,Release)\Win32") \
8d866e1
 	,build/win32)
8d866e1
 
8d866e1
 else # !ifeq($(COM),MSC)
8d866e1
@@ -67,7 +67,7 @@ $(call gb_ExternalProject_get_state_target,libgltf,build) :
8d866e1
 			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
8d866e1
 			--disable-werror \
8d866e1
 			BOOST_CFLAGS="$(BOOST_CPPFLAGS)" \
8d866e1
-			GLEW_CFLAGS="$(if $(SYSTEM_GLEW),$(GLEW_CFLAGS),-I$(call gb_UnpackedTarball_get_dir,glew)/include) -DGLEW_NO_GLU" \
8d866e1
+			EPOXY_CFLAGS="$(if $(SYSTEM_EPOXY),$(EPOXY_CFLAGS),-I$(call gb_UnpackedTarball_get_dir,epoxy)/include)" \
8d866e1
 			GLM_CFLAGS="$(if $(SYSTEM_GLM),$(GLM_CFLAGS),-I$(call gb_UnpackedTarball_get_dir,glm))" \
8d866e1
 			$(if $(libgltf_CPPFLAGS),CPPFLAGS='$(libgltf_CPPFLAGS)') \
8d866e1
 		&& $(MAKE) \
8d866e1
diff --git a/external/libgltf/libgltf-msvc-x64.patch.1 b/external/libgltf/libgltf-msvc-x64.patch.1
8d866e1
index 86417a7..32a831b 100644
8d866e1
--- a/external/libgltf/libgltf-msvc-x64.patch.1
8d866e1
+++ b/external/libgltf/libgltf-msvc-x64.patch.1
8d866e1
@@ -20,7 +20,7 @@ diff -ur libgltf.org/build/win32/libgltf.vcxproj libgltf/build/win32/libgltf.vcx
8d866e1
    </ItemGroup>
8d866e1
    <ItemGroup>
8d866e1
      <ClInclude Include="..\..\inc\libgltf.h" />
8d866e1
-@@ -56,6 +64,12 @@
8d866e1
+@@ -53,6 +61,12 @@
8d866e1
      <CharacterSet>MultiByte</CharacterSet>
8d866e1
      <PlatformToolset>v110</PlatformToolset>
8d866e1
    </PropertyGroup>
8d866e1
@@ -33,7 +33,7 @@ diff -ur libgltf.org/build/win32/libgltf.vcxproj libgltf/build/win32/libgltf.vcx
8d866e1
    <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
8d866e1
      <ConfigurationType>StaticLibrary</ConfigurationType>
8d866e1
      <UseDebugLibraries>false</UseDebugLibraries>
8d866e1
-@@ -63,15 +77,28 @@
8d866e1
+@@ -60,15 +74,28 @@
8d866e1
      <CharacterSet>MultiByte</CharacterSet>
8d866e1
      <PlatformToolset>v110</PlatformToolset>
8d866e1
    </PropertyGroup>
8d866e1
@@ -62,8 +62,8 @@ diff -ur libgltf.org/build/win32/libgltf.vcxproj libgltf/build/win32/libgltf.vcx
8d866e1
    <PropertyGroup Label="UserMacros" />
8d866e1
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
8d866e1
      <ClCompile>
8d866e1
-@@ -86,6 +113,19 @@
8d866e1
-       <AdditionalDependencies>opengl32.lib;glew32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
+@@ -83,10 +110,42 @@
8d866e1
+       <AdditionalDependencies>opengl32.lib;epoxy32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
      </Link>
8d866e1
    </ItemDefinitionGroup>
8d866e1
 +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
8d866e1
@@ -76,20 +76,13 @@ diff -ur libgltf.org/build/win32/libgltf.vcxproj libgltf/build/win32/libgltf.vcx
8d866e1
 +    <Link>
8d866e1
 +      <GenerateDebugInformation>true</GenerateDebugInformation>
8d866e1
 +      <AdditionalLibraryDirectories>$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
8d866e1
-+      <AdditionalDependencies>opengl32.lib;glew32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
++      <AdditionalDependencies>opengl32.lib;epoxy32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
 +    </Link>
8d866e1
 +  </ItemDefinitionGroup>
8d866e1
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
8d866e1
      <ClCompile>
8d866e1
        <WarningLevel>Level4</WarningLevel>
8d866e1
-@@ -105,6 +145,25 @@
8d866e1
-       <SubSystem>Windows</SubSystem>
8d866e1
-     </Link>
8d866e1
-   </ItemDefinitionGroup>
8d866e1
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
8d866e1
-+    <ClCompile>
8d866e1
-+      <WarningLevel>Level4</WarningLevel>
8d866e1
-+      <Optimization>MaxSpeed</Optimization>
8d866e1
+       <Optimization>MaxSpeed</Optimization>
8d866e1
 +      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
8d866e1
 +      <FunctionLevelLinking>true</FunctionLevelLinking>
8d866e1
 +      <IntrinsicFunctions>true</IntrinsicFunctions>
8d866e1
@@ -101,10 +94,14 @@ diff -ur libgltf.org/build/win32/libgltf.vcxproj libgltf/build/win32/libgltf.vcx
8d866e1
 +      <EnableCOMDATFolding>true</EnableCOMDATFolding>
8d866e1
 +      <OptimizeReferences>true</OptimizeReferences>
8d866e1
 +      <AdditionalLibraryDirectories>$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
8d866e1
-+      <AdditionalDependencies>opengl32.lib;glew32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
++      <AdditionalDependencies>opengl32.lib;epoxy32.lib;$(AdditionalDependencies)</AdditionalDependencies>
8d866e1
 +      <SubSystem>Windows</SubSystem>
8d866e1
 +    </Link>
8d866e1
 +  </ItemDefinitionGroup>
8d866e1
-   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
8d866e1
-   <ImportGroup Label="ExtensionTargets">
8d866e1
-   </ImportGroup>
8d866e1
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
8d866e1
++    <ClCompile>
8d866e1
++      <WarningLevel>Level4</WarningLevel>
8d866e1
++      <Optimization>MaxSpeed</Optimization>
8d866e1
+       <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
8d866e1
+       <FunctionLevelLinking>true</FunctionLevelLinking>
8d866e1
+       <IntrinsicFunctions>true</IntrinsicFunctions>
8d866e1
diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx
8d866e1
index e3e9ce0..ffcd816 100644
8d866e1
--- a/include/vcl/opengl/OpenGLContext.hxx
8d866e1
+++ b/include/vcl/opengl/OpenGLContext.hxx
8d866e1
@@ -12,7 +12,7 @@
8d866e1
 
8d866e1
 #include <string.h>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 
8d866e1
 #include <vcl/dllapi.h>
8d866e1
 #include <vcl/window.hxx>
8d866e1
@@ -158,8 +158,8 @@ private:
8d866e1
     virtual void destroyCurrentContext();
8d866e1
 
8d866e1
 protected:
8d866e1
-    bool InitGLEW();
8d866e1
-    static void InitGLEWDebugging();
8d866e1
+    bool InitGL();
8d866e1
+    static void InitGLDebugging();
8d866e1
     static void InitChildWindow(SystemChildWindow *pChildWindow);
8d866e1
     static void BuffersSwapped();
8d866e1
     virtual GLWindow& getModifiableOpenGLWindow() = 0;
8d866e1
diff --git a/include/vcl/opengl/OpenGLHelper.hxx b/include/vcl/opengl/OpenGLHelper.hxx
8d866e1
index 458021f..23b9b79 100644
8d866e1
--- a/include/vcl/opengl/OpenGLHelper.hxx
8d866e1
+++ b/include/vcl/opengl/OpenGLHelper.hxx
8d866e1
@@ -10,7 +10,7 @@
8d866e1
 #ifndef INCLUDED_VCL_OPENGL_OPENGLHELPER_HXX
8d866e1
 #define INCLUDED_VCL_OPENGL_OPENGLHELPER_HXX
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <sal/log.hxx>
8d866e1
 #include <vcl/dllapi.h>
8d866e1
 #include <vcl/bitmapex.hxx>
8d866e1
diff --git a/include/vcl/opengl/OpenGLWrapper.hxx b/include/vcl/opengl/OpenGLWrapper.hxx
8d866e1
index 3b7f6a7..e9fb967 100644
8d866e1
--- a/include/vcl/opengl/OpenGLWrapper.hxx
8d866e1
+++ b/include/vcl/opengl/OpenGLWrapper.hxx
8d866e1
@@ -7,7 +7,7 @@
8d866e1
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
  */
8d866e1
 
8d866e1
-// Fully wrapped methods that have no exotic GL / GLEW header deps.
8d866e1
+// Fully wrapped methods that have no exotic GL header deps.
8d866e1
 
8d866e1
 #ifndef INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
8d866e1
 #define INCLUDED_VCL_OPENGL_OPENGLWRAPPER_HXX
8d866e1
diff --git a/slideshow/Library_OGLTrans.mk b/slideshow/Library_OGLTrans.mk
8d866e1
index b908a0b..fb04596 100644
8d866e1
--- a/slideshow/Library_OGLTrans.mk
8d866e1
+++ b/slideshow/Library_OGLTrans.mk
8d866e1
@@ -34,7 +34,7 @@ $(eval $(call gb_Library_use_libraries,OGLTrans,\
8d866e1
 
8d866e1
 $(eval $(call gb_Library_use_externals,OGLTrans,\
8d866e1
 	boost_headers \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 	glm_headers \
8d866e1
 ))
8d866e1
 
8d866e1
@@ -56,13 +56,6 @@ $(eval $(call gb_Library_use_system_win32_libs,OGLTrans,\
8d866e1
     opengl32 \
8d866e1
 ))
8d866e1
 
8d866e1
-else
8d866e1
-
8d866e1
-$(eval $(call gb_Library_add_libs,OGLTrans,\
8d866e1
-	-lGL \
8d866e1
-	-lX11 \
8d866e1
-))
8d866e1
-
8d866e1
 endif
8d866e1
 
8d866e1
 $(eval $(call gb_Library_add_exception_objects,OGLTrans,\
8d866e1
diff --git a/slideshow/Library_slideshow.mk b/slideshow/Library_slideshow.mk
8d866e1
index 3a9aac6..0583f5e 100644
8d866e1
--- a/slideshow/Library_slideshow.mk
8d866e1
+++ b/slideshow/Library_slideshow.mk
8d866e1
@@ -31,7 +31,7 @@ $(eval $(call gb_Library_use_externals,slideshow,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,slideshow,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/slideshow/source/engine/opengl/TransitionImpl.cxx b/slideshow/source/engine/opengl/TransitionImpl.cxx
8d866e1
index 60ab587..115aaf2 100644
8d866e1
--- a/slideshow/source/engine/opengl/TransitionImpl.cxx
8d866e1
+++ b/slideshow/source/engine/opengl/TransitionImpl.cxx
8d866e1
@@ -26,7 +26,6 @@
8d866e1
  *
8d866e1
  ************************************************************************/
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
 #include <glm/gtc/matrix_transform.hpp>
8d866e1
 #include <glm/gtc/type_ptr.hpp>
8d866e1
 #include <vcl/opengl/OpenGLHelper.hxx>
8d866e1
diff --git a/slideshow/source/engine/opengl/TransitionImpl.hxx b/slideshow/source/engine/opengl/TransitionImpl.hxx
8d866e1
index 66ecb6b..b739c0c 100644
8d866e1
--- a/slideshow/source/engine/opengl/TransitionImpl.hxx
8d866e1
+++ b/slideshow/source/engine/opengl/TransitionImpl.hxx
8d866e1
@@ -31,8 +31,7 @@
8d866e1
 #include <config_lgpl.h>
8d866e1
 #include <glm/gtc/type_ptr.hpp>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
-
8d866e1
+#include <limits>
8d866e1
 #include <memory>
8d866e1
 #include <vector>
8d866e1
 
8d866e1
diff --git a/slideshow/source/engine/opengl/TransitionerImpl.cxx b/slideshow/source/engine/opengl/TransitionerImpl.cxx
8d866e1
index ef1d385..01cd3e5 100644
8d866e1
--- a/slideshow/source/engine/opengl/TransitionerImpl.cxx
8d866e1
+++ b/slideshow/source/engine/opengl/TransitionerImpl.cxx
8d866e1
@@ -810,7 +810,7 @@ void buildMipmaps(
8d866e1
     GLint internalFormat, GLsizei width, GLsizei height, GLenum format,
8d866e1
     GLenum type, const void * data)
8d866e1
 {
8d866e1
-    if (GLEW_ARB_framebuffer_object) {
8d866e1
+    if (epoxy_has_gl_extension("GL_ARB_framebuffer_object")) {
8d866e1
         glTexImage2D(
8d866e1
             GL_TEXTURE_2D, 0, internalFormat, width, height, 0, format, type,
8d866e1
             data);
8d866e1
diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk
8d866e1
index 557c427..48ecf22 100644
8d866e1
--- a/svx/Library_svxcore.mk
8d866e1
+++ b/svx/Library_svxcore.mk
8d866e1
@@ -88,7 +88,7 @@ $(eval $(call gb_Library_use_externals,svxcore,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,svxcore,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/toolkit/Library_tk.mk b/toolkit/Library_tk.mk
8d866e1
index 27bd721..b9a42d3 100644
8d866e1
--- a/toolkit/Library_tk.mk
8d866e1
+++ b/toolkit/Library_tk.mk
8d866e1
@@ -27,7 +27,7 @@ $(eval $(call gb_Library_use_externals,tk,\
8d866e1
 
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,tk,\
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
 ))
8d866e1
 endif
8d866e1
 $(eval $(call gb_Library_set_include,tk,\
8d866e1
diff --git a/vcl/CppunitTest_vcl_bitmap_test.mk b/vcl/CppunitTest_vcl_bitmap_test.mk
8d866e1
index 879c7ac..70ce156 100644
8d866e1
--- a/vcl/CppunitTest_vcl_bitmap_test.mk
8d866e1
+++ b/vcl/CppunitTest_vcl_bitmap_test.mk
8d866e1
@@ -19,7 +19,7 @@ $(eval $(call gb_CppunitTest_use_externals,vcl_bitmap_test,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_CppunitTest_use_externals,vcl_bitmap_test,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/vcl/CppunitTest_vcl_wmf_test.mk b/vcl/CppunitTest_vcl_wmf_test.mk
8d866e1
index 369c792..7cae363 100644
8d866e1
--- a/vcl/CppunitTest_vcl_wmf_test.mk
8d866e1
+++ b/vcl/CppunitTest_vcl_wmf_test.mk
8d866e1
@@ -87,7 +87,7 @@ $(eval $(call gb_CppunitTest_use_externals,vcl_wmf_test,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_CppunitTest_use_externals,vcl_wmf_test,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
@@ -136,7 +136,6 @@ $(eval $(call gb_CppunitTest_add_libs,vcl_wmf_test,\
8d866e1
     -lm \
8d866e1
     -ldl \
8d866e1
     -lpthread \
8d866e1
-    -lGL \
8d866e1
     -lX11 \
8d866e1
 ))
8d866e1
 endif
8d866e1
@@ -190,7 +189,6 @@ ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS)))
8d866e1
 $(eval $(call gb_CppunitTest_add_libs,vcl_wmf_test,\
8d866e1
     -lm $(DLOPEN_LIBS) \
8d866e1
     -lpthread \
8d866e1
-    -lGL \
8d866e1
     -lX11 \
8d866e1
     -lXext \
8d866e1
 ))
8d866e1
diff --git a/vcl/Executable_icontest.mk b/vcl/Executable_icontest.mk
8d866e1
index 102697b..cce8feb 100644
8d866e1
--- a/vcl/Executable_icontest.mk
8d866e1
+++ b/vcl/Executable_icontest.mk
8d866e1
@@ -15,7 +15,7 @@ $(eval $(call gb_Executable_use_externals,icontest,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Executable_use_externals,icontest,\
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
 ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/vcl/Executable_vcldemo.mk b/vcl/Executable_vcldemo.mk
8d866e1
index bff091e..a09d3b4 100644
8d866e1
--- a/vcl/Executable_vcldemo.mk
8d866e1
+++ b/vcl/Executable_vcldemo.mk
8d866e1
@@ -21,7 +21,7 @@ $(eval $(call gb_Executable_use_externals,vcldemo,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Executable_use_externals,vcldemo,\
8d866e1
-    glew \
8d866e1
+    epoxy \
8d866e1
 ))
8d866e1
 endif
8d866e1
 
8d866e1
diff --git a/vcl/Executable_visualbackendtest.mk b/vcl/Executable_visualbackendtest.mk
8d866e1
index abf8cbe..8704453 100644
8d866e1
--- a/vcl/Executable_visualbackendtest.mk
8d866e1
+++ b/vcl/Executable_visualbackendtest.mk
8d866e1
@@ -46,7 +46,6 @@ $(eval $(call gb_Executable_add_libs,visualbackendtest,\
8d866e1
 	-lm \
8d866e1
 	-ldl \
8d866e1
 	-lpthread \
8d866e1
-    -lGL \
8d866e1
     -lX11 \
8d866e1
 ))
8d866e1
 
8d866e1
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
8d866e1
index f552b55..3bfff8c 100644
8d866e1
--- a/vcl/Library_vcl.mk
8d866e1
+++ b/vcl/Library_vcl.mk
8d866e1
@@ -124,7 +124,7 @@ $(eval $(call gb_Library_use_externals,vcl,\
8d866e1
 ))
8d866e1
 ifeq ($(ENABLE_HEADLESS),)
8d866e1
 $(eval $(call gb_Library_use_externals,vcl,\
8d866e1
-     glew \
8d866e1
+     epoxy \
8d866e1
  ))
8d866e1
 endif
8d866e1
 
8d866e1
@@ -648,7 +648,6 @@ $(eval $(call gb_Library_add_libs,vcl,\
8d866e1
 	-lm \
8d866e1
 	-ldl \
8d866e1
 	-lpthread \
8d866e1
-    -lGL \
8d866e1
     -lX11 \
8d866e1
 ))
8d866e1
 endif
8d866e1
diff --git a/vcl/Library_vclplug_gen.mk b/vcl/Library_vclplug_gen.mk
8d866e1
index f281605..0e1c39c 100644
8d866e1
--- a/vcl/Library_vclplug_gen.mk
8d866e1
+++ b/vcl/Library_vclplug_gen.mk
8d866e1
@@ -51,7 +51,7 @@ $(eval $(call gb_Library_use_externals,vclplug_gen,\
8d866e1
 	boost_headers \
8d866e1
 	cairo \
8d866e1
 	graphite \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 	glm_headers \
8d866e1
 	harfbuzz \
8d866e1
 	icu_headers \
8d866e1
@@ -65,7 +65,6 @@ $(eval $(call gb_Library_add_libs,vclplug_gen,\
8d866e1
 	-lXext \
8d866e1
 	-lSM \
8d866e1
 	-lICE \
8d866e1
-	-lGL \
8d866e1
 ))
8d866e1
 
8d866e1
 $(eval $(call gb_Library_add_exception_objects,vclplug_gen,\
8d866e1
diff --git a/vcl/Library_vclplug_gtk.mk b/vcl/Library_vclplug_gtk.mk
8d866e1
index c32a127..67247b7 100644
8d866e1
--- a/vcl/Library_vclplug_gtk.mk
8d866e1
+++ b/vcl/Library_vclplug_gtk.mk
8d866e1
@@ -59,7 +59,7 @@ $(eval $(call gb_Library_use_externals,vclplug_gtk,\
8d866e1
 	cairo \
8d866e1
 	dbus \
8d866e1
 	gio \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 	gtk \
8d866e1
 	gthread \
8d866e1
 	icuuc \
8d866e1
diff --git a/vcl/Library_vclplug_gtk3.mk b/vcl/Library_vclplug_gtk3.mk
8d866e1
index 8d013d9..1457c1a 100644
8d866e1
--- a/vcl/Library_vclplug_gtk3.mk
8d866e1
+++ b/vcl/Library_vclplug_gtk3.mk
8d866e1
@@ -75,7 +75,7 @@ $(eval $(call gb_Library_use_libraries,vclplug_gtk3,\
8d866e1
 
8d866e1
 $(eval $(call gb_Library_use_externals,vclplug_gtk3,\
8d866e1
 	boost_headers \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 	dbus \
8d866e1
 ))
8d866e1
 
8d866e1
diff --git a/vcl/Library_vclplug_kde4.mk b/vcl/Library_vclplug_kde4.mk
8d866e1
index 30c4069..acd7bd5 100644
8d866e1
--- a/vcl/Library_vclplug_kde4.mk
8d866e1
+++ b/vcl/Library_vclplug_kde4.mk
8d866e1
@@ -54,7 +54,7 @@ $(eval $(call gb_Library_use_externals,vclplug_kde4,\
8d866e1
 	boost_headers \
8d866e1
 	icuuc \
8d866e1
 	kde4 \
8d866e1
-	glew \
8d866e1
+	epoxy \
8d866e1
 ))
8d866e1
 
8d866e1
 $(eval $(call gb_Library_add_libs,vclplug_kde4,\
8d866e1
diff --git a/vcl/inc/opengl/LineRenderUtils.hxx b/vcl/inc/opengl/LineRenderUtils.hxx
8d866e1
index 58ae6a8..e3f375b 100644
8d866e1
--- a/vcl/inc/opengl/LineRenderUtils.hxx
8d866e1
+++ b/vcl/inc/opengl/LineRenderUtils.hxx
8d866e1
@@ -11,7 +11,6 @@
8d866e1
 #ifndef INCLUDED_VCL_INC_OPENGL_LINERENDERUTILS_H
8d866e1
 #define INCLUDED_VCL_INC_OPENGL_LINERENDERUTILS_H
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
 #include "opengl/VertexUtils.hxx"
8d866e1
 #include "opengl/RenderList.hxx"
8d866e1
 
8d866e1
diff --git a/vcl/inc/opengl/VertexUtils.hxx b/vcl/inc/opengl/VertexUtils.hxx
8d866e1
index f9804ec..de2c070 100644
8d866e1
--- a/vcl/inc/opengl/VertexUtils.hxx
8d866e1
+++ b/vcl/inc/opengl/VertexUtils.hxx
8d866e1
@@ -12,7 +12,7 @@
8d866e1
 #define INCLUDED_VCL_INC_OPENGL_VERTEXUTILS_H
8d866e1
 
8d866e1
 #include <basegfx/numeric/ftools.hxx>
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <glm/gtx/norm.hpp>
8d866e1
 #include <vcl/salgtype.hxx>
8d866e1
 #include <vector>
8d866e1
diff --git a/vcl/inc/opengl/framebuffer.hxx b/vcl/inc/opengl/framebuffer.hxx
8d866e1
index ec7a450..a2dbd1e 100644
8d866e1
--- a/vcl/inc/opengl/framebuffer.hxx
8d866e1
+++ b/vcl/inc/opengl/framebuffer.hxx
8d866e1
@@ -10,7 +10,6 @@
8d866e1
 #ifndef INCLUDED_VCL_INC_OPENGL_FRAMEBUFFER_H
8d866e1
 #define INCLUDED_VCL_INC_OPENGL_FRAMEBUFFER_H
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
 #include <vcl/dllapi.h>
8d866e1
 
8d866e1
 #include <opengl/texture.hxx>
8d866e1
diff --git a/vcl/inc/opengl/program.hxx b/vcl/inc/opengl/program.hxx
8d866e1
index 73cdb7f..4632ddf 100644
8d866e1
--- a/vcl/inc/opengl/program.hxx
8d866e1
+++ b/vcl/inc/opengl/program.hxx
8d866e1
@@ -14,7 +14,6 @@
8d866e1
 
8d866e1
 #include <list>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
 #include <vcl/dllapi.h>
8d866e1
 
8d866e1
 #include <basegfx/point/b2dpoint.hxx>
8d866e1
diff --git a/vcl/inc/opengl/texture.hxx b/vcl/inc/opengl/texture.hxx
8d866e1
index a0c8029..fd4eb97 100644
8d866e1
--- a/vcl/inc/opengl/texture.hxx
8d866e1
+++ b/vcl/inc/opengl/texture.hxx
8d866e1
@@ -20,7 +20,7 @@
8d866e1
 #ifndef INCLUDED_VCL_INC_OPENGL_TEXTURE_H
8d866e1
 #define INCLUDED_VCL_INC_OPENGL_TEXTURE_H
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <vcl/dllapi.h>
8d866e1
 #include <vcl/salgtype.hxx>
8d866e1
 #include <rtl/ustring.hxx>
8d866e1
diff --git a/vcl/inc/pch/precompiled_vcl.hxx b/vcl/inc/pch/precompiled_vcl.hxx
8d866e1
index 6ef9e2a..a356ae8 100644
8d866e1
--- a/vcl/inc/pch/precompiled_vcl.hxx
8d866e1
+++ b/vcl/inc/pch/precompiled_vcl.hxx
8d866e1
@@ -56,6 +56,7 @@
8d866e1
 #include <boost/math/special_functions/sinc.hpp>
8d866e1
 #include <boost/multi_array.hpp>
8d866e1
 #include <boost/optional.hpp>
8d866e1
+#include <epoxy/gl.h>
8d866e1
 #include <osl/conditn.hxx>
8d866e1
 #include <osl/diagnose.h>
8d866e1
 #include <osl/diagnose.hxx>
8d866e1
@@ -184,7 +185,6 @@
8d866e1
 #include <vcl/virdev.hxx>
8d866e1
 #include <vcl/window.hxx>
8d866e1
 #include <vcl/wrkwin.hxx>
8d866e1
-#include <GL/glew.h>
8d866e1
 #include <PhysicalFontCollection.hxx>
8d866e1
 #include <PhysicalFontFace.hxx>
8d866e1
 #include <PhysicalFontFamily.hxx>
8d866e1
diff --git a/vcl/inc/unx/saldisp.hxx b/vcl/inc/unx/saldisp.hxx
8d866e1
index 64998df..339ba80 100644
8d866e1
--- a/vcl/inc/unx/saldisp.hxx
8d866e1
+++ b/vcl/inc/unx/saldisp.hxx
8d866e1
@@ -28,7 +28,7 @@ class   SalXLib;
8d866e1
 #include <X11/Xlib.h>
8d866e1
 #include <X11/Xutil.h>
8d866e1
 #include <X11/extensions/Xrender.h>
8d866e1
-#include "GL/glxew.h"
8d866e1
+#include <epoxy/glx.h>
8d866e1
 
8d866e1
 #include <unx/salunx.h>
8d866e1
 #include <unx/saltype.h>
8d866e1
diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx
8d866e1
index b4f87a3..92dd18c 100644
8d866e1
--- a/vcl/opengl/x11/gdiimpl.cxx
8d866e1
+++ b/vcl/opengl/x11/gdiimpl.cxx
8d866e1
@@ -32,6 +32,7 @@
8d866e1
 #include <o3tl/lru_map.hxx>
8d866e1
 
8d866e1
 static std::vector<GLXContext> g_vShareList;
8d866e1
+static bool g_bAnyCurrent;
8d866e1
 
8d866e1
 class X11OpenGLContext : public OpenGLContext
8d866e1
 {
8d866e1
@@ -184,23 +185,10 @@ namespace
8d866e1
         return pFBC;
8d866e1
     }
8d866e1
 
8d866e1
-    // we need them before glew can initialize them
8d866e1
-    // glew needs an OpenGL context so we need to get the address manually
8d866e1
-    void initOpenGLFunctionPointers()
8d866e1
-    {
8d866e1
-        glXChooseFBConfig = reinterpret_cast<GLXFBConfig*(*)(Display *dpy, int screen, const int *attrib_list, int *nelements)>(glXGetProcAddressARB(reinterpret_cast<GLubyte const *>("glXChooseFBConfig")));
8d866e1
-        glXGetVisualFromFBConfig = reinterpret_cast<XVisualInfo*(*)(Display *dpy, GLXFBConfig config)>(glXGetProcAddressARB(reinterpret_cast<GLubyte const *>("glXGetVisualFromFBConfig")));    // try to find a visual for the current set of attributes
8d866e1
-        glXGetFBConfigAttrib = reinterpret_cast<int(*)(Display *dpy, GLXFBConfig config, int attribute, int* value)>(glXGetProcAddressARB(reinterpret_cast<GLubyte const *>("glXGetFBConfigAttrib")));
8d866e1
-        glXCreateContextAttribsARB = reinterpret_cast<GLXContext(*)(Display*, GLXFBConfig, GLXContext, Bool, const int*)>(glXGetProcAddressARB(reinterpret_cast<const GLubyte *>("glXCreateContextAttribsARB")));
8d866e1
-        glXCreatePixmap = reinterpret_cast<GLXPixmap(*)(Display*, GLXFBConfig, Pixmap, const int*)>(glXGetProcAddressARB(reinterpret_cast<const GLubyte *>("glXCreatePixmap")));
8d866e1
-    }
8d866e1
-
8d866e1
     Visual* getVisual(Display* dpy, Window win)
8d866e1
     {
8d866e1
         OpenGLZone aZone;
8d866e1
 
8d866e1
-        initOpenGLFunctionPointers();
8d866e1
-
8d866e1
         XWindowAttributes xattr;
8d866e1
         if( !XGetWindowAttributes( dpy, win, &xattr ) )
8d866e1
         {
8d866e1
@@ -235,7 +223,10 @@ void X11OpenGLContext::resetCurrent()
8d866e1
     OpenGLZone aZone;
8d866e1
 
8d866e1
     if (m_aGLWin.dpy)
8d866e1
+    {
8d866e1
         glXMakeCurrent(m_aGLWin.dpy, None, nullptr);
8d866e1
+        g_bAnyCurrent = false;
8d866e1
+    }
8d866e1
 }
8d866e1
 
8d866e1
 bool X11OpenGLContext::isCurrent()
8d866e1
@@ -247,7 +238,7 @@ bool X11OpenGLContext::isCurrent()
8d866e1
 
8d866e1
 bool X11OpenGLContext::isAnyCurrent()
8d866e1
 {
8d866e1
-    return glXGetCurrentContext() != None;
8d866e1
+    return g_bAnyCurrent && glXGetCurrentContext() != None;
8d866e1
 }
8d866e1
 
8d866e1
 SystemWindowData X11OpenGLContext::generateWinData(vcl::Window* pParent, bool /*bRequestLegacyContext*/)
8d866e1
@@ -266,8 +257,6 @@ SystemWindowData X11OpenGLContext::generateWinData(vcl::Window* pParent, bool /*
8d866e1
     if( dpy == nullptr || !glXQueryExtension( dpy, nullptr, nullptr ) )
8d866e1
         return aWinData;
8d866e1
 
8d866e1
-    initOpenGLFunctionPointers();
8d866e1
-
8d866e1
     int best_fbc = -1;
8d866e1
     GLXFBConfig* pFBC = getFBConfig(dpy, win, best_fbc, true, false);
8d866e1
 
8d866e1
@@ -355,10 +344,13 @@ bool X11OpenGLContext::ImplInit()
8d866e1
 
8d866e1
     if( !glXMakeCurrent( m_aGLWin.dpy, m_aGLWin.win, m_aGLWin.ctx ) )
8d866e1
     {
8d866e1
+        g_bAnyCurrent = false;
8d866e1
         SAL_WARN("vcl.opengl", "unable to select current GLX context");
8d866e1
         return false;
8d866e1
     }
8d866e1
 
8d866e1
+    g_bAnyCurrent = true;
8d866e1
+
8d866e1
     int glxMinor, glxMajor;
8d866e1
     double nGLXVersion = 0;
8d866e1
     if( glXQueryVersion( m_aGLWin.dpy, &glxMajor, &glxMinor ) )
8d866e1
@@ -400,8 +392,8 @@ bool X11OpenGLContext::ImplInit()
8d866e1
         }
8d866e1
     }
8d866e1
 
8d866e1
-    bool bRet = InitGLEW();
8d866e1
-    InitGLEWDebugging();
8d866e1
+    bool bRet = InitGL();
8d866e1
+    InitGLDebugging();
8d866e1
 
8d866e1
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
8d866e1
 
8d866e1
@@ -427,10 +419,12 @@ void X11OpenGLContext::makeCurrent()
8d866e1
     {
8d866e1
         if (!glXMakeCurrent( m_aGLWin.dpy, m_aGLWin.win, m_aGLWin.ctx ))
8d866e1
         {
8d866e1
+            g_bAnyCurrent = false;
8d866e1
             SAL_WARN("vcl.opengl", "OpenGLContext::makeCurrent failed "
8d866e1
                      "on drawable " << m_aGLWin.win);
8d866e1
             return;
8d866e1
         }
8d866e1
+        g_bAnyCurrent = true;
8d866e1
     }
8d866e1
 
8d866e1
     registerAsCurrent();
8d866e1
@@ -445,6 +439,7 @@ void X11OpenGLContext::destroyCurrentContext()
8d866e1
             g_vShareList.erase(itr);
8d866e1
 
8d866e1
         glXMakeCurrent(m_aGLWin.dpy, None, nullptr);
8d866e1
+        g_bAnyCurrent = false;
8d866e1
         if( glGetError() != GL_NO_ERROR )
8d866e1
         {
8d866e1
             SAL_WARN("vcl.opengl", "glError: " << glGetError());
8d866e1
diff --git a/vcl/osx/salobj.cxx b/vcl/osx/salobj.cxx
8d866e1
index c75f2a7..9e6e746 100644
8d866e1
--- a/vcl/osx/salobj.cxx
8d866e1
+++ b/vcl/osx/salobj.cxx
8d866e1
@@ -321,8 +321,8 @@ bool AquaOpenGLContext::ImplInit()
8d866e1
     NSOpenGLView* pView = getOpenGLView();
8d866e1
     [[pView openGLContext] makeCurrentContext];
8d866e1
 
8d866e1
-    bool bRet = InitGLEW();
8d866e1
-    InitGLEWDebugging();
8d866e1
+    bool bRet = InitGL();
8d866e1
+    InitGLDebugging();
8d866e1
     return bRet;
8d866e1
 }
8d866e1
 
8d866e1
diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx
8d866e1
index 33d8009..1b2893b 100644
8d866e1
--- a/vcl/source/opengl/OpenGLContext.cxx
8d866e1
+++ b/vcl/source/opengl/OpenGLContext.cxx
8d866e1
@@ -7,7 +7,6 @@
8d866e1
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8d866e1
  */
8d866e1
 
8d866e1
-#include <config_opengl.h>
8d866e1
 #include <chrono>
8d866e1
 
8d866e1
 #include <vcl/opengl/OpenGLContext.hxx>
8d866e1
@@ -205,13 +204,8 @@ extern "C" void
8d866e1
 APIENTRY
8d866e1
 #endif
8d866e1
 debug_callback(GLenum source, GLenum type, GLuint id,
8d866e1
-        GLenum severity, GLsizei , const GLchar* message,
8d866e1
-#if HAVE_GLEW_1_12
8d866e1
-        const GLvoid*
8d866e1
-#else
8d866e1
-        GLvoid*
8d866e1
-#endif
8d866e1
-        )
8d866e1
+               GLenum severity, GLsizei , const GLchar* message,
8d866e1
+               const GLvoid*)
8d866e1
 {
8d866e1
     // ignore Nvidia's 131218: "Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches."
8d866e1
     // the GLSL compiler is a bit too aggressive in optimizing the state based on the current OpenGL state
8d866e1
@@ -280,30 +274,14 @@ OUString getGLString(GLenum eGlEnum)
8d866e1
     return sString;
8d866e1
 }
8d866e1
 
8d866e1
-bool OpenGLContext::InitGLEW()
8d866e1
+bool OpenGLContext::InitGL()
8d866e1
 {
8d866e1
-    static bool bGlewInit = false;
8d866e1
-    if(!bGlewInit)
8d866e1
-    {
8d866e1
-        OpenGLZone aZone;
8d866e1
-
8d866e1
-        glewExperimental = GL_TRUE;
8d866e1
-        GLenum err = glewInit();
8d866e1
-        if (err != GLEW_OK)
8d866e1
-        {
8d866e1
-            SAL_WARN("vcl.opengl", "Failed to initialize GLEW: " << glewGetErrorString(err));
8d866e1
-            return false;
8d866e1
-        }
8d866e1
-        else
8d866e1
-            bGlewInit = true;
8d866e1
-    }
8d866e1
-
8d866e1
     VCL_GL_INFO("OpenGLContext::ImplInit----end");
8d866e1
     VCL_GL_INFO("Vendor: " << getGLString(GL_VENDOR) << " Renderer: " << getGLString(GL_RENDERER) << " GL version: " << OpenGLHelper::getGLVersion());
8d866e1
     mbInitialized = true;
8d866e1
 
8d866e1
     // I think we need at least GL 3.0
8d866e1
-    if (!GLEW_VERSION_3_0)
8d866e1
+    if (epoxy_gl_version() < 30)
8d866e1
     {
8d866e1
         SAL_WARN("vcl.opengl", "We don't have at least OpenGL 3.0");
8d866e1
         return false;
8d866e1
@@ -319,11 +297,11 @@ bool OpenGLContext::InitGLEW()
8d866e1
     return true;
8d866e1
 }
8d866e1
 
8d866e1
-void OpenGLContext::InitGLEWDebugging()
8d866e1
+void OpenGLContext::InitGLDebugging()
8d866e1
 {
8d866e1
 #ifdef DBG_UTIL
8d866e1
     // only enable debug output in dbgutil build
8d866e1
-    if( GLEW_ARB_debug_output)
8d866e1
+    if (epoxy_has_gl_extension("GL_ARB_debug_output"))
8d866e1
     {
8d866e1
         OpenGLZone aZone;
8d866e1
 
8d866e1
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
8d866e1
index f07e7dc..9b91415 100644
8d866e1
--- a/vcl/source/opengl/OpenGLHelper.cxx
8d866e1
+++ b/vcl/source/opengl/OpenGLHelper.cxx
8d866e1
@@ -401,7 +401,7 @@ GLint OpenGLHelper::LoadShaders(const OUString& rVertexShaderName,
8d866e1
         aGeometryShaderSource = getShaderSource(rGeometryShaderName);
8d866e1
 
8d866e1
     GLint bBinaryResult = GL_FALSE;
8d866e1
-    if( GLEW_ARB_get_program_binary && !rDigest.isEmpty() )
8d866e1
+    if (epoxy_has_gl_extension("GL_ARB_get_program_binary") && !rDigest.isEmpty())
8d866e1
     {
8d866e1
         OString aFileName =
8d866e1
                 createFileName(rVertexShaderName, rFragmentShaderName, rGeometryShaderName, rDigest);
8d866e1
@@ -473,7 +473,7 @@ GLint OpenGLHelper::LoadShaders(const OUString& rVertexShaderName,
8d866e1
     if (bHasGeometryShader)
8d866e1
         glAttachShader(ProgramID, GeometryShaderID);
8d866e1
 
8d866e1
-    if( GLEW_ARB_get_program_binary && !rDigest.isEmpty() )
8d866e1
+    if (epoxy_has_gl_extension("GL_ARB_get_program_binary") && !rDigest.isEmpty())
8d866e1
     {
8d866e1
         glProgramParameteri(ProgramID, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
8d866e1
         glLinkProgram(ProgramID);
8d866e1
@@ -1085,14 +1085,14 @@ void OpenGLHelper::debugMsgPrint(const int nType, const char *pFormat, ...)
8d866e1
     {
8d866e1
         OpenGLZone aZone;
8d866e1
 
8d866e1
-        if (GLEW_KHR_debug)
8d866e1
+        if (epoxy_has_gl_extension("GL_KHR_debug"))
8d866e1
             glDebugMessageInsert(GL_DEBUG_SOURCE_APPLICATION,
8d866e1
                                  GL_DEBUG_TYPE_OTHER,
8d866e1
                                  1, // one[sic] id is as good as another ?
8d866e1
                                  // GL_DEBUG_SEVERITY_NOTIFICATION for >= GL4.3 ?
8d866e1
                                  GL_DEBUG_SEVERITY_LOW,
8d866e1
                                  strlen(pStr), pStr);
8d866e1
-        else if (GLEW_AMD_debug_output)
8d866e1
+        else if (epoxy_has_gl_extension("GL_AMD_debug_output"))
8d866e1
             glDebugMessageInsertAMD(GL_DEBUG_CATEGORY_APPLICATION_AMD,
8d866e1
                                     GL_DEBUG_SEVERITY_LOW_AMD,
8d866e1
                                     1, // one[sic] id is as good as another ?
8d866e1
diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx
8d866e1
index 0bff9b8..34f0e6f 100644
8d866e1
--- a/vcl/unx/generic/app/saldisp.cxx
8d866e1
+++ b/vcl/unx/generic/app/saldisp.cxx
8d866e1
@@ -47,7 +47,6 @@
8d866e1
 #include <X11/extensions/Xinerama.h>
8d866e1
 #endif
8d866e1
 
8d866e1
-#include "GL/glxew.h"
8d866e1
 #include <opengl/zone.hxx>
8d866e1
 
8d866e1
 #include <vcl/svapp.hxx>
8d866e1
diff --git a/vcl/workben/icontest.cxx b/vcl/workben/icontest.cxx
8d866e1
index ae2973b..32d6ae8 100644
8d866e1
--- a/vcl/workben/icontest.cxx
8d866e1
+++ b/vcl/workben/icontest.cxx
8d866e1
@@ -20,8 +20,6 @@
8d866e1
 
8d866e1
 #include <math.h>
8d866e1
 
8d866e1
-#include <GL/glew.h>
8d866e1
-
8d866e1
 #include <glm/gtx/bit.hpp>
8d866e1
 
8d866e1
 #include <com/sun/star/lang/XComponent.hpp>
8d866e1
-- 
8d866e1
2.9.3
8d866e1