glsl: Autogenerate builtin_functions.cpp as part of the build process.
Python is already necessary for other parts of Mesa, so there's no
reason we can't just generate it. This patch updates both make and
SCons to do so.
diff --git a/src/glsl/SConscript b/src/glsl/SConscript
index f179721..1757605 100644
--- a/src/glsl/SConscript
+++ b/src/glsl/SConscript
@@ -2,6 +2,8 @@
Import('*')
+from sys import executable as python_cmd
+
env = env.Clone()
env.Prepend(CPPPATH = [
@@ -20,7 +22,6 @@
'ast_function.cpp',
'ast_to_hir.cpp',
'ast_type.cpp',
- 'builtin_function.cpp',
'glsl_lexer.cpp',
'glsl_parser.cpp',
'glsl_parser_extras.cpp',
@@ -79,9 +80,28 @@
'strtod.c',
]
+env.Prepend(LIBS = ['talloc'])
+env.Append(CPPPATH = ['#/src/glsl'])
+
+builtin_compiler = env.Program(
+ target = 'builtin_compiler',
+ source = sources + ['main.cpp', 'builtin_stubs.cpp',
+ '#src/mesa/program/hash_table.c',
+ '#src/mesa/program/symbol_table.c'],
+)
+
+env.CodeGenerate(
+ target = 'builtin_function.cpp',
+ script = 'builtins/tools/generate_builtins.py',
+ source = builtin_compiler,
+ command = python_cmd + ' $SCRIPT $SOURCE > $TARGET'
+)
+
+env.Depends('builtin_function.cpp', ['builtins/tools/generate_builtins.py', 'builtins/tools/texture_builtins.py'] + Glob('builtins/ir/*'))
+
glsl = env.ConvenienceLibrary(
target = 'glsl',
- source = sources,
+ source = sources + [ 'builtin_function.cpp' ],
)
Export('glsl')