[Mesa-dev] [RFC PATCH] automake: add support to src/glsl/

Matt Turner mattst88 at gmail.com
Sat Sep 24 18:06:51 PDT 2011


Signed-off-by: Matt Turner <mattst88 at 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 also killed off what looks to be a stray autogen.sh in src/glsl/.

Please give it a test.

Thanks,
Matt

 configure.ac            |   10 ++
 src/glsl/Makefile       |  235 -----------------------------------------------
 src/glsl/Makefile.am    |  146 +++++++++++++++++++++++++++++
 src/glsl/autogen.sh     |   12 ---
 src/glsl/glsl_lexer.ll  |    4 +-
 src/glsl/glsl_parser.yy |    6 +-
 6 files changed, 161 insertions(+), 252 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..fd1082d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,6 +17,13 @@ AC_INIT([Mesa],[mesa_version],
 AC_CONFIG_AUX_DIR([bin])
 AC_CANONICAL_HOST
 
+# Initialize Automake
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
+
+# 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 +2017,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..3368e14
--- /dev/null
+++ b/src/glsl/Makefile.am
@@ -0,0 +1,146 @@
+noinst_LTLIBRARIES = \
+	libralloc.la \
+	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
+
+libralloc_la_SOURCES = ralloc.c
+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
+
+glcpp_glcpp_SOURCES = glcpp/glcpp.c
+glcpp_glcpp_LDADD = libglcpp.la libralloc.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 \
+	libralloc.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 \
+	libralloc.la
+
+glsl_test_SOURCES = \
+	test.cpp \
+	test_optpass.cpp
+glsl_test_LDADD = \
+	libglsl.la \
+	libhash_table.la \
+	libsymbol_table.la \
+	libstandalone_scaffolding.la \
+	libralloc.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



More information about the mesa-dev mailing list