
	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 glad")
				defines {"GLEW_INIT_OPENGL11_FUNCTIONS=1"}
				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 .. "examples/ThirdPartyLibs/optionalX11"
                                }
				defines {"DYNAMIC_LOAD_X11_FUNCTIONS"}	
				links {"dl","pthread"}
			end
		end
	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 .. "examples/ThirdPartyLibs/optionalX11"
                                }
				defines {"DYNAMIC_LOAD_X11_FUNCTIONS"}	
				links {"dl","pthread"}
			end
		end
	end


	function initGlew()
		configuration {}
		if os.is("Windows") then
			configuration {"Windows"}
			defines { "GLEW_STATIC"}
			includedirs {
					projectRootDir .. "examples/ThirdPartyLibs/glad"
			}
			files { projectRootDir .. "examples/ThirdPartyLibs/glad/gl.c"}
		end
		if os.is("MacOSX") then
			 includedirs {
                                        projectRootDir .. "examples/ThirdPartyLibs/glad"
                                }
                                files { projectRootDir .. "examples/ThirdPartyLibs/glad/gl.c"}
		end

		if os.is("Linux") then
			configuration{"Linux"}
			  initX11()
				if  _OPTIONS["enable_system_glx"] then --# and (os.isdir("/usr/include") and os.isfile("/usr/include/GL/glx.h")) then
                                	links{"pthread"}
					print("Using system GL/glx.h")
                        	else
					print("Using glad_glx")
				 	defines { "GLEW_DYNAMIC_LOAD_ALL_GLX_FUNCTIONS=1"}	
				 	files { 
					projectRootDir .. "examples/ThirdPartyLibs/glad/glx.c"}
				end

				print("Using glad and dynamic loading of GL functions")
			 	defines { "GLEW_STATIC"}
                        	includedirs {
                                        projectRootDir .. "examples/ThirdPartyLibs/glad"
                        	}
                        	files { projectRootDir .. "examples/ThirdPartyLibs/glad/gl.c",
					projectRootDir .. "examples/ThirdPartyLibs/glad/glx.c"}
				links {"dl"}

		end
		configuration{}
	end


