function findOpenGL()
               configuration{}
               if os.is("Linux") then
                       return true
               end
               --assume OpenGL is available on Mac OSX, Windows etc
               return true
       end

     function findOpenGL3()
               configuration{}
               if os.is("MacOSX") then
                       local osversion = os.getversion()
               --Mac OSX 10.9 and above supports OpenGL 3, below doesn't, so ...
                       if osversion.majorversion > 10 or (osversion.majorversion == 10 and osversion.minorversion >=9) then
                               return findOpenGL()
                       else
                               return false
                       end
               else
                       return findOpenGL()
               end
       end


       function initOpenGL()
               configuration {}
               configuration {"Windows"}
                       links {"opengl32","glu32"}
               configuration {"MacOSX"}
                       links { "OpenGL.framework"}
               configuration {"not Windows", "not MacOSX"}
               if os.is("Linux") then
                       if  _OPTIONS["enable_system_opengl"] and (os.isdir("/usr/include") and os.isfile("/usr/include/GL/gl.h")) then
                               links {"GL"}
                       else
                               print("No GL/gl.h found, using dynamic loading of GL using glew")
                               defines {"GLEW_INIT_OPENGL11_FUNCTIONS=1"}
                               links {"dl"}
                       end
               end
               configuration{}
       end


       function initGlew()
               configuration {}
               if os.is("Windows") then
                       configuration {"Windows"}
                       defines { "GLEW_STATIC"}
                       includedirs {
                                       projectRootDir .. "ThirdPartyLibs/Glew"
                       }
                       files { projectRootDir .. "ThirdPartyLibs/Glew/glew.c"}
               end
               if os.is("Linux") then
                       configuration{"Linux"}
                       if  _OPTIONS["enable_system_opengl"] and (os.isdir("/usr/include") and os.isfile("/usr/include/GL/gl.h") and os.isfile("/usr/include/GL/glew.h"))  then
                               links {"GLEW"}
                               print ("linking against system GLEW")
                       else
                               print("Using static glew and dynamic loading of glx functions")
                               defines { "GLEW_STATIC","GLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1"}
                               includedirs {
                                       projectRootDir .. "ThirdPartyLibs/Glew"
                               }
                               files { projectRootDir .. "ThirdPartyLibs/Glew/glew.c"}
                               links {"dl"}
                       end

               end
               configuration{}
       end

       function initX11()
               if os.is("Linux") then
                       if _OPTIONS["enable_system_x11"] and (os.isdir("/usr/include") and os.isfile("/usr/include/X11/X.h")) then
                               links{"X11","pthread"}
                       else
                               print("No X11/X.h found, using dynamic loading of X11")
                               includedirs {
                                       projectRootDir .. "ThirdPartyLibs/optionalX11"
                               }
                               defines {"DYNAMIC_LOAD_X11_FUNCTIONS"}
                               links {"dl","pthread"}
                       end
               end
       end