Revision: 318 http://trac.macosforge.org/projects/xquartz/changeset/318 Author: jeremyhu@freedesktop.org Date: 2009-03-19 14:08:01 -0700 (Thu, 19 Mar 2009) Log Message: ----------- Made the gl.h generator use a template rather than separate files. Also made this template include the macros on Leo and before to address applications that use: #if __APPLE__ myFuncPonter = (glSomeProcPtr)... #else myFuncPointer = (PFNGLSOMEPROC)... #endif Modified Paths: -------------- AppleSGLX/trunk/Makefile AppleSGLX/trunk/gen_gl_h.sh Added Paths: ----------- AppleSGLX/trunk/include/GL/gl.h.template Removed Paths: ------------- AppleSGLX/trunk/include/GL/gl.h.core AppleSGLX/trunk/include/GL/gl.h.footer AppleSGLX/trunk/include/GL/gl.h.header Modified: AppleSGLX/trunk/Makefile =================================================================== --- AppleSGLX/trunk/Makefile 2009-03-19 04:45:13 UTC (rev 317) +++ AppleSGLX/trunk/Makefile 2009-03-19 21:08:01 UTC (rev 318) @@ -81,8 +81,8 @@ apple_xgl_api.h: gen_api_header.tcl gen_api_library.tcl gen_code.tcl gen_defs.tcl gen_exports.tcl gen_funcs.tcl gen_types.tcl $(TCLSH) gen_code.tcl -include/GL/gl.h: include/GL/gl.h.header include/GL/gl.h.core include/GL/gl.h.footer gen_gl_h.sh - ./gen_gl_h.sh +include/GL/gl.h: include/GL/gl.h.template gen_gl_h.sh + ./gen_gl_h.sh include/GL/gl.h.template $@ $(BUILD_DIR)/glxinfo: tests/glxinfo/glxinfo.c $(BUILD_DIR)/libGL.1.2.dylib $(CC) tests/glxinfo/glxinfo.c $(INCLUDE) -L$(X11_DIR)/lib -lX11 $(BUILD_DIR)/libGL.1.2.dylib -o $@ Modified: AppleSGLX/trunk/gen_gl_h.sh =================================================================== --- AppleSGLX/trunk/gen_gl_h.sh 2009-03-19 04:45:13 UTC (rev 317) +++ AppleSGLX/trunk/gen_gl_h.sh 2009-03-19 21:08:01 UTC (rev 318) @@ -1,19 +1,33 @@ #!/bin/bash -{ - cat include/GL/gl.h.header - if grep -q GL_GLEXT_PROTOTYPES /System/Library/Frameworks/OpenGL.framework/Headers/gl.h ; then +INFILE=$1 +OUTFILE=$2 + +generate_macros() { 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"' - fi - cat include/GL/gl.h.core +} - if ! grep -q GL_GLEXT_PROTOTYPES /System/Library/Frameworks/OpenGL.framework/Headers/gl.h ; then +generate_function_pointers() { { echo "#define GL_GLEXT_FUNCTION_POINTERS 1" echo "#define GL_GLEXT_LEGACY 1" - grep gl.*ProcPtr /System/Library/Frameworks/OpenGL.framework/Headers/gl.h | sed 's:^.*\(gl.*Ptr\).*$:\1:' | sort -u | perl -ne 'chomp($_); $s = "PFN".uc($_); $s =~ s/PROCPTR/PROC/; print "#define ".$_." ".$s."\n"' + generate_macros 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 +} + +cat ${INFILE} | while IFS= read LINE ; do + case $LINE in + "@CGL_MESA_COMPAT_MACROS@") + generate_macros + ;; + "@CGL_MESA_FUNCTION_POINTERS@") + if ! grep -q GL_GLEXT_PROTOTYPES /System/Library/Frameworks/OpenGL.framework/Headers/gl.h ; then + generate_function_pointers + fi + ;; + *) + printf "${LINE}\n" + ;; + esac +done > ${OUTFILE} Deleted: AppleSGLX/trunk/include/GL/gl.h.core =================================================================== --- AppleSGLX/trunk/include/GL/gl.h.core 2009-03-19 04:45:13 UTC (rev 317) +++ AppleSGLX/trunk/include/GL/gl.h.core 2009-03-19 21:08:01 UTC (rev 318) @@ -1,44 +0,0 @@ -/* 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. - */ - -#ifdef GL_GLEXT_FUNCTION_POINTERS -#define _GL_GLEXT_FUNCTION_POINTERS GL_GLEXT_FUNCTION_POINTERS -#undef GL_GLEXT_FUNCTION_POINTERS -#endif - -#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. */ -#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" - -/* 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 - -#ifdef _GL_GLEXT_LEGACY -#define GL_GLEXT_LEGACY _GL_GLEXT_LEGACY -#else -#undef GL_GLEXT_LEGACY -#endif - Deleted: AppleSGLX/trunk/include/GL/gl.h.footer =================================================================== --- AppleSGLX/trunk/include/GL/gl.h.footer 2009-03-19 04:45:13 UTC (rev 317) +++ AppleSGLX/trunk/include/GL/gl.h.footer 2009-03-19 21:08:01 UTC (rev 318) @@ -1,50 +0,0 @@ -#ifndef GL_GLEXT_LEGACY -#include <GL/glext.h> -#endif - -/* - * This is needed for building apple_glx_pbuffer.c, the latest - * glext.h from the registry lacks it, so it's from the Leopard glext.h: - */ -#ifndef GL_TEXTURE_RECTANGLE_EXT -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#endif - -/* This is needed for building the X server: */ -/* - * GL_MESA_packed_depth_stencil - */ -#ifndef GL_MESA_packed_depth_stencil -#define GL_MESA_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_MESA 0x8750 -#define GL_UNSIGNED_INT_24_8_MESA 0x8751 -#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 -#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 -#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 - -#endif /* GL_MESA_packed_depth_stencil */ - -/* Various other OS projects expect to get these macros from Mesa's gl.h */ -#ifndef GLAPI -#define GLAPI extern -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifndef APIENTRY -#define APIENTRY GLAPIENTRY -#endif - -/* "P" suffix to be used for a pointer to a function */ -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRYP -#define GLAPIENTRYP GLAPIENTRY * -#endif - -#endif /*__X_GL_H*/ Deleted: AppleSGLX/trunk/include/GL/gl.h.header =================================================================== --- AppleSGLX/trunk/include/GL/gl.h.header 2009-03-19 04:45:13 UTC (rev 317) +++ AppleSGLX/trunk/include/GL/gl.h.header 2009-03-19 21:08:01 UTC (rev 318) @@ -1,25 +0,0 @@ -/* - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * Copyright (C) 2009 Apple Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef __X_GL_H -#define __X_GL_H - Added: AppleSGLX/trunk/include/GL/gl.h.template =================================================================== --- AppleSGLX/trunk/include/GL/gl.h.template (rev 0) +++ AppleSGLX/trunk/include/GL/gl.h.template 2009-03-19 21:08:01 UTC (rev 318) @@ -0,0 +1,126 @@ +/* + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * Copyright (C) 2009 Apple Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __X_GL_H +#define __X_GL_H + +/* The following macros exist to address conflicts between the names given to + * function pointers by the MESA API and OpenGL.framework's API. + */ +@CGL_MESA_COMPAT_MACROS@ + +/* 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. + */ + +#ifdef GL_GLEXT_FUNCTION_POINTERS +#define _GL_GLEXT_FUNCTION_POINTERS GL_GLEXT_FUNCTION_POINTERS +#undef GL_GLEXT_FUNCTION_POINTERS +#endif + +#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. */ +#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" + +/* 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 + +#ifdef _GL_GLEXT_LEGACY +#define GL_GLEXT_LEGACY _GL_GLEXT_LEGACY +#else +#undef GL_GLEXT_LEGACY +#endif + +@CGL_MESA_FUNCTION_POINTERS@ + +#ifndef GL_GLEXT_LEGACY +#include <GL/glext.h> +#endif + +/* + * This is needed for building apple_glx_pbuffer.c, the latest + * glext.h from the registry lacks it, so it's from the Leopard glext.h: + */ +#ifndef GL_TEXTURE_RECTANGLE_EXT +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#endif + +/* This is needed for building the X server: */ +/* + * GL_MESA_packed_depth_stencil + */ +#ifndef GL_MESA_packed_depth_stencil +#define GL_MESA_packed_depth_stencil 1 + +#define GL_DEPTH_STENCIL_MESA 0x8750 +#define GL_UNSIGNED_INT_24_8_MESA 0x8751 +#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 +#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 +#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 + +#endif /* GL_MESA_packed_depth_stencil */ + +/* Various other OS projects expect to get these macros from Mesa's gl.h */ +#ifndef GLAPI +#define GLAPI extern +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY +#endif + +#ifndef APIENTRY +#define APIENTRY GLAPIENTRY +#endif + +/* "P" suffix to be used for a pointer to a function */ +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRYP +#define GLAPIENTRYP GLAPIENTRY * +#endif + +#endif /*__X_GL_H*/