On Sun, 25 Sep 2011 15:36:02 -0400, Matt Turner <matts...@gmail.com> wrote: Non-text part: multipart/mixed > On Sat, Sep 24, 2011 at 9:06 PM, Matt Turner <matts...@gmail.com> wrote: > > Signed-off-by: Matt Turner <matts...@gmail.com> > > --- > > The last discussion about using automake ("[RFC] Convert mesa to > > automake/libtool") > > ended without anything happening, probably because the branch wasn't ready. > > > > This patch is an attempt to get the ball rolling again. Without ripping out > > the entire existing build system in one swat, it attempts to gradually > > replace > > it directory by directory with automake. > > > > The patch has a few problems currently, and a few things that can possibly > > be > > done better: > > - Mainly, that building libmesa.a currently fails. > > - Not sure how to handle shared/static dricore options. > > - libtool defines VERSION (-DVERSION=...), which screws up the > > VERSION > > token in glsl_lexer.ll and glsl_parser.yy. I trivially renamed it. > > - libralloc.la can probably be combined into libglslcore.la, and not > > have to be added to every _LDADD line. > > - The rules for flex and bison can probably be eliminated by using > > YFLAGS and LFLAGS. I tried, but ylwrap gave me some error.
I'd like to add other libs (hash table) at the src/ level, too, so a single helper lib that is "mesa's shared, non-mtypes-using stuff but not things that are really Mesa like the glsl compiler" would be nice. I do want to see dricore continue. It's a really nice feature for development, by shortening build times, and it seems like distros want it. However, it was pretty broken as-is. You had to build every helper lib into a separate installed .so, because the build system was lame, and dependencies were even more screwed up than usual. I'd say go ahead even if dricore isn't fixed. I don't think we'll have any big problem recovering it for automake once core Mesa is converted. > diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am > new file mode 100644 > index 0000000..a31d845 > --- /dev/null > +++ b/src/glsl/Makefile.am > @@ -0,0 +1,152 @@ > +LEX = @FLEX@ > +YACC = @BISON@ > + > +noinst_LTLIBRARIES = \ > + libhash_table.la \ > + libstandalone_scaffolding.la \ > + libsymbol_table.la \ > + libmain.la \ > + libglcpp.la \ > + libglslcore.la > +lib_LTLIBRARIES = libglsl.la > +noinst_PROGRAMS = glcpp/glcpp builtin_compiler glsl_test > +bin_PROGRAMS = glsl_compiler > + > +INCLUDES = \ > + -I. \ > + -I../mesa \ > + -I../mapi \ > + -Iglcpp \ > + -I../../include > + > +BUILT_SOURCES = \ > + glcpp/glcpp-lex.c \ > + glcpp/glcpp-parse.c \ > + glsl_lexer.cpp \ > + glsl_parser.cpp \ > + builtin_function.cpp > + > +libhash_table_la_SOURCES = ../mesa/program/hash_table.c > +libstandalone_scaffolding_la_SOURCES = standalone_scaffolding.cpp > +libsymbol_table_la_SOURCES = ../mesa/program/symbol_table.c > +libmain_la_SOURCES = main.cpp > + > +libglcpp_la_SOURCES = \ > + glcpp/glcpp-lex.c \ > + glcpp/glcpp-parse.c \ > + glcpp/pp.c \ > + ralloc.c > + > +glcpp_glcpp_SOURCES = glcpp/glcpp.c > +glcpp_glcpp_LDADD = libglcpp.la libhash_table.la > + > +libglslcore_la_SOURCES = \ > + strtod.c \ > + ast_expr.cpp \ > + ast_function.cpp \ > + ast_to_hir.cpp \ > + ast_type.cpp \ > + glsl_lexer.cpp \ > + glsl_parser.cpp \ > + glsl_parser_extras.cpp \ > + glsl_types.cpp \ > + glsl_symbol_table.cpp \ > + hir_field_selection.cpp \ > + ir_basic_block.cpp \ > + ir_clone.cpp \ > + ir_constant_expression.cpp \ > + ir.cpp \ > + ir_expression_flattening.cpp \ > + ir_function_can_inline.cpp \ > + ir_function_detect_recursion.cpp \ > + ir_function.cpp \ > + ir_hierarchical_visitor.cpp \ > + ir_hv_accept.cpp \ > + ir_import_prototypes.cpp \ > + ir_print_visitor.cpp \ > + ir_reader.cpp \ > + ir_rvalue_visitor.cpp \ > + ir_set_program_inouts.cpp \ > + ir_validate.cpp \ > + ir_variable.cpp \ > + ir_variable_refcount.cpp \ > + linker.cpp \ > + link_functions.cpp \ > + loop_analysis.cpp \ > + loop_controls.cpp \ > + loop_unroll.cpp \ > + lower_clip_distance.cpp \ > + lower_discard.cpp \ > + lower_if_to_cond_assign.cpp \ > + lower_instructions.cpp \ > + lower_jumps.cpp \ > + lower_mat_op_to_vec.cpp \ > + lower_noise.cpp \ > + lower_texture_projection.cpp \ > + lower_variable_index_to_cond_assign.cpp \ > + lower_vec_index_to_cond_assign.cpp \ > + lower_vec_index_to_swizzle.cpp \ > + lower_vector.cpp \ > + opt_algebraic.cpp \ > + opt_constant_folding.cpp \ > + opt_constant_propagation.cpp \ > + opt_constant_variable.cpp \ > + opt_copy_propagation.cpp \ > + opt_copy_propagation_elements.cpp \ > + opt_dead_code.cpp \ > + opt_dead_code_local.cpp \ > + opt_dead_functions.cpp \ > + opt_discard_simplification.cpp \ > + opt_function_inlining.cpp \ > + opt_if_simplification.cpp \ > + opt_noop_swizzle.cpp \ > + opt_redundant_jumps.cpp \ > + opt_structure_splitting.cpp \ > + opt_swizzle_swizzle.cpp \ > + opt_tree_grafting.cpp \ > + s_expression.cpp > +libglslcore_la_LIBADD = libglcpp.la > + > +builtin_compiler_SOURCES = builtin_stubs.cpp > +builtin_compiler_LDADD = \ > + libmain.la \ > + libglslcore.la \ > + libhash_table.la \ > + libsymbol_table.la \ > + libstandalone_scaffolding.la > + > +libglsl_la_SOURCES = builtin_function.cpp > +libglsl_la_LIBADD = libglslcore.la > + > +glsl_compiler_SOURCES = > +glsl_compiler_LDADD = \ > + libmain.la \ > + libglsl.la \ > + libhash_table.la \ > + libsymbol_table.la \ > + libstandalone_scaffolding.la > + > +glsl_test_SOURCES = \ > + test.cpp \ > + test_optpass.cpp > +glsl_test_LDADD = \ > + libglsl.la \ > + libhash_table.la \ > + libsymbol_table.la \ > + libstandalone_scaffolding.la > + > +glsl_lexer.cpp: glsl_lexer.ll > + $(LEX) --nounistd -o$@ $< > + > +glsl_parser.cpp: glsl_parser.yy > + $(YACC) -v -o "$@" -p "_mesa_glsl_" --defines=glsl_parser.h $< > + > +glcpp/glcpp-lex.c: glcpp/glcpp-lex.l > + $(LEX) --nounistd -o$@ $< > + > +glcpp/glcpp-parse.c: glcpp/glcpp-parse.y > + $(YACC) -v -o "$@" --defines=glcpp/glcpp-parse.h $< > + > +builtin_function.cpp: builtins/profiles/* builtins/ir/* > builtins/tools/generate_builtins.py builtins/tools/texture_builtins.py > builtin_compiler > + @echo Regenerating builtin_function.cpp... > + $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py > ./builtin_compiler > builtin_function.cpp || rm -f builtin_function.cpp I really like how this file is understandable now. It was a disaster before. One concern I had for automake overall doesn't look like an issue using the "include" directive: android mandates using the special android build system to build its software, and we're definitely supporting android, so we want to share our source lists in a sources.mak file if possible. > diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll > index cfd8926..dd7c68c 100644 > --- a/src/glsl/glsl_lexer.ll > +++ b/src/glsl/glsl_lexer.ll > @@ -104,8 +104,8 @@ HASH ^{SPC}#{SPC} > > /* Preprocessor tokens. */ > ^[ \t]*#[ \t]*$ ; > -^[ \t]*#[ \t]*version { BEGIN PP; return VERSION; } > -^[ \t]*#[ \t]*extension { BEGIN PP; return EXTENSION; } > +^[ \t]*#[ \t]*version { BEGIN PP; return GLSL_VERS; } > +^[ \t]*#[ \t]*extension { BEGIN PP; return GLSL_EXTENSION; } > {HASH}line{SPCP}{INT}{SPCP}{INT}{SPC}$ { > /* Eat characters until the first digit is > * encountered > diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy > index 25d02fb..831f72a 100644 > --- a/src/glsl/glsl_parser.yy > +++ b/src/glsl/glsl_parser.yy > @@ -106,7 +106,7 @@ > %token INVARIANT > %token LOWP MEDIUMP HIGHP SUPERP PRECISION > > -%token VERSION EXTENSION LINE COLON EOL INTERFACE OUTPUT > +%token GLSL_VERS GLSL_EXTENSION LINE COLON EOL INTERFACE OUTPUT > %token PRAGMA_DEBUG_ON PRAGMA_DEBUG_OFF > %token PRAGMA_OPTIMIZE_ON PRAGMA_OPTIMIZE_OFF > %token PRAGMA_INVARIANT_ALL > @@ -228,7 +228,7 @@ translation_unit: > > version_statement: > /* blank - no #version specified: defaults are already set */ > - | VERSION INTCONSTANT EOL > + | GLSL_VERS INTCONSTANT EOL > { > bool supported = false; > > @@ -296,7 +296,7 @@ any_identifier: > ; > > extension_statement: > - EXTENSION any_identifier COLON any_identifier EOL > + GLSL_EXTENSION any_identifier COLON any_identifier EOL > { > if (!_mesa_glsl_process_extension($2, & @2, $4, & @4, state)) { > YYERROR; > -- > 1.7.3.4 > I'd prefer VERSION to be fully spelled out, and it's probably worth being in a separate commit.
pgpSKjglCg9N4.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev