diff --git a/opengles-3.1/stubs/EGL.c b/opengles-3.1/stubs/EGL.c
new file mode 100644
index 0000000..dc0d4bd
--- /dev/null
+++ b/opengles-3.1/stubs/EGL.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+
+#define PRINT_STUB_ERROR printf("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nERROR: %s from stub libEGL.so library called! This library can be used to resolve OpenGL ES symbols at compile time but must *not* be in your runtime path (You need to use a real OpenGL ES implementation, this one is empty)\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n", __func__)
+
+void eglBindAPI(void) { PRINT_STUB_ERROR; return; }
+void eglBindTexImage(void) { PRINT_STUB_ERROR; return; }
+void eglChooseConfig(void) { PRINT_STUB_ERROR; return; }
+void eglCopyBuffers(void) { PRINT_STUB_ERROR; return; }
+void eglCreateContext(void) { PRINT_STUB_ERROR; return; }
+void eglCreateImageKHR (void) { PRINT_STUB_ERROR; return; }
+void eglCreatePbufferFromClientBuffer(void) { PRINT_STUB_ERROR; return; }
+void eglCreatePbufferSurface(void) { PRINT_STUB_ERROR; return; }
+void eglCreatePixmapSurface(void) { PRINT_STUB_ERROR; return; }
+void eglCreateWindowSurface(void) { PRINT_STUB_ERROR; return; }
+void eglDestroyContext(void) { PRINT_STUB_ERROR; return; }
+void eglDestroyImageKHR (void) { PRINT_STUB_ERROR; return; }
+void eglDestroySurface(void) { PRINT_STUB_ERROR; return; }
+void eglGetConfigAttrib(void) { PRINT_STUB_ERROR; return; }
+void eglGetConfigs(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentContext(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentDisplay(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentSurface(void) { PRINT_STUB_ERROR; return; }
+void eglGetDisplay(void) { PRINT_STUB_ERROR; return; }
+void eglGetError(void) { PRINT_STUB_ERROR; return; }
+void eglGetProcAddress(void) { PRINT_STUB_ERROR; return; }
+void eglInitialize(void) { PRINT_STUB_ERROR; return; }
+void eglMakeCurrent(void) { PRINT_STUB_ERROR; return; }
+void eglQueryAPI(void) { PRINT_STUB_ERROR; return; }
+void eglQueryContext(void) { PRINT_STUB_ERROR; return; }
+void eglQueryString(void) { PRINT_STUB_ERROR; return; }
+void eglQuerySurface(void) { PRINT_STUB_ERROR; return; }
+void eglReleaseTexImage(void) { PRINT_STUB_ERROR; return; }
+void eglReleaseThread(void) { PRINT_STUB_ERROR; return; }
+void eglSurfaceAttrib(void) { PRINT_STUB_ERROR; return; }
+void eglSwapBuffers(void) { PRINT_STUB_ERROR; return; }
+void eglSwapInterval(void) { PRINT_STUB_ERROR; return; }
+void eglTerminate(void) { PRINT_STUB_ERROR; return; }
+void eglWaitClient(void) { PRINT_STUB_ERROR; return; }
+void eglWaitGL(void) { PRINT_STUB_ERROR; return; }
+void eglWaitNative(void) { PRINT_STUB_ERROR; return; }
diff --git a/opengles-3.1/stubs/GLESv2.c b/opengles-3.1/stubs/GLESv2.c
new file mode 100644
index 0000000..c58f0f7
--- /dev/null
+++ b/opengles-3.1/stubs/GLESv2.c
@@ -0,0 +1,269 @@
+#include <stdio.h>
+
+#define PRINT_STUB_ERROR printf("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nERROR: %s from stub libGLESv2.so library called! This library can be used to resolve OpenGL ES symbols at compile time but must *not* be in your runtime path (You need to use a real OpenGL ES implementation, this one is empty)\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n", __func__)
+
+void glActiveTexture(void) { PRINT_STUB_ERROR; return; }
+void glAttachShader(void) { PRINT_STUB_ERROR; return; }
+void glBindAttribLocation(void) { PRINT_STUB_ERROR; return; }
+void glBindBuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindTexture(void) { PRINT_STUB_ERROR; return; }
+void glBlendColor(void) { PRINT_STUB_ERROR; return; }
+void glBlendEquation(void) { PRINT_STUB_ERROR; return; }
+void glBlendEquationSeparate(void) { PRINT_STUB_ERROR; return; }
+void glBlendFunc(void) { PRINT_STUB_ERROR; return; }
+void glBlendFuncSeparate(void) { PRINT_STUB_ERROR; return; }
+void glBufferData(void) { PRINT_STUB_ERROR; return; }
+void glBufferSubData(void) { PRINT_STUB_ERROR; return; }
+void glCheckFramebufferStatus(void) { PRINT_STUB_ERROR; return; }
+void glClear(void) { PRINT_STUB_ERROR; return; }
+void glClearColor(void) { PRINT_STUB_ERROR; return; }
+void glClearDepthf(void) { PRINT_STUB_ERROR; return; }
+void glClearStencil(void) { PRINT_STUB_ERROR; return; }
+void glColorMask(void) { PRINT_STUB_ERROR; return; }
+void glCompileShader(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCreateProgram(void) { PRINT_STUB_ERROR; return; }
+void glCreateShader(void) { PRINT_STUB_ERROR; return; }
+void glCullFace(void) { PRINT_STUB_ERROR; return; }
+void glDeleteBuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteFramebuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteProgram(void) { PRINT_STUB_ERROR; return; }
+void glDeleteRenderbuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteShader(void) { PRINT_STUB_ERROR; return; }
+void glDeleteTextures(void) { PRINT_STUB_ERROR; return; }
+void glDepthFunc(void) { PRINT_STUB_ERROR; return; }
+void glDepthMask(void) { PRINT_STUB_ERROR; return; }
+void glDepthRangef(void) { PRINT_STUB_ERROR; return; }
+void glDetachShader(void) { PRINT_STUB_ERROR; return; }
+void glDisable(void) { PRINT_STUB_ERROR; return; }
+void glDisableVertexAttribArray(void) { PRINT_STUB_ERROR; return; }
+void glDrawArrays(void) { PRINT_STUB_ERROR; return; }
+void glDrawElements(void) { PRINT_STUB_ERROR; return; }
+void glEnable(void) { PRINT_STUB_ERROR; return; }
+void glEnableVertexAttribArray(void) { PRINT_STUB_ERROR; return; }
+void glFinish(void) { PRINT_STUB_ERROR; return; }
+void glFlush(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferTexture2D(void) { PRINT_STUB_ERROR; return; }
+void glFrontFace(void) { PRINT_STUB_ERROR; return; }
+void glGenBuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenerateMipmap(void) { PRINT_STUB_ERROR; return; }
+void glGenFramebuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenRenderbuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenTextures(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveAttrib(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniform(void) { PRINT_STUB_ERROR; return; }
+void glGetAttachedShaders(void) { PRINT_STUB_ERROR; return; }
+void glGetAttribLocation(void) { PRINT_STUB_ERROR; return; }
+void glGetBooleanv(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetError(void) { PRINT_STUB_ERROR; return; }
+void glGetFloatv(void) { PRINT_STUB_ERROR; return; }
+void glGetFramebufferAttachmentParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetIntegerv(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramiv(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramInfoLog(void) { PRINT_STUB_ERROR; return; }
+void glGetRenderbufferParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderiv(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderInfoLog(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderPrecisionFormat(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderSource(void) { PRINT_STUB_ERROR; return; }
+void glGetString(void) { PRINT_STUB_ERROR; return; }
+void glGetTexParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glGetTexParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformfv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformLocation(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribfv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribiv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribPointerv(void) { PRINT_STUB_ERROR; return; }
+void glHint(void) { PRINT_STUB_ERROR; return; }
+void glIsBuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsEnabled(void) { PRINT_STUB_ERROR; return; }
+void glIsFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsProgram(void) { PRINT_STUB_ERROR; return; }
+void glIsRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsShader(void) { PRINT_STUB_ERROR; return; }
+void glIsTexture(void) { PRINT_STUB_ERROR; return; }
+void glLineWidth(void) { PRINT_STUB_ERROR; return; }
+void glLinkProgram(void) { PRINT_STUB_ERROR; return; }
+void glPixelStorei(void) { PRINT_STUB_ERROR; return; }
+void glPolygonOffset(void) { PRINT_STUB_ERROR; return; }
+void glReadPixels(void) { PRINT_STUB_ERROR; return; }
+void glReleaseShaderCompiler(void) { PRINT_STUB_ERROR; return; }
+void glRenderbufferStorage(void) { PRINT_STUB_ERROR; return; }
+void glSampleCoverage(void) { PRINT_STUB_ERROR; return; }
+void glScissor(void) { PRINT_STUB_ERROR; return; }
+void glShaderBinary(void) { PRINT_STUB_ERROR; return; }
+void glShaderSource(void) { PRINT_STUB_ERROR; return; }
+void glStencilFunc(void) { PRINT_STUB_ERROR; return; }
+void glStencilFuncSeparate(void) { PRINT_STUB_ERROR; return; }
+void glStencilMask(void) { PRINT_STUB_ERROR; return; }
+void glStencilMaskSeparate(void) { PRINT_STUB_ERROR; return; }
+void glStencilOp(void) { PRINT_STUB_ERROR; return; }
+void glStencilOpSeparate(void) { PRINT_STUB_ERROR; return; }
+void glTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glTexParameterf(void) { PRINT_STUB_ERROR; return; }
+void glTexParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glTexParameteri(void) { PRINT_STUB_ERROR; return; }
+void glTexParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glUniform1f(void) { PRINT_STUB_ERROR; return; }
+void glUniform1fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform1i(void) { PRINT_STUB_ERROR; return; }
+void glUniform1iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2f(void) { PRINT_STUB_ERROR; return; }
+void glUniform2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2i(void) { PRINT_STUB_ERROR; return; }
+void glUniform2iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3f(void) { PRINT_STUB_ERROR; return; }
+void glUniform3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3i(void) { PRINT_STUB_ERROR; return; }
+void glUniform3iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4f(void) { PRINT_STUB_ERROR; return; }
+void glUniform4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4i(void) { PRINT_STUB_ERROR; return; }
+void glUniform4iv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4fv(void) { PRINT_STUB_ERROR; return; }
+void glUseProgram(void) { PRINT_STUB_ERROR; return; }
+void glValidateProgram(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib1f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib1fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib2f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib2fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib3f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib3fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib4f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib4fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribPointer(void) { PRINT_STUB_ERROR; return; }
+void glViewport(void) { PRINT_STUB_ERROR; return; }
+
+/* OpenGL ES 3.0 */
+
+void glReadBuffer(void) { PRINT_STUB_ERROR; return; }
+void glDrawRangeElements(void) { PRINT_STUB_ERROR; return; }
+void glTexImage3D(void) { PRINT_STUB_ERROR; return; }
+void glTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glGenQueries(void) { PRINT_STUB_ERROR; return; }
+void glDeleteQueries(void) { PRINT_STUB_ERROR; return; }
+void glIsQuery(void) { PRINT_STUB_ERROR; return; }
+void glBeginQuery(void) { PRINT_STUB_ERROR; return; }
+void glEndQuery(void) { PRINT_STUB_ERROR; return; }
+void glGetQueryiv(void) { PRINT_STUB_ERROR; return; }
+void glGetQueryObjectuiv(void) { PRINT_STUB_ERROR; return; }
+void glUnmapBuffer(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferPointerv(void) { PRINT_STUB_ERROR; return; }
+void glDrawBuffers(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2x3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3x2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2x4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4x2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3x4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4x3fv(void) { PRINT_STUB_ERROR; return; }
+void glBlitFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glRenderbufferStorageMultisample(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferTextureLayer(void) { PRINT_STUB_ERROR; return; }
+void glMapBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glFlushMappedBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glBindVertexArray(void) { PRINT_STUB_ERROR; return; }
+void glDeleteVertexArrays(void) { PRINT_STUB_ERROR; return; }
+void glGenVertexArrays(void) { PRINT_STUB_ERROR; return; }
+void glIsVertexArray(void) { PRINT_STUB_ERROR; return; }
+void glGetIntegeri_v(void) { PRINT_STUB_ERROR; return; }
+void glBeginTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glEndTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glBindBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glBindBufferBase(void) { PRINT_STUB_ERROR; return; }
+void glTransformFeedbackVaryings(void) { PRINT_STUB_ERROR; return; }
+void glGetTransformFeedbackVarying(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribIPointer(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribIiv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribIuiv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4i(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4ui(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4iv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4uiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformuiv(void) { PRINT_STUB_ERROR; return; }
+void glGetFragDataLocation(void) { PRINT_STUB_ERROR; return; }
+void glUniform1ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform2ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform3ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform4ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform1uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4uiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferuiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferfv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferfi(void) { PRINT_STUB_ERROR; return; }
+void glGetStringi(void) { PRINT_STUB_ERROR; return; }
+void glCopyBufferSubData(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformIndices(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformsiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformBlockIndex(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformBlockiv(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformBlockName(void) { PRINT_STUB_ERROR; return; }
+void glUniformBlockBinding(void) { PRINT_STUB_ERROR; return; }
+void glDrawArraysInstanced(void) { PRINT_STUB_ERROR; return; }
+void glDrawElementsInstanced(void) { PRINT_STUB_ERROR; return; }
+void glFenceSync(void) { PRINT_STUB_ERROR; return; }
+void glIsSync(void) { PRINT_STUB_ERROR; return; }
+void glDeleteSync(void) { PRINT_STUB_ERROR; return; }
+void glClientWaitSync(void) { PRINT_STUB_ERROR; return; }
+void glWaitSync(void) { PRINT_STUB_ERROR; return; }
+void glGetInteger64v(void) { PRINT_STUB_ERROR; return; }
+void glGetSynciv(void) { PRINT_STUB_ERROR; return; }
+void glGetInteger64i_v(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferParameteri64v(void) { PRINT_STUB_ERROR; return; }
+void glGenSamplers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteSamplers(void) { PRINT_STUB_ERROR; return; }
+void glIsSampler(void) { PRINT_STUB_ERROR; return; }
+void glBindSampler(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameteri(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameterf(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glGetSamplerParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetSamplerParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribDivisor(void) { PRINT_STUB_ERROR; return; }
+void glBindTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glDeleteTransformFeedbacks(void) { PRINT_STUB_ERROR; return; }
+void glGenTransformFeedbacks(void) { PRINT_STUB_ERROR; return; }
+void glIsTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glPauseTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glResumeTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramBinary(void) { PRINT_STUB_ERROR; return; }
+void glProgramBinary(void) { PRINT_STUB_ERROR; return; }
+void glProgramParameteri(void) { PRINT_STUB_ERROR; return; }
+void glInvalidateFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glInvalidateSubFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glTexStorage2D(void) { PRINT_STUB_ERROR; return; }
+void glTexStorage3D(void) { PRINT_STUB_ERROR; return; }
+void glGetInternalformativ(void) { PRINT_STUB_ERROR; return; }
+
+/* OpenGL ES 3.1, incomplete */
+
+void glProgramUniform1ui(void) { PRINT_STUB_ERROR; return; }
+void glDispatchCompute(void) { PRINT_STUB_ERROR; return; }
+void glMemoryBarrier(void) { PRINT_STUB_ERROR; return; }
+void glBindImageTexture(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniformMatrix4fv(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform1f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform2f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform3f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform3fv(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform4f(void) { PRINT_STUB_ERROR; return; }
+void glDrawElementsIndirect(void) { PRINT_STUB_ERROR; return; }
+
+
diff --git a/opengles-3.1/stubs/Readme.txt b/opengles-3.1/stubs/Readme.txt
new file mode 100644
index 0000000..4c079b1
--- /dev/null
+++ b/opengles-3.1/stubs/Readme.txt
@@ -0,0 +1,2 @@
+These are dummy libraries for linking against at build time.
+The application will require the real device libraries to run.
diff --git a/opengles-3.1/stubs/SConscript b/opengles-3.1/stubs/SConscript
new file mode 100644
index 0000000..5d4cb87
--- /dev/null
+++ b/opengles-3.1/stubs/SConscript
@@ -0,0 +1,11 @@
+Import("env")
+
+egl = env.SharedLibrary("EGL", "EGL.c")
+alias = Alias("egl", egl)
+Default(alias)
+Export("egl")
+
+glesv2 = env.SharedLibrary("GLESv2", "GLESv2.c")
+alias = Alias("glesv2", glesv2)
+Default(alias)
+Export("glesv2")
