mirror of
https://github.com/Perlmint/glew-cmake.git
synced 2024-11-30 02:17:07 +00:00
b6ef9dd3ad
git-svn-id: https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew@508 783a27ee-832a-0410-bc00-9f386506c6dd
197 lines
6.3 KiB
Bash
Executable File
197 lines
6.3 KiB
Bash
Executable File
#!/bin/bash
|
|
##
|
|
## Copyright (C) 2003-2007, Marcelo E. Magallon <mmagallo[]debian org>
|
|
## Copyright (C) 2003-2007, Milan Ikits <milan ikits[]ieee org>
|
|
##
|
|
## This program is distributed under the terms and conditions of the GNU
|
|
## General Public License Version 2 as published by the Free Software
|
|
## Foundation or, at your option, any later version.
|
|
##
|
|
## Parameters:
|
|
##
|
|
## $1: Extensions directory
|
|
## $2: Registry directory
|
|
## $3: The black list
|
|
|
|
set -e
|
|
|
|
if [ ! -d $1 ] ; then
|
|
mkdir $1
|
|
|
|
# Parse each of the extensions in the registry
|
|
find $2 -name doc -type d -prune -o -name \*.txt -print | \
|
|
grep -v -f $3 | sort | bin/parse_spec.pl $1
|
|
|
|
# fix GL_NV_texture_compression_vtc
|
|
grep -v EXT $1/GL_NV_texture_compression_vtc > tmp
|
|
mv tmp $1/GL_NV_texture_compression_vtc
|
|
|
|
# remove duplicates from GL_ARB_vertex_program and GL_ARB_fragment_program
|
|
grep -v -F -f $1/GL_ARB_vertex_program $1/GL_ARB_fragment_program > tmp
|
|
mv tmp $1/GL_ARB_fragment_program
|
|
|
|
# remove duplicates from GLX_EXT_visual_rating and GLX_EXT_visual_info
|
|
grep -v -F -f $1/GLX_EXT_visual_info $1/GLX_EXT_visual_rating > tmp
|
|
mv tmp $1/GLX_EXT_visual_rating
|
|
|
|
# fix GL_NV_occlusion_query and GL_HP_occlusion_test
|
|
grep -v '_HP' $1/GL_NV_occlusion_query > tmp
|
|
mv tmp $1/GL_NV_occlusion_query
|
|
perl -e's/OCCLUSION_TEST_HP.*/OCCLUSION_TEST_HP 0x8165/' -pi \
|
|
$1/GL_HP_occlusion_test
|
|
perl -e's/OCCLUSION_TEST_RESULT_HP.*/OCCLUSION_TEST_RESULT_HP 0x8166/' -pi \
|
|
$1/GL_HP_occlusion_test
|
|
|
|
# fix GLvoid in GL_ARB_vertex_buffer_objects
|
|
perl -e 's/ void\*/ GLvoid\*/g' -pi \
|
|
$1/GL_ARB_vertex_buffer_object
|
|
|
|
# add deprecated constants to GL_ATI_fragment_shader
|
|
cat >> $1/GL_ATI_fragment_shader <<EOT
|
|
GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E
|
|
GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F
|
|
GL_NUM_PASSES_ATI 0x8970
|
|
GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971
|
|
GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972
|
|
GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973
|
|
GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974
|
|
GL_COLOR_ALPHA_PAIRING_ATI 0x8975
|
|
GL_SWIZZLE_STRQ_ATI 0x897A
|
|
GL_SWIZZLE_STRQ_DQ_ATI 0x897B
|
|
EOT
|
|
|
|
# fix WGL_ATI_pixel_format_float
|
|
cat >> $1/WGL_ATI_pixel_format_float <<EOT
|
|
GL_RGBA_FLOAT_MODE_ATI 0x8820
|
|
GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835
|
|
EOT
|
|
|
|
# fix WGL_ARB_make_current_read
|
|
cat >> $1/WGL_ARB_make_current_read <<EOT
|
|
ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
|
|
ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
|
|
EOT
|
|
|
|
# fix WGL_EXT_make_current_read
|
|
cat >> $1/WGL_EXT_make_current_read <<EOT
|
|
ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
|
|
EOT
|
|
|
|
# add typedefs to GL_ARB_vertex_buffer_object; (from personal communication
|
|
# with Marco Fabbricatore).
|
|
#
|
|
# Rationale. The spec says:
|
|
#
|
|
# "Both types are defined as signed integers large enough to contain
|
|
# any pointer value [...] The idea of making these types unsigned was
|
|
# considered, but was ultimately rejected ..."
|
|
cat >> $1/GL_ARB_vertex_buffer_object <<EOT
|
|
typedef ptrdiff_t GLsizeiptrARB
|
|
typedef ptrdiff_t GLintptrARB
|
|
EOT
|
|
|
|
# add typedefs to GLX_EXT_import_context
|
|
cat >> $1/GLX_EXT_import_context <<EOT
|
|
typedef XID GLXContextID
|
|
EOT
|
|
|
|
# add tokens to GLX_OML_swap_method
|
|
cat >> $1/GLX_OML_swap_method <<EOT
|
|
GLX_SWAP_EXCHANGE_OML 0x8061
|
|
GLX_SWAP_COPY_OML 0x8062
|
|
GLX_SWAP_UNDEFINED_OML 0x8063
|
|
EOT
|
|
|
|
# add typedefs to GLX_SGIX_fbconfig
|
|
cat >> $1/GLX_SGIX_fbconfig <<EOT
|
|
typedef XID GLXFBConfigIDSGIX
|
|
typedef struct __GLXFBConfigRec *GLXFBConfigSGIX
|
|
EOT
|
|
|
|
# add typedefs to GLX_SGIX_pbuffer
|
|
cat >> $1/GLX_SGIX_pbuffer <<EOT
|
|
typedef XID GLXPbufferSGIX
|
|
typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX
|
|
EOT
|
|
|
|
# add typedef to GL_NV_half_float
|
|
cat >> $1/GL_NV_half_float <<EOT
|
|
typedef unsigned short GLhalf
|
|
EOT
|
|
|
|
# add handle to WGL_ARB_pbuffer
|
|
cat >> $1/WGL_ARB_pbuffer <<EOT
|
|
DECLARE_HANDLE(HPBUFFERARB);
|
|
EOT
|
|
|
|
# add handle to WGL_EXT_pbuffer
|
|
cat >> $1/WGL_EXT_pbuffer <<EOT
|
|
DECLARE_HANDLE(HPBUFFEREXT);
|
|
EOT
|
|
|
|
# get rid of GL_SUN_multi_draw_arrays
|
|
rm -f $1/GL_SUN_multi_draw_arrays
|
|
|
|
# change variable names in GL_ARB_vertex_shader
|
|
perl -e 's/v0/x/g' -pi $1/GL_ARB_vertex_shader
|
|
perl -e 's/v1/y/g' -pi $1/GL_ARB_vertex_shader
|
|
perl -e 's/v2/z/g' -pi $1/GL_ARB_vertex_shader
|
|
perl -e 's/v3/w/g' -pi $1/GL_ARB_vertex_shader
|
|
|
|
# remove triplicates in GL_ARB_shader_objects, GL_ARB_fragment_shader,
|
|
# and GL_ARB_vertex_shader
|
|
grep -v -F -f $1/GL_ARB_shader_objects $1/GL_ARB_fragment_shader > tmp
|
|
mv tmp $1/GL_ARB_fragment_shader
|
|
grep -v -F -f $1/GL_ARB_shader_objects $1/GL_ARB_vertex_shader > tmp
|
|
mv tmp $1/GL_ARB_vertex_shader
|
|
|
|
# remove duplicates in GL_ARB_vertex_program and GL_ARB_vertex_shader
|
|
grep -v -F -f $1/GL_ARB_vertex_program $1/GL_ARB_vertex_shader > tmp
|
|
mv tmp $1/GL_ARB_vertex_shader
|
|
|
|
# remove triplicates in GL_ARB_fragment_program, GL_ARB_fragment_shader,
|
|
# and GL_ARB_vertex_shader
|
|
grep -v -F -f $1/GL_ARB_fragment_program $1/GL_ARB_fragment_shader > tmp
|
|
mv tmp $1/GL_ARB_fragment_shader
|
|
grep -v -F -f $1/GL_ARB_fragment_program $1/GL_ARB_vertex_shader > tmp
|
|
mv tmp $1/GL_ARB_vertex_shader
|
|
|
|
# fix bugs in GL_ARB_vertex_shader
|
|
grep -v "GL_FLOAT" $1/GL_ARB_vertex_shader > tmp
|
|
mv tmp $1/GL_ARB_vertex_shader
|
|
perl -e 's/handle /GLhandleARB /g' -pi $1/GL_ARB_vertex_shader
|
|
|
|
# fix bugs in GL_ARB_shader_objects
|
|
grep -v "GL_FLOAT " $1/GL_ARB_shader_objects > tmp
|
|
mv tmp $1/GL_ARB_shader_objects
|
|
grep -v "GL_INT " $1/GL_ARB_shader_objects > tmp
|
|
mv tmp $1/GL_ARB_shader_objects
|
|
|
|
# add typedefs to GL_ARB_shader_objects
|
|
cat >> $1/GL_ARB_shader_objects <<EOT
|
|
typedef char GLcharARB
|
|
typedef unsigned int GLhandleARB
|
|
EOT
|
|
|
|
# add missing functions to GL_ARB_transpose_matrix
|
|
cat >> $1/GL_ARB_transpose_matrix <<EOT
|
|
void glLoadTransposeMatrixfARB (GLfloat m[16])
|
|
void glLoadTransposeMatrixdARB (GLdouble m[16])
|
|
void glMultTransposeMatrixfARB (GLfloat m[16])
|
|
void glMultTransposeMatrixdARB (GLdouble m[16])
|
|
EOT
|
|
|
|
# add missing tokens to GL_EXT_framebuffer_multisample
|
|
cat >> $1/GL_EXT_framebuffer_multisample <<EOT
|
|
GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
|
|
GL_MAX_SAMPLES_EXT 0x8D57
|
|
EOT
|
|
|
|
# fix const correctness in GL_ARB_shader_objects
|
|
# perl -e 's/(.+glUniform.*(fv|iv).+)(GLfloat\*.+|GLint\*.+)/\1const \3/;' -pi $1/GL_ARB_shader_objects
|
|
|
|
# clean up
|
|
rm -f $1/*.bak
|
|
|
|
fi
|