Revision: 315 http://trac.macosforge.org/projects/xquartz/changeset/315 Author: jeremyhu@freedesktop.org Date: 2009-03-18 18:27:49 -0700 (Wed, 18 Mar 2009) Log Message: ----------- Better API compatability with OpenGL.framework's gl.h Modified Paths: -------------- AppleSGLX/trunk/gen_gl_h.sh AppleSGLX/trunk/include/GL/gl.h.footer Modified: AppleSGLX/trunk/gen_gl_h.sh =================================================================== --- AppleSGLX/trunk/gen_gl_h.sh 2009-03-18 07:30:54 UTC (rev 314) +++ AppleSGLX/trunk/gen_gl_h.sh 2009-03-19 01:27:49 UTC (rev 315) @@ -2,6 +2,14 @@ { cat include/GL/gl.h.header - grep gl.*ProcPtr /System/Library/Frameworks/OpenGL.framework/Headers/gl{,ext}.h | sed 's:^.*\(gl.*Ptr\).*$:\1:' | sort -u | perl -ne 'chomp($_); $s = "PFN".uc($_); $s =~ s/PROCPTR/PROC/; print "#define ".$_." ".$s."\n"' + if grep -q GL_GLEXT_PROTOTYPES /System/Library/Frameworks/OpenGL.framework/Headers/gl.h ; then + grep gl.*ProcPtr /System/Library/Frameworks/OpenGL.framework/Headers/gl{,ext}.h | sed 's:^.*\(gl.*Ptr\).*$:\1:' | sort -u | perl -ne 'chomp($_); $s = "PFN".uc($_); $s =~ s/PROCPTR/PROC/; print "#define ".$_." ".$s."\n"' + else + { + echo "#define GL_GLEXT_FUNCTION_POINTERS 1" + grep gl.*ProcPtr /System/Library/Frameworks/OpenGL.framework/Headers/gl{,ext}.h | sed 's:^.*\(gl.*Ptr\).*$:\1:' | sort -u | perl -ne 'chomp($_); $s = "PFN".uc($_); $s =~ s/PROCPTR/PROC/; print "#define ".$_." ".$s."\n"' + echo '#include "/System/Library/Frameworks/OpenGL.framework/Headers/gl.h"' + } | gcc -E - | grep typedef.*PFN + fi cat include/GL/gl.h.footer } > include/GL/gl.h Modified: AppleSGLX/trunk/include/GL/gl.h.footer =================================================================== --- AppleSGLX/trunk/include/GL/gl.h.footer 2009-03-18 07:30:54 UTC (rev 314) +++ AppleSGLX/trunk/include/GL/gl.h.footer 2009-03-19 01:27:49 UTC (rev 315) @@ -1,29 +1,48 @@ -/* We want to use OpelGL.framework's headers to get both prototypes and - * function pointers (like Mesa's API) +/* On SL, we want to use OpelGL.framework's headers to get both prototypes and + * function pointers (like Mesa's API), but on Leo and before, OpenGL.framework + * can't give us both. */ -#ifndef GL_GLEXT_FUNCTION_POINTERS -#define GL_GLEXT_FUNCTION_POINTERS 1 +#ifdef GL_GLEXT_FUNCTION_POINTERS +#define _GL_GLEXT_FUNCTION_POINTERS GL_GLEXT_FUNCTION_POINTERS +#undef GL_GLEXT_FUNCTION_POINTERS #endif -#ifndef GL_GLEXT_PROTOTYPES -#define GL_GLEXT_PROTOTYPES 0 +#ifdef GL_GLEXT_PROTOTYPES +#define _GL_GLEXT_PROTOTYPES GL_GLEXT_PROTOTYPES +#else +#define GL_GLEXT_PROTOTYPES 1 #endif /* Our glext.h is based on a version from the registry that is newer. */ -#ifndef GL_GLEXT_LEGACY -#define GL_GLEXT_LEGACY 0 +#ifdef GL_GLEXT_LEGACY +#define _GL_GLEXT_LEGACY GL_GLEXT_LEGACY +#else +#define GL_GLEXT_LEGACY 1 #endif #include "/System/Library/Frameworks/OpenGL.framework/Headers/gl.h" -/* Unset GL_GLEXT_PROTOTYPES for glext.h if the user didn't want those */ -#if GL_GLEXT_PROTOTYPES == 0 +/* Restore our GLEXT-fu */ +#ifdef _GL_GLEXT_FUNCTION_POINTERS +#define GL_GLEXT_FUNCTION_POINTERS _GL_GLEXT_FUNCTION_POINTERS +#else +#undef GL_GLEXT_FUNCTION_POINTERS +#endif + +#ifdef _GL_GLEXT_PROTOTYPES +#define GL_GLEXT_PROTOTYPES _GL_GLEXT_PROTOTYPES +#else #undef GL_GLEXT_PROTOTYPES #endif -#if GL_GLEXT_LEGACY == 0 +#ifdef _GL_GLEXT_LEGACY +#define GL_GLEXT_LEGACY _GL_GLEXT_LEGACY +#else #undef GL_GLEXT_LEGACY +#endif + +#ifndef GL_GLEXT_LEGACY #include <GL/glext.h> #endif