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.
v2: - hoisted ralloc up into libglcpp.la so it doesn't need to be included anywhere else. - set AC_PREREQ([2.60]) - removed AM_MAINTAINER_MODE - added YACC = @BISON@ and LEX = @FLEX@ to src/glsl/Makefile.am to ensure they're defined properly by autoconf - added BUILT_SOURCES for the generated files Matt
From 96c79cca0291cd06a7a0aa8c8e1d043595d77587 Mon Sep 17 00:00:00 2001 From: Matt Turner <matts...@gmail.com> Date: Sun, 25 Sep 2011 15:32:29 -0400 Subject: [PATCH] automake: add support to src/glsl/ Signed-off-by: Matt Turner <matts...@gmail.com> --- configure.ac | 11 ++- src/glsl/Makefile | 235 ----------------------------------------------- src/glsl/Makefile.am | 152 ++++++++++++++++++++++++++++++ src/glsl/autogen.sh | 12 --- src/glsl/glsl_lexer.ll | 4 +- src/glsl/glsl_parser.yy | 6 +- 6 files changed, 167 insertions(+), 253 deletions(-) delete mode 100644 src/glsl/Makefile create mode 100644 src/glsl/Makefile.am delete mode 100755 src/glsl/autogen.sh diff --git a/configure.ac b/configure.ac index b2606bf..6b5d5c2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to create configure. -AC_PREREQ([2.59]) +AC_PREREQ([2.60]) dnl Versioning - scrape the version from configs/default m4_define([mesa_version], @@ -17,6 +17,12 @@ AC_INIT([Mesa],[mesa_version], AC_CONFIG_AUX_DIR([bin]) AC_CANONICAL_HOST +# Initialize Automake +AM_INIT_AUTOMAKE([foreign dist-bzip2]) + +# Initialize libtool +AC_PROG_LIBTOOL + dnl Save user CFLAGS and CXXFLAGS so one can override the default ones USER_CFLAGS="$CFLAGS" USER_CXXFLAGS="$CXXFLAGS" @@ -2010,3 +2016,6 @@ echo " PYTHON2: $PYTHON2" echo "" echo " Run '${MAKE-make}' to build Mesa" echo "" + +AC_CONFIG_FILES([src/glsl/Makefile]) +AC_OUTPUT diff --git a/src/glsl/Makefile b/src/glsl/Makefile deleted file mode 100644 index b2efb2a..0000000 --- a/src/glsl/Makefile +++ /dev/null @@ -1,235 +0,0 @@ - -#src/glsl/pp/Makefile - -TOP = ../.. - -include $(TOP)/configs/current - -LIBNAME = glsl - -LIBGLCPP_SOURCES = \ - glcpp/glcpp-lex.c \ - glcpp/glcpp-parse.c \ - glcpp/pp.c - -GLCPP_SOURCES = \ - $(LIBGLCPP_SOURCES) \ - ralloc.c \ - glcpp/glcpp.c - -C_SOURCES = \ - strtod.c \ - ralloc.c \ - $(LIBGLCPP_SOURCES) - -CXX_SOURCES = \ - 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 - -LIBS = \ - $(TOP)/src/glsl/libglsl.a - -APPS = glsl_compiler glsl_test glcpp/glcpp - -GLSL2_C_SOURCES = \ - ../mesa/program/hash_table.c \ - ../mesa/program/symbol_table.c -GLSL2_CXX_SOURCES = \ - main.cpp \ - standalone_scaffolding.cpp - -GLSL2_OBJECTS = \ - $(GLSL2_C_SOURCES:.c=.o) \ - $(GLSL2_CXX_SOURCES:.cpp=.o) - -TEST_C_SOURCES = \ - ../mesa/program/hash_table.c \ - ../mesa/program/symbol_table.c - -TEST_CXX_SOURCES = \ - standalone_scaffolding.cpp \ - test.cpp \ - test_optpass.cpp - -TEST_OBJECTS = \ - $(TEST_C_SOURCES:.c=.o) \ - $(TEST_CXX_SOURCES:.cpp=.o) - -### Basic defines ### - -DEFINES += \ - $(LIBRARY_DEFINES) \ - $(API_DEFINES) - -GLCPP_OBJECTS = \ - $(GLCPP_SOURCES:.c=.o) \ - ../mesa/program/hash_table.o - -OBJECTS = \ - $(C_SOURCES:.c=.o) \ - $(CXX_SOURCES:.cpp=.o) - -DRICORE_OBJ_DIR = obj-visible -OBJECTS_DRICORE = $(addprefix $(DRICORE_OBJ_DIR)/,$(OBJECTS)) - -INCLUDES = \ - -I. \ - -I../mesa \ - -I../mapi \ - -I../../include \ - $(LIBRARY_INCLUDES) - -ALL_SOURCES = \ - $(C_SOURCES) \ - $(CXX_SOURCES) \ - $(GLSL2_CXX_SOURCES) \ - $(GLSL2_C_SOURCES) \ - $(TEST_CXX_SOURCES) \ - $(TEST_C_SOURCES) - -##### TARGETS ##### - -default: depend lib$(LIBNAME).a $(APPS) $(DRICORE_GLSL_LIBS) - -$(TOP)/$(LIB_DIR)/libglsl.so: $(OBJECTS_DRICORE) builtin_function.o Makefile $(TOP)/src/glsl/Makefile.template - $(MKLIB) -o $@ -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ - -cplusplus -noprefix \ - -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/$@.dylib \ - $(OBJECTS_DRICORE) builtin_function.o - -lib$(LIBNAME).a: $(OBJECTS) builtin_function.o Makefile $(TOP)/src/glsl/Makefile.template - $(MKLIB) -cplusplus -o $(LIBNAME) -static $(OBJECTS) builtin_function.o - -depend: $(ALL_SOURCES) Makefile - rm -f depend - touch depend - $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(ALL_SOURCES) 2> /dev/null - $(MKDEP) $(MKDEP_OPTIONS) -a -p $(DRICORE_OBJ_DIR)/ $(INCLUDES) $(ALL_SOURCES) 2> /dev/null - -# Remove .o and backup files -clean: clean-dricore - rm -f $(GLCPP_OBJECTS) $(GLSL2_OBJECTS) $(TEST_OBJECTS) $(OBJECTS) lib$(LIBNAME).a depend depend.bak builtin_function.cpp builtin_function.o builtin_stubs.o builtin_compiler - -rm -f $(APPS) - -clean-dricore: - -rm -f $(OBJECTS_DRICORE) $(TOP)/$(LIB_DIR)/libglsl.so libglsl.so - -ifneq (,$(DRICORE_GLSL_LIBS)) -DRICORE_INSTALL_TARGET = install-dricore -endif - -# Dummy target -install: $(DRICORE_INSTALL_TARGET) - @echo -n "" - -install-dricore: default - $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) - $(INSTALL) -m 755 $(DRICORE_GLSL_LIBS) $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) - -##### RULES ##### - -glsl_compiler: $(GLSL2_OBJECTS) libglsl.a - $(APP_CXX) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(GLSL2_OBJECTS) $(LIBS) -o $@ - -glsl_test: $(TEST_OBJECTS) libglsl.a - $(APP_CXX) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(TEST_OBJECTS) $(LIBS) -o $@ - -glcpp: glcpp/glcpp -glcpp/glcpp: $(GLCPP_OBJECTS) - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(GLCPP_OBJECTS) -o $@ - -.cpp.o: - $(CXX) -c $(INCLUDES) $(CXXFLAGS) $(DEFINES) $< -o $@ - -.c.o: - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ - -$(DRICORE_OBJ_DIR)/%.o : %.cpp - @mkdir -p $(dir $@) - $(CXX) -c $(INCLUDES) $(DRI_CXXFLAGS) $(DEFINES) $< -o $@ - -$(DRICORE_OBJ_DIR)/%.o : %.c - @mkdir -p $(dir $@) - $(CC) -c $(INCLUDES) $(DRI_CFLAGS) $(DEFINES) $< -o $@ - -glsl_lexer.cpp: glsl_lexer.ll - $(FLEX) --nounistd -o$@ $< - -glsl_parser.cpp: glsl_parser.yy - $(BISON) -v -o "$@" -p "_mesa_glsl_" --defines=glsl_parser.h $< - -glcpp/glcpp-lex.c: glcpp/glcpp-lex.l - $(FLEX) --nounistd -o$@ $< - -glcpp/glcpp-parse.c: glcpp/glcpp-parse.y - $(BISON) -v -o "$@" --defines=glcpp/glcpp-parse.h $< - -builtin_compiler: $(GLSL2_OBJECTS) $(OBJECTS) builtin_stubs.o - $(APP_CXX) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(GLSL2_OBJECTS) builtin_stubs.o -o $@ - -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 - --include depend 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 diff --git a/src/glsl/autogen.sh b/src/glsl/autogen.sh deleted file mode 100755 index 904cd67..0000000 --- a/src/glsl/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir - -autoreconf -v --install || exit 1 -cd $ORIGDIR || exit $? - -$srcdir/configure --enable-maintainer-mode "$@" 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
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev