[Mesa-dev] [PATCH 5/5] automake: add src/glsl and src/glsl/glcpp

Kenneth Graunke kenneth at whitecape.org
Fri Dec 23 17:37:22 PST 2011


On 12/23/2011 04:21 PM, Matt Turner wrote:
> The glsl_{lexer.lpp,parser.ypp} symlinks allow automake to figure out
> dependency information, since .ll generates a .cc file, and .lpp
> generates a .cpp. They were originally named .lpp/.ypp, but were changed
> to work around scons.
> ---
> 
> This isn't free from breakage, but it is good enough to build 
>  --with-dri-drivers=swrast,i915,i965
>  --enable-shared-dricore
>  --with-gallium-drivers=swrast,r300,r600
> 
> (non-shared dricore fails)

I think that's fine.  I don't use shared-dricore because I got random
failures with it, but I'm pretty sure those were all related to build
system mess.  IMHO there's little value in making this an option if the
build system actually works.

> I think this is a good start to automaking Mesa.
> 
>  configs/autoconf.in              |    4 +-
>  configure.ac                     |   30 +++++--
>  src/glsl/Makefile                |  172 --------------------------------------

This begs the question: Can we remove the old, static Makefile build
system targets?  At this point, I think basically everybody is using
Autoconf, SCons, or the Android build system.

I see several compelling reasons to do so:
1. We have four build systems.  Need I say more :)

2. Two 'make'-based build systems is confusing to new contributors.

   Look at the Haiku patches; the first patch added static Makefile
   targets, while the second used autoconf.

   I tried to help a friend build Mesa for the first time the other
   day, and he ran "./configure --with-dri-driver=..." by mistake
   rather than --with-dri-driver*s*, so configure failed.  Yet, there
   were still Makefiles, so 'make' ran and looked like it was building
   stuff, but finally resulted in a bizarre link error.

   SCons vs Automake is one thing; they're clearly separate.  But two
   'make' based build systems is confusing and hides failures.

2. Less maintenance burden.

   I doubt most people are testing the old static build targets nor
   adding new features to them.  For example, I don't think they have
   an equivalent to --enable-texture-float, so no GL 3.0 for you.

3. It allows us to incrementally clean up the build system.

   Matt's patch here is a great start; if automake were the only make,
   we could just accept patches like this that incrementally clean up
   one corner of the build system without having to overhaul the whole
   thing.  Which means it might actually get accomplished.

Does anyone out there still use the non-autoconf Makefile targets?  I
seem to recall that Brian did, and maybe some OSMesa users, but I'm not
sure who else.  Brian, would you be opposed to removing them?

>  src/glsl/Makefile.am             |  126 ++++++++++++++++++++++++++++
>  src/glsl/glcpp/Makefile.am       |   23 +++++
>  src/glsl/glsl_lexer.lpp          |    1 +
>  src/glsl/glsl_parser.ypp         |    1 +
>  src/mesa/drivers/osmesa/Makefile |    2 +-
>  src/mesa/sources.mak             |    2 +-
>  9 files changed, 177 insertions(+), 184 deletions(-)
>  delete mode 100644 src/glsl/Makefile
>  create mode 100644 src/glsl/Makefile.am
>  create mode 100644 src/glsl/glcpp/Makefile.am
>  create mode 120000 src/glsl/glsl_lexer.lpp
>  create mode 120000 src/glsl/glsl_parser.ypp
> 
> diff --git a/configs/autoconf.in b/configs/autoconf.in
> index 9ea7588..0b03afe 100644
> --- a/configs/autoconf.in
> +++ b/configs/autoconf.in
> @@ -63,8 +63,8 @@ PYTHON2 = @PYTHON2@
>  PYTHON_FLAGS = -t -O -O
>  
>  # Flex and Bison for GLSL compiler
> -FLEX = @FLEX@
> -BISON = @BISON@
> +FLEX = @LEX@
> +BISON = @YACC@

Question about this: will this still require Flex and Bison, or accept
any Lex and Yacc?  The GLSL compiler actually relies upon Flex/Bison
extensions to pass line locations and other things, so it won't work
with ordinary lex/yacc.

>  # Library names (base name)
>  GL_LIB = @GL_LIB@
> diff --git a/configure.ac b/configure.ac
> index 0d75353..7aea0b5 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -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"
> @@ -44,11 +50,14 @@ if test "x$MKDEP" = "x"; then
>      AC_MSG_ERROR([makedepend is required to build Mesa])
>  fi
>  
> -AC_PATH_PROG([FLEX], [flex])
> -test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
> -
> -AC_PATH_PROG([BISON], [bison])
> -test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
> +AC_PROG_YACC
> +AC_PATH_PROG([YACC_INST], $YACC)
> +if test ! -f "$srcdir/gram.c"; then
> +    if test -z "$YACC_INST"; then
> +        AC_MSG_ERROR([yacc not found - unable to compile gram.y])
> +    fi
> +fi

Isn't AC_PROG_YACC a strong enough guarantee?  I'm a little confused by
the asymmetry between the LEX and YACC checks here.

> +AC_PROG_LEX
>  
>  dnl Our fallback install-sh is a symlink to minstall. Use the existing
>  dnl configuration in that case.
> @@ -996,10 +1005,10 @@ if test "x$enable_dri" = xyes ; then
>        	 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling.  Disabling shared dricore])
>  	 enable_dricore=no
>        else
> -	 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
> +	 DRICORE_GLSL_LIBS='$(TOP)/src/glsl/libglsl.la'
>  	 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
> -	 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
> -      	 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
> +	 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) $(TOP)/src/glsl/.libs/libglsl.so'
> +      	 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore $(TOP)/src/glsl/.libs/libglsl.so'
>        	 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
>        	 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
>        	 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
> @@ -1961,3 +1970,8 @@ echo "        PYTHON2:         $PYTHON2"
>  echo ""
>  echo "        Run '${MAKE-make}' to build Mesa"
>  echo ""
> +
> +AC_CONFIG_FILES([
> +	src/glsl/Makefile
> +	src/glsl/glcpp/Makefile])
> +AC_OUTPUT
> diff --git a/src/glsl/Makefile b/src/glsl/Makefile
> deleted file mode 100644
> index d9ecbc8..0000000
> --- a/src/glsl/Makefile
> +++ /dev/null
> @@ -1,172 +0,0 @@
> -
> -#src/glsl/pp/Makefile
> -
> -TOP = ../..
> -
> -include $(TOP)/configs/current
> -
> -LIBNAME = glsl
> -
> -include Makefile.sources
> -
> -GLCPP_SOURCES = \
> -	$(LIBGLCPP_GENERATED_SOURCES) \
> -	$(LIBGLCPP_SOURCES) \
> -	ralloc.c \
> -	glcpp/glcpp.c
> -
> -C_SOURCES = \
> -	$(LIBGLCPP_GENERATED_SOURCES) \
> -	$(LIBGLCPP_SOURCES) \
> -	$(LIBGLSL_SOURCES)
> -
> -# common sources for builtin_compiler and libglsl
> -CXX_SOURCES = \
> -	$(BUILTIN_COMPILER_GENERATED_CXX_SOURCES) \
> -	$(LIBGLSL_CXX_SOURCES)
> -
> -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 = \
> -	$(GLSL_COMPILER_CXX_SOURCES)
> -
> -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..2f022ef
> --- /dev/null
> +++ b/src/glsl/Makefile.am
> @@ -0,0 +1,126 @@
> +SUBDIRS= glcpp
> +
> +noinst_LTLIBRARIES = \
> +	libhash_table.la \
> +	libstandalone_scaffolding.la \
> +	libsymbol_table.la \
> +	libmain.la \
> +	libglslcore.la
> +lib_LTLIBRARIES = libglsl.la
> +noinst_PROGRAMS = builtin_compiler glsl_test
> +bin_PROGRAMS = glsl_compiler
> +
> +INCLUDES = \
> +        -I. \
> +	-I../mesa \
> +	-I../mapi \
> +	-I$(top_srcdir)/include
> +
> +BUILT_SOURCES = glsl_parser.h
> +AM_YFLAGS = -d -p "_mesa_glsl_"
> +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).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
> +
> +libglslcore_la_SOURCES = \
> +	strtod.c \
> +	ast_expr.cpp \
> +	ast_function.cpp \
> +	ast_to_hir.cpp \
> +	ast_type.cpp \
> +	builtin_variables.cpp \
> +	glsl_lexer.lpp \
> +	glsl_parser.ypp \
> +	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_refcount.cpp \
> +	linker.cpp \
> +	link_functions.cpp \
> +	link_uniforms.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 = glcpp/libglcpp.la

Lately we've been trying to put lists of source files in
Makefile.sources so we can share them with the Android.mk files.

> +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
> +
> +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/glcpp/Makefile.am b/src/glsl/glcpp/Makefile.am
> new file mode 100644
> index 0000000..4f66dc6
> --- /dev/null
> +++ b/src/glsl/glcpp/Makefile.am
> @@ -0,0 +1,23 @@
> +noinst_LTLIBRARIES = libglcpp.la libhash_table.la
> +noinst_PROGRAMS = glcpp
> +
> +INCLUDES = \
> +        -I. \
> +	-I../../mesa \
> +	-I../../mapi \
> +	-I$(top_srcdir)/include
> +
> +BUILT_SOURCES = glcpp-parse.h
> +AM_YFLAGS = -d
> +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c
> +
> +libhash_table_la_SOURCES = ../../mesa/program/hash_table.c
> +
> +libglcpp_la_SOURCES = \
> +	glcpp-lex.l \
> +	glcpp-parse.y \
> +	pp.c \
> +	../ralloc.c
> +
> +glcpp_SOURCES = glcpp.c
> +glcpp_LDADD = libglcpp.la libhash_table.la
> diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp
> new file mode 120000
> index 0000000..d897de3
> --- /dev/null
> +++ b/src/glsl/glsl_lexer.lpp
> @@ -0,0 +1 @@
> +glsl_lexer.ll
> \ No newline at end of file
> diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp
> new file mode 120000
> index 0000000..e8171ff
> --- /dev/null
> +++ b/src/glsl/glsl_parser.ypp
> @@ -0,0 +1 @@
> +glsl_parser.yy
> \ No newline at end of file
> diff --git a/src/mesa/drivers/osmesa/Makefile b/src/mesa/drivers/osmesa/Makefile
> index 39ab09a..b2315c7 100644
> --- a/src/mesa/drivers/osmesa/Makefile
> +++ b/src/mesa/drivers/osmesa/Makefile
> @@ -23,7 +23,7 @@ INCLUDE_DIRS = \
>  CORE_MESA = \
>  	$(TOP)/src/mesa/libmesa.a \
>  	$(TOP)/src/mapi/glapi/libglapi.a \
> -	$(TOP)/src/glsl/libglsl.a
> +	$(TOP)/src/glsl/libglsl.la
>  
>  .c.o:
>  	$(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
> diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
> index 09cdd26..125ea46 100644
> --- a/src/mesa/sources.mak
> +++ b/src/mesa/sources.mak
> @@ -371,7 +371,7 @@ COMMON_DRIVER_OBJECTS = $(COMMON_DRIVER_SOURCES:.c=.o)
>  ### Other archives/libraries
>  
>  GLSL_LIBS = \
> -	$(TOP)/src/glsl/libglsl.a
> +	$(TOP)/src/glsl/libglsl.la
>  
>  
>  ### Include directories

Matt, this looks like a great start.  Thanks so much for working on
this.  I hope we can accept it soon.


More information about the mesa-dev mailing list