mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
generate_builtins.py: Output large strings as arrays of characters.
This works around MSVC's 65535 byte limit, unfortunately at the expense of any semblance of readability and much larger file size. Hopefully I can implement a better solution later, but for now this fixes the build.
This commit is contained in:
parent
50095ac87c
commit
2cacaf6e7b
1 changed files with 14 additions and 2 deletions
|
|
@ -25,13 +25,25 @@ def get_builtin_definitions():
|
|||
return fs
|
||||
|
||||
def stringify(s):
|
||||
# Work around MSVC's 65535 byte limit by outputting an array of characters
|
||||
# rather than actual string literals.
|
||||
if len(s) >= 65535:
|
||||
#t = "/* Warning: length " + repr(len(s)) + " too large */\n"
|
||||
t = ""
|
||||
for c in re.sub('\s\s+', ' ', s):
|
||||
if c == '\n':
|
||||
t += '\n'
|
||||
else:
|
||||
t += "'" + c + "',"
|
||||
return '{' + t[:-1] + '}'
|
||||
|
||||
t = s.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n"\n "')
|
||||
return ' "' + t + '"\n'
|
||||
|
||||
def write_function_definitions():
|
||||
fs = get_builtin_definitions()
|
||||
for k, v in sorted(fs.iteritems()):
|
||||
print 'static const char *builtin_' + k + ' ='
|
||||
print 'static const char builtin_' + k + '[] ='
|
||||
print stringify(v), ';'
|
||||
|
||||
def run_compiler(args):
|
||||
|
|
@ -64,7 +76,7 @@ def write_profile(filename, profile):
|
|||
# clutter the diff output.
|
||||
proto_ir = re.sub(r'@0x[0-9a-f]+', '', proto_ir);
|
||||
|
||||
print 'static const char *prototypes_for_' + profile + ' ='
|
||||
print 'static const char prototypes_for_' + profile + '[] ='
|
||||
print stringify(proto_ir), ';'
|
||||
|
||||
# Print a table of all the functions (not signatures) referenced.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue