1a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall#!/usr/bin/env python 2a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# 34690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos# Copyright (c) 2013-2015 The Khronos Group Inc. 4a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# 5a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Permission is hereby granted, free of charge, to any person obtaining a 6a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# copy of this software and/or associated documentation files (the 7a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# "Materials"), to deal in the Materials without restriction, including 8a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# without limitation the rights to use, copy, modify, merge, publish, 9a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# distribute, sublicense, and/or sell copies of the Materials, and to 10a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# permit persons to whom the Materials are furnished to do so, subject to 11a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# the following conditions: 12a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# 13a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# The above copyright notice and this permission notice shall be included 14a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# in all copies or substantial portions of the Materials. 15a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# 16a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 23a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 24a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallimport sys, time, pdb, string, cProfile 25a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallfrom reg import * 26a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 27a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# debug - start header generation in debugger 28a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# dump - dump registry after loading 29a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# profile - enable Python profiling 30a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# protect - whether to use #ifndef protections 31a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# registry <filename> - use specified XML registry instead of gl.xml 32a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# target - string name of target header, or all targets if None 33a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# timeit - time length of registry loading & header generation 34a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# validate - validate return & parameter group tags against <group> 35a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldebug = False 36a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldump = False 37a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallprofile = False 38a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallprotect = True 39a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halltarget = None 40a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halltimeit = False 41a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallvalidate= False 42a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Default input / log files 43a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallerrFilename = None 44a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HalldiagFilename = 'diag.txt' 45a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallregFilename = 'gl.xml' 46a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 47a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallif __name__ == '__main__': 48a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall i = 1 49a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall while (i < len(sys.argv)): 50a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall arg = sys.argv[i] 51a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall i = i + 1 52a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall if (arg == '-debug'): 53a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Enabling debug (-debug)', file=sys.stderr) 54a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall debug = True 55a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-dump'): 56a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Enabling dump (-dump)', file=sys.stderr) 57a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall dump = True 58a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-noprotect'): 59a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Disabling inclusion protection in output headers', file=sys.stderr) 60a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protect = False 61a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-profile'): 62a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Enabling profiling (-profile)', file=sys.stderr) 63a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = True 64a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-registry'): 65a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall regFilename = sys.argv[i] 66a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall i = i+1 67a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Using registry ', regFilename, file=sys.stderr) 68a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-time'): 69a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Enabling timing (-time)', file=sys.stderr) 70a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall timeit = True 71a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg == '-validate'): 72a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Enabling group validation (-validate)', file=sys.stderr) 73a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall validate = True 74a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall elif (arg[0:1] == '-'): 75a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Unrecognized argument:', arg, file=sys.stderr) 76a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall exit(1) 77a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall else: 78a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall target = arg 79a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Using target', target, file=sys.stderr) 80a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 81a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Simple timer functions 82a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallstartTime = None 83a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldef startTimer(): 84a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall global startTime 85a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall startTime = time.clock() 86a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldef endTimer(msg): 87a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall global startTime 88a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall endTime = time.clock() 89a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall if (timeit): 90a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write(msg, endTime - startTime) 91a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall startTime = None 92a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 93a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Load & parse registry 94a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallreg = Registry() 95a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 96a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallstartTimer() 97a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halltree = etree.parse(regFilename) 98a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallendTimer('Time to make ElementTree =') 99a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 100a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallstartTimer() 101a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallreg.loadElementTree(tree) 102a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallendTimer('Time to parse ElementTree =') 103a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 104a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallif (validate): 105a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall reg.validateGroups() 106a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 107a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallif (dump): 108a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('***************************************') 109a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Performing Registry dump to regdump.txt') 110a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('***************************************') 111a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall reg.dumpReg(filehandle = open('regdump.txt','w')) 112a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 113a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Turn a list of strings into a regexp string matching exactly those strings 114a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldef makeREstring(list): 115a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall return '^(' + '|'.join(list) + ')$' 116a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 117a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# These are "mandatory" OpenGL ES 1 extensions, to 118a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# be included in the core GLES/gl.h header. 119a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halles1CoreList = [ 120a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 'GL_OES_read_format', 121a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 'GL_OES_compressed_paletted_texture', 122a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 'GL_OES_point_size_array', 123a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 'GL_OES_point_sprite' 124a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 125a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 126a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Descriptive names for various regexp patterns used to select 127a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# versions and extensions 128a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 129a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallallVersions = allExtensions = '.*' 130a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallnoVersions = noExtensions = None 131a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgl12andLaterPat = '1\.[2-9]|[234]\.[0-9]' 132a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles2onlyPat = '2\.[0-9]' 133a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles2and30Pat = '2\.[0-9]|3.0' 134a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles2and30and31Pat = '2.[0-9]|3.[01]' 135a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halles1CorePat = makeREstring(es1CoreList) 136a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Extensions in old glcorearb.h but not yet tagged accordingly in gl.xml 137a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallglCoreARBPat = None 138a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallglx13andLaterPat = '1\.[3-9]' 139a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 140a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Copyright text prefixing all headers (list of strings). 141a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallprefixStrings = [ 142a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '/*', 1434690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos '** Copyright (c) 2013-2015 The Khronos Group Inc.', 144a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 145a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** Permission is hereby granted, free of charge, to any person obtaining a', 146a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** copy of this software and/or associated documentation files (the', 147a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** "Materials"), to deal in the Materials without restriction, including', 148a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** without limitation the rights to use, copy, modify, merge, publish,', 149a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** distribute, sublicense, and/or sell copies of the Materials, and to', 150a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** permit persons to whom the Materials are furnished to do so, subject to', 151a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** the following conditions:', 152a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 153a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** The above copyright notice and this permission notice shall be included', 154a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** in all copies or substantial portions of the Materials.', 155a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 156a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,', 157a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF', 158a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.', 159a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY', 160a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,', 161a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE', 162a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.', 163a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '*/', 164a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '/*', 165a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** This header is generated from the Khronos OpenGL / OpenGL ES XML', 166a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** API Registry. The current version of the Registry, generator scripts', 167a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** used to make the header, and the header can be found at', 168a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** http://www.opengl.org/registry/', 169a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 170a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** Khronos $' + 'Revision$ on $' + 'Date$', 171a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '*/', 172a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 173a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 174a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 175a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# glext.h / glcorearb.h define calling conventions inline (no GL *platform.h) 176a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallglExtPlatformStrings = [ 177a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', 178a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#ifndef WIN32_LEAN_AND_MEAN', 179a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define WIN32_LEAN_AND_MEAN 1', 180a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 181a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#include <windows.h>', 182a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 183a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '', 184a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#ifndef APIENTRY', 185a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define APIENTRY', 186a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 187a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#ifndef APIENTRYP', 188a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define APIENTRYP APIENTRY *', 189a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 190a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#ifndef GLAPI', 191a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define GLAPI extern', 192a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 193a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 194a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 195a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 196a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallglCorearbPlatformStrings = glExtPlatformStrings + [ 197a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '/* glcorearb.h is for use with OpenGL core profile implementations.', 198a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** It should should be placed in the same directory as gl.h and', 199a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** included as <GL/glcorearb.h>.', 200a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 201a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** glcorearb.h includes only APIs in the latest OpenGL core profile', 202a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** implementation together with APIs in newer ARB extensions which ', 203a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** can be supported by the core profile. It does not, and never will', 204a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** include functionality removed from the core profile, such as', 205a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** fixed-function vertex and fragment processing.', 206a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '**', 207a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or', 208a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '** <GL/glext.h> in the same source file.', 209a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '*/', 210a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 211a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 212a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 213a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# wglext.h needs Windows include 214a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallwglPlatformStrings = [ 215a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)', 216a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define WIN32_LEAN_AND_MEAN 1', 217a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#include <windows.h>', 218a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 219a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '', 220a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 221a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 222a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# GLES 1/2/3 core .h have separate *platform.h files to define calling conventions 223a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles1PlatformStrings = [ '#include <GLES/glplatform.h>', '' ] 224a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles2PlatformStrings = [ '#include <GLES2/gl2platform.h>', '' ] 225a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallgles3PlatformStrings = [ '#include <GLES3/gl3platform.h>', '' ] 226a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HalleglPlatformStrings = [ '#include <EGL/eglplatform.h>', '' ] 227a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 2284690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos# GLES headers have a small addition to calling convention headers for function pointer typedefs 2294690754ec38f77431431910ce878850e1c60ab79Pablo CeballosapiEntryPrefixStrings = [ 230a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#ifndef GL_APIENTRYP', 231a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#define GL_APIENTRYP GL_APIENTRY*', 232a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '#endif', 233a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 234a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 235a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 236a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Insert generation date in a comment for headers not having *GLEXT_VERSION macros 237a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallgenDateCommentString = [ 238a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall format("/* Generated on date %s */" % time.strftime("%Y%m%d")), 239a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 240a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 241a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 242a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# GL_GLEXT_VERSION is defined only in glext.h 243a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallglextVersionStrings = [ 244a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall format("#define GL_GLEXT_VERSION %s" % time.strftime("%Y%m%d")), 245a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 246a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 247a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# WGL_WGLEXT_VERSION is defined only in wglext.h 248a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallwglextVersionStrings = [ 249a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall format("#define WGL_WGLEXT_VERSION %s" % time.strftime("%Y%m%d")), 250a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 251a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 252a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# GLX_GLXEXT_VERSION is defined only in glxext.h 253a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallglxextVersionStrings = [ 254a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall format("#define GLX_GLXEXT_VERSION %s" % time.strftime("%Y%m%d")), 255a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 256a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 257a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# EGL_EGLEXT_VERSION is defined only in eglext.h 258a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HalleglextVersionStrings = [ 259a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall format("#define EGL_EGLEXT_VERSION %s" % time.strftime("%Y%m%d")), 260a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall '' 261a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 262a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 263a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# Defaults for generating re-inclusion protection wrappers (or not) 264a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallprotectFile = protect 265a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallprotectFeature = protect 266a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallprotectProto = protect 267a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 268a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse HallbuildList = [ 269a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GL API 1.2+ + extensions - GL/glext.h 270a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 271a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/glext.h', 272a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gl', 273a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'compatibility', 274a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 275a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = gl12andLaterPat, 276a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'gl', # Default extensions for GL 277a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 278a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 279a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + glExtPlatformStrings + glextVersionStrings, 280a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 281a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 282a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 283a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 284a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 285a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GLAPI ', 286a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'APIENTRY ', 287a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'APIENTRYP '), 288a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GL core profile + extensions - GL/glcorearb.h 289a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 290a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/glcorearb.h', 291a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gl', 292a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'core', 293a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 294a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 295a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'glcore', # Default extensions for GL core profile (only) 296a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = glCoreARBPat, 297a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 298a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + glCorearbPlatformStrings, 299a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 300a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 301a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 302a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 303a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 304a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GLAPI ', 305a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'APIENTRY ', 306a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'APIENTRYP '), 307a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GLES 1.x API + mandatory extensions - GLES/gl.h (no function pointers) 308a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 309a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES/gl.h', 310a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles1', 311a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 312a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 313a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 314a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 315a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = es1CorePat, # Add mandatory ES1 extensions in GLES1/gl.h 316a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 317a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + gles1PlatformStrings + genDateCommentString, 318a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = False, 319a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 320a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 321a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = False, # Core ES API functions are in the static link libraries 322a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 323a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_API ', 324a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 325a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 326a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GLES 1.x extensions - GLES/glext.h 327a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 328a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES/glext.h', 329a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles1', 330a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 331a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 332a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = noVersions, 333a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'gles1', # Default extensions for GLES 1 334a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 335a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = es1CorePat, # Remove mandatory ES1 extensions in GLES1/glext.h 3364690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, 337a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 338a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 339a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 340a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 341a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 342a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_API ', 343a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 344a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 3454690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos # GLES 2.0 API - GLES2/gl2.h (now with function pointers) 346a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 347a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES2/gl2.h', 348a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles2', 349a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 350a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = gles2onlyPat, 351a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 352a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 353a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 354a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 3554690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos prefixText = prefixStrings + gles2PlatformStrings + apiEntryPrefixStrings + genDateCommentString, 3564690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos genFuncPointers = True, 357a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 358a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 3594690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos protectProto = protectProto, # Core ES API functions are in the static link libraries 360a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 361a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_APICALL ', 362a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 363a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 364a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GLES 3.1 / 3.0 / 2.0 extensions - GLES2/gl2ext.h 365a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 366a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES2/gl2ext.h', 367a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles2', 368a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 369a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = gles2onlyPat, 370a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = None, 371a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'gles2', # Default extensions for GLES 2 372a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 373a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 3744690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos prefixText = prefixStrings + apiEntryPrefixStrings + genDateCommentString, 375a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 376a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 377a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 378a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 379a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 380a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_APICALL ', 381a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 382a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 3834690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos # GLES 3.1 API - GLES3/gl31.h (now with function pointers) 384a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 385a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES3/gl31.h', 386a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles2', 387a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 388a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = gles2and30and31Pat, 389a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 390a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 391a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 392a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 3934690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + genDateCommentString, 3944690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos genFuncPointers = True, 395a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 396a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 3974690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos protectProto = protectProto, # Core ES API functions are in the static link libraries 398a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 399a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_APICALL ', 400a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 401a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 4024690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos # GLES 3.0 API - GLES3/gl3.h (now with function pointers) 403a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 404a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GLES3/gl3.h', 405a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'gles2', 406a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = 'common', 407a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = gles2and30Pat, 408a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 409a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 410a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 411a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 4124690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos prefixText = prefixStrings + gles3PlatformStrings + apiEntryPrefixStrings + genDateCommentString, 4134690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos genFuncPointers = True, 414a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 415a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 4164690754ec38f77431431910ce878850e1c60ab79Pablo Ceballos protectProto = protectProto, # Core ES API functions are in the static link libraries 417a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GL_GLEXT_PROTOTYPES', 418a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'GL_APICALL ', 419a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'GL_APIENTRY ', 420a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'GL_APIENTRYP '), 421a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # EGL API - EGL/egl.h (no function pointers, yet @@@) 422a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 423a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'EGL/egl.h', 424a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'egl', 425a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 426a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 427a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 428a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 429a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 430a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 431a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + eglPlatformStrings + genDateCommentString, 432a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = False, 433a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 434a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 435a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = False, 436a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'EGL_EGLEXT_PROTOTYPES', 437a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'EGLAPI ', 438a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'EGLAPIENTRY ', 439a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'EGLAPIENTRYP '), 440a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # EGL extensions - EGL/eglext.h (no function pointers, yet @@@) 441a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 442a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'EGL/eglext.h', 443a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'egl', 444a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 445a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 446a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = None, 447a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'egl', # Default extensions for EGL 448a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 449a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 450a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + eglPlatformStrings + eglextVersionStrings, 451a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 452a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 453a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 454a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 455a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'EGL_EGLEXT_PROTOTYPES', 456a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = 'EGLAPI ', 457a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'EGLAPIENTRY ', 458a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'EGLAPIENTRYP '), 459a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GLX 1.* API - GL/glx.h 460a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 461a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/glx.h', 462a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'glx', 463a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 464a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 465a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 466a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = None, # No default extensions 467a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 468a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 469a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # add glXPlatformStrings? 470a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + genDateCommentString, 471a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 472a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 473a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 474a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 475a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', 476a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = '', 477a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = '', 478a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = ' *'), 479a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # GLX 1.3+ API + extensions - GL/glxext.h (no function pointers, yet @@@) 480a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 481a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/glxext.h', 482a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'glx', 483a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 484a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 485a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = glx13andLaterPat, 486a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'glx', # Default extensions for GLX 487a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 488a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 489a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # add glXPlatformStrings? 490a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + glxextVersionStrings, 491a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 492a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 493a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 494a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 495a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'GLX_GLXEXT_PROTOTYPES', 496a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = '', 497a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = '', 498a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = ' *'), 499a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # WGL API + extensions - GL/wgl.h (no function pointers, yet @@@) 500a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 501a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/wgl.h', 502a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'wgl', 503a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 504a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 505a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = allVersions, 506a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'wgl', # Default extensions for WGL 507a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 508a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 509a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + wglPlatformStrings + genDateCommentString, 510a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 511a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 512a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 513a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 514a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', 515a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = '', 516a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'WINAPI ', 517a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'WINAPI * '), 518a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # WGL extensions - GL/wglext.h (no function pointers, yet @@@) 519a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall CGeneratorOptions( 520a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall filename = 'GL/wglext.h', 521a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apiname = 'wgl', 522a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall profile = None, 523a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall versions = allVersions, 524a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall emitversions = None, 525a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall defaultExtensions = 'wgl', # Default extensions for WGL 526a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall addExtensions = None, 527a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall removeExtensions = None, 528a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall prefixText = prefixStrings + wglPlatformStrings + wglextVersionStrings, 529a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genFuncPointers = True, 530a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFile = protectFile, 531a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectFeature = protectFeature, 532a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProto = protectProto, 533a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall protectProtoStr = 'WGL_WGLEXT_PROTOTYPES', 534a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apicall = '', 535a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientry = 'WINAPI ', 536a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall apientryp = 'WINAPI * '), 537a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # End of list 538a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall None 539a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall] 540a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 541a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall# create error/warning & diagnostic files 542a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallif (errFilename): 543a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall errWarn = open(errFilename,'w') 544a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallelse: 545a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall errWarn = sys.stderr 546a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldiag = open(diagFilename, 'w') 547a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 548a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Halldef genHeaders(): 549a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # Loop over targets, building each 550a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall generated = 0 551a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall for genOpts in buildList: 552a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall if (genOpts == None): 553a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall break 554a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall if (target and target != genOpts.filename): 555a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall # write('*** Skipping', genOpts.filename) 556a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall continue 557a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('*** Building', genOpts.filename) 558a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall generated = generated + 1 559a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall startTimer() 560a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall gen = COutputGenerator(errFile=errWarn, 561a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall warnFile=errWarn, 562a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall diagFile=diag) 563a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall reg.setGenerator(gen) 564a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall reg.apiGen(genOpts) 565a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('** Generated', genOpts.filename) 566a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall endTimer('Time to generate ' + genOpts.filename + ' =') 567a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall if (target and generated == 0): 568a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall write('Failed to generate target:', target) 569a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall 570a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallif (debug): 571a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall pdb.run('genHeaders()') 572a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallelif (profile): 573a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall import cProfile, pstats 574a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall cProfile.run('genHeaders()', 'profile.txt') 575a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall p = pstats.Stats('profile.txt') 576a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall p.strip_dirs().sort_stats('time').print_stats(50) 577a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hallelse: 578a42788e2b83bf9c1b2471c4ad2af59b8e72333e8Jesse Hall genHeaders() 579