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

Reply via email to