Mesa (master): scons: Use Flex and Bison to generate lexer/parser files.

Kenneth Graunke kwg at kemper.freedesktop.org
Tue Mar 1 23:49:51 UTC 2011


Module: Mesa
Branch: master
Commit: 8be58df67a3d3cc682407f10badcb92a1c988e65
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8be58df67a3d3cc682407f10badcb92a1c988e65

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Mar  1 15:04:04 2011 -0800

scons: Use Flex and Bison to generate lexer/parser files.

This gets it building again here; I'll leave it up to the SCons
maintainers to make further improvements.

---

 src/glsl/SConscript |   19 +++++++++++++++----
 src/mesa/SConscript |    8 ++++++--
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/glsl/SConscript b/src/glsl/SConscript
index 7c6b6ae..10abab6 100644
--- a/src/glsl/SConscript
+++ b/src/glsl/SConscript
@@ -11,18 +11,29 @@ env.Prepend(CPPPATH = [
     '#src/mapi',
     '#src/mesa',
     '#src/glsl',
+    '#src/glsl/glcpp',
 ])
 
+env.Append(YACCFLAGS = '-d')
+
+parser_env = env.Clone();
+parser_env.Append(YACCFLAGS = ['--defines=src/glsl/glsl_parser.h', '-p', '_mesa_glsl_'])
+
+glcpp_lexer = env.CFile('glcpp/glcpp-lex.c', 'glcpp/glcpp-lex.l')
+glcpp_parser = env.CFile('glcpp/glcpp-parse.c', 'glcpp/glcpp-parse.y')
+glsl_lexer = parser_env.CXXFile('glsl_lexer.cpp', 'glsl_lexer.ll')
+glsl_parser = parser_env.CXXFile('glsl_parser.cpp', 'glsl_parser.yy')
+
 sources = [
-    'glcpp/glcpp-lex.c',
-    'glcpp/glcpp-parse.c',
+    glcpp_lexer,
+    glcpp_parser[0],
     'glcpp/pp.c',
     'ast_expr.cpp',
     'ast_function.cpp',
     'ast_to_hir.cpp',
     'ast_type.cpp',
-    'glsl_lexer.cpp',
-    'glsl_parser.cpp',
+    glsl_lexer,
+    glsl_parser[0],
     'glsl_parser_extras.cpp',
     'glsl_types.cpp',
     'glsl_symbol_table.cpp',
diff --git a/src/mesa/SConscript b/src/mesa/SConscript
index d65750b..acbf86e 100644
--- a/src/mesa/SConscript
+++ b/src/mesa/SConscript
@@ -214,15 +214,17 @@ statetracker_sources = [
     'state_tracker/st_texture.c',
 ]
 
+env.Append(YACCFLAGS = '-d')
+program_lex = env.CFile('program/lex.yy.c', 'program/program_lexer.l')
+program_parse = env.CFile('program/program_parse.tab.c',
+                          'program/program_parse.y')
 program_sources = [
     'program/arbprogparse.c',
     'program/hash_table.c',
     'program/ir_to_mesa.cpp',
-    'program/lex.yy.c',
     'program/nvfragparse.c',
     'program/nvvertparse.c',
     'program/program.c',
-    'program/program_parse.tab.c',
     'program/program_parse_extra.c',
     'program/prog_cache.c',
     'program/prog_execute.c',
@@ -237,6 +239,8 @@ program_sources = [
     'program/programopt.c',
     'program/sampler.cpp',
     'program/symbol_table.c',
+    program_lex,
+    program_parse[0],
 ]
 
 mesa_sources = (




More information about the mesa-commit mailing list