Initial import of 2.7 Lite.
diff --git a/lib/glext.c b/lib/glext.c
new file mode 100644
index 0000000..5287e3f
--- /dev/null
+++ b/lib/glext.c
@@ -0,0 +1,235 @@
+//========================================================================
+// GLFW - An OpenGL framework
+// Platform: Any
+// API version: 2.7
+// WWW: http://www.glfw.org/
+//------------------------------------------------------------------------
+// Copyright (c) 2002-2006 Marcus Geelnard
+// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would
+// be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not
+// be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source
+// distribution.
+//
+//========================================================================
+
+#include "internal.h"
+
+
+//************************************************************************
+//**** GLFW internal functions ****
+//************************************************************************
+
+#ifndef GL_VERSION_3_0
+#define GL_NUM_EXTENSIONS 0x821D
+#endif
+
+//========================================================================
+// Parses the OpenGL version string and extracts the version number
+//========================================================================
+
+void _glfwParseGLVersion( int *major, int *minor, int *rev )
+{
+ GLuint _major, _minor = 0, _rev = 0;
+ const GLubyte *version;
+ const GLubyte *ptr;
+
+ // Get OpenGL version string
+ version = glGetString( GL_VERSION );
+ if( !version )
+ {
+ return;
+ }
+
+ // Parse string
+ ptr = version;
+ for( _major = 0; *ptr >= '0' && *ptr <= '9'; ptr ++ )
+ {
+ _major = 10*_major + (*ptr - '0');
+ }
+ if( *ptr == '.' )
+ {
+ ptr ++;
+ for( _minor = 0; *ptr >= '0' && *ptr <= '9'; ptr ++ )
+ {
+ _minor = 10*_minor + (*ptr - '0');
+ }
+ if( *ptr == '.' )
+ {
+ ptr ++;
+ for( _rev = 0; *ptr >= '0' && *ptr <= '9'; ptr ++ )
+ {
+ _rev = 10*_rev + (*ptr - '0');
+ }
+ }
+ }
+
+ // Return parsed values
+ *major = _major;
+ *minor = _minor;
+ *rev = _rev;
+}
+
+//========================================================================
+// _glfwStringInExtensionString() - Check if a string can be found in an
+// OpenGL extension string
+//========================================================================
+
+int _glfwStringInExtensionString( const char *string,
+ const GLubyte *extensions )
+{
+ const GLubyte *start;
+ GLubyte *where, *terminator;
+
+ // It takes a bit of care to be fool-proof about parsing the
+ // OpenGL extensions string. Don't be fooled by sub-strings,
+ // etc.
+ start = extensions;
+ while( 1 )
+ {
+ where = (GLubyte *) strstr( (const char *) start, string );
+ if( !where )
+ {
+ return GL_FALSE;
+ }
+ terminator = where + strlen( string );
+ if( where == start || *(where - 1) == ' ' )
+ {
+ if( *terminator == ' ' || *terminator == '\0' )
+ {
+ break;
+ }
+ }
+ start = terminator;
+ }
+
+ return GL_TRUE;
+}
+
+
+
+//************************************************************************
+//**** GLFW user functions ****
+//************************************************************************
+
+//========================================================================
+// Check if an OpenGL extension is available at runtime
+//========================================================================
+
+GLFWAPI int glfwExtensionSupported( const char *extension )
+{
+ const GLubyte *extensions;
+ GLubyte *where;
+ GLint count;
+ int i;
+
+ // Is GLFW initialized?
+ if( !_glfwInitialized || !_glfwWin.opened )
+ {
+ return GL_FALSE;
+ }
+
+ // Extension names should not have spaces
+ where = (GLubyte *) strchr( extension, ' ' );
+ if( where || *extension == '\0' )
+ {
+ return GL_FALSE;
+ }
+
+ if( _glfwWin.glMajor < 3 )
+ {
+ // Check if extension is in the old style OpenGL extensions string
+
+ extensions = glGetString( GL_EXTENSIONS );
+ if( extensions != NULL )
+ {
+ if( _glfwStringInExtensionString( extension, extensions ) )
+ {
+ return GL_TRUE;
+ }
+ }
+ }
+ else
+ {
+ // Check if extension is in the modern OpenGL extensions string list
+
+ glGetIntegerv( GL_NUM_EXTENSIONS, &count );
+
+ for( i = 0; i < count; i++ )
+ {
+ if( strcmp( (const char*) _glfwWin.GetStringi( GL_EXTENSIONS, i ),
+ extension ) == 0 )
+ {
+ return GL_TRUE;
+ }
+ }
+ }
+
+ // Additional platform specific extension checking (e.g. WGL)
+ if( _glfwPlatformExtensionSupported( extension ) )
+ {
+ return GL_TRUE;
+ }
+
+ return GL_FALSE;
+}
+
+
+//========================================================================
+// glfwGetProcAddress() - Get the function pointer to an OpenGL function.
+// This function can be used to get access to extended OpenGL functions.
+//========================================================================
+
+GLFWAPI void * glfwGetProcAddress( const char *procname )
+{
+ // Is GLFW initialized?
+ if( !_glfwInitialized || !_glfwWin.opened )
+ {
+ return NULL;
+ }
+
+ return _glfwPlatformGetProcAddress( procname );
+}
+
+
+//========================================================================
+// Returns the OpenGL version
+//========================================================================
+
+GLFWAPI void glfwGetGLVersion( int *major, int *minor, int *rev )
+{
+ // Is GLFW initialized?
+ if( !_glfwInitialized || !_glfwWin.opened )
+ {
+ return;
+ }
+
+ if( major != NULL )
+ {
+ *major = _glfwWin.glMajor;
+ }
+ if( minor != NULL )
+ {
+ *minor = _glfwWin.glMinor;
+ }
+ if( rev != NULL )
+ {
+ *rev = _glfwWin.glRevision;
+ }
+}
+