[Mesa-dev] [PATCH 2/9] automake: convert libglsl

Matt Turner mattst88 at gmail.com
Tue Jul 10 15:34:30 PDT 2012


On Tue, Jul 10, 2012 at 10:08 AM, Jon TURNEY
<jon.turney at dronecode.org.uk> wrote:
> v2: Use AM_V_GEN to silence generated code rules. Add BUILT_SOURCES to CLEANFILES
>
> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
> ---
>  configure.ac                        |    2 +
>  src/glsl/.gitignore                 |    1 +
>  src/glsl/Makefile                   |  144 -----------------------------------
>  src/glsl/Makefile.am                |  112 +++++++++++++++++++++++++++
>  src/glsl/glcpp/.gitignore           |    1 +
>  src/glsl/glcpp/Makefile.am          |   33 ++++++++
>  src/glsl/tests/Makefile.am          |    2 +-
>  src/mesa/drivers/osmesa/Makefile.am |    2 +-
>  8 files changed, 151 insertions(+), 146 deletions(-)
>  delete mode 100644 src/glsl/Makefile
>  create mode 100644 src/glsl/Makefile.am
>  create mode 100644 src/glsl/glcpp/Makefile.am
>
> diff --git a/configure.ac b/configure.ac
> index e5ac791..93a8493 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2170,6 +2170,8 @@ AC_CONFIG_FILES([configs/current
>                 src/egl/wayland/wayland-egl/Makefile
>                 src/egl/wayland/wayland-egl/wayland-egl.pc
>                 src/egl/wayland/wayland-drm/Makefile
> +               src/glsl/Makefile
> +               src/glsl/glcpp/Makefile
>                 src/glsl/tests/Makefile
>                 src/glx/Makefile
>                 src/glx/tests/Makefile
> diff --git a/src/glsl/.gitignore b/src/glsl/.gitignore
> index d26839a..e3531cd 100644
> --- a/src/glsl/.gitignore
> +++ b/src/glsl/.gitignore
> @@ -6,3 +6,4 @@ glsl_parser.output
>  builtin_function.cpp
>  builtin_compiler
>  glsl_test
> +/Makefile
> diff --git a/src/glsl/Makefile b/src/glsl/Makefile
> deleted file mode 100644
> index 3cf9fc9..0000000
> --- a/src/glsl/Makefile
> +++ /dev/null
> @@ -1,144 +0,0 @@
> -
> -#src/glsl/pp/Makefile
> -
> -TOP = ../..
> -
> -include $(TOP)/configs/current
> -
> -LIBNAME = glsl
> -
> -GLSL_SRCDIR=.
> -include Makefile.sources
> -
> -GLCPP_SOURCES = \
> -       $(LIBGLCPP_GENERATED_FILES) \
> -       $(LIBGLCPP_FILES) \
> -       ralloc.c \
> -       glcpp/glcpp.c
> -
> -C_SOURCES = \
> -       $(LIBGLCPP_GENERATED_FILES) \
> -       $(LIBGLCPP_FILES) \
> -       $(LIBGLSL_FILES)
> -
> -# common sources for builtin_compiler and libglsl
> -CXX_SOURCES = \
> -       $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \
> -       $(LIBGLSL_CXX_FILES)
> -
> -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_FILES)
> -
> -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)
> -
> -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)
> -
> -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
> -
> -# Remove .o and backup files
> -clean:
> -       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)
> -
> -# Dummy target
> -install:
> -       @echo -n ""
> -
> -##### 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 $@
> -
> -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/glsl/* 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..e724ba0
> --- /dev/null
> +++ b/src/glsl/Makefile.am
> @@ -0,0 +1,112 @@
> +# Copyright © 2012 Jon TURNEY
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +
> +
> +# builtin_compiler is built before libglsl to generate builtin_function.cpp for libglsl.
> +# For this to work, a dummy version of builtin_function.cpp, builtin_stubs.cpp, is used.
> +
> +# Hack to make some of the non-automake variables work.
> +TOP=$(top_builddir)
> +
> +AM_CFLAGS = \
> +       -I$(top_srcdir)/include \
> +       -I$(top_srcdir)/src/mapi \
> +       -I$(top_srcdir)/src/mesa/ \
> +       $(LIBRARY_INCLUDES) \
> +       $(DEFINES) \
> +       $(LIBRARY_DEFINES) \
> +       $(API_DEFINES)
> +
> +AM_CXXFLAGS = $(AM_CFLAGS)
> +
> +GLSL_SRCDIR=$(top_srcdir)/src/glsl
> +include Makefile.sources
> +
> +noinst_LTLIBRARIES = libglslcommon.la libglsl.la
> +noinst_PROGRAMS = glsl_compiler glsl_test builtin_compiler
> +
> +# common sources for builtin_compiler and libglsl
> +libglslcommon_la_SOURCES = \
> +       $(LIBGLCPP_GENERATED_FILES) \
> +       $(LIBGLCPP_FILES) \
> +       $(LIBGLSL_FILES) \
> +       $(BUILTIN_COMPILER_GENERATED_CXX_FILES) \
> +       $(LIBGLSL_CXX_FILES)
> +
> +# common sources for builtin_compiler and glsl_compiler
> +GLSL2_SOURCES = \
> +       $(top_srcdir)/src/mesa/program/hash_table.c \
> +       $(top_srcdir)/src/mesa/program/symbol_table.c \
> +       $(GLSL_COMPILER_CXX_FILES)
> +
> +libglsl_la_SOURCES = \
> +       builtin_function.cpp
> +
> +libglsl_la_LIBADD = libglslcommon.la
> +libglsl_la_LDFLAGS =
> +
> +glsl_compiler_SOURCES = \
> +       $(GLSL2_SOURCES)
> +
> +glsl_compiler_LDADD = libglsl.la
> +
> +glsl_test_SOURCES = \
> +       $(top_srcdir)/src/mesa/program/hash_table.c \
> +       $(top_srcdir)/src/mesa/program/symbol_table.c \
> +       $(GLSL_SRCDIR)/standalone_scaffolding.cpp \
> +       test.cpp \
> +       test_optpass.cpp
> +
> +glsl_test_LDADD = libglsl.la
> +
> +builtin_compiler_SOURCES = \
> +       $(GLSL2_SOURCES) \
> +       builtin_stubs.cpp
> +
> +builtin_compiler_LDADD = libglslcommon.la
> +
> +BUILT_SOURCES = glsl_lexer.cpp glsl_parser.cpp glsl_parser.h builtin_function.cpp \
> +       $(GLSL_SRCDIR)/glcpp/glcpp-lex.c \
> +       $(GLSL_SRCDIR)/glcpp/glcpp-parse.c $(GLSL_SRCDIR)/glcpp/glcpp-parse.h
> +
> +CLEANFILES = $(BUILT_SOURCES)
> +
> +glsl_lexer.cpp: glsl_lexer.ll
> +       $(AM_V_GEN) $(LEX) --nounistd -o$@  $<
> +
> +glsl_parser.cpp: glsl_parser.yy
> +       $(AM_V_GEN) $(YACC) -v -o "$@" -p "_mesa_glsl_" --defines=glsl_parser.h $<
> +
> +$(GLSL_SRCDIR)/glcpp/glcpp-lex.c: $(GLSL_SRCDIR)/glcpp/glcpp-parse.h
> +       cd glcpp ; $(MAKE) $(AM_MAKEFLAGS) glcpp-lex.c
> +
> +$(GLSL_SRCDIR)/glcpp/glcpp-parse.c $(GLSL_SRCDIR)/glcpp/glcpp-parse.h:
> +       cd glcpp ; $(MAKE) $(AM_MAKEFLAGS) glcpp-parse.c

Don't do this. Automake will do all this for us. See
http://cgit.freedesktop.org/~mattst88/mesa/commit/?h=automake&id=cba247c20787ca281f79f4ee78fc5b01ad890726

Same thing for glcpp/Makefile.am.

> +
> +builtin_function.cpp: builtins/profiles/* builtins/ir/* builtins/glsl/* builtins/tools/generate_builtins.py builtins/tools/texture_builtins.py builtin_compiler$(EXEEXT)
> +       $(AM_V_GEN) $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py ./builtin_compiler > builtin_function.cpp || rm -f builtin_function.cpp
> +
> +SUBDIRS = glcpp
> +
> +# Provide compatibility with scripts for the old Mesa build system for
> +# a while by putting a link to the library in the current directory.
> +all-local: libglsl.la
> +       ln -f .libs/libglsl.a .
> diff --git a/src/glsl/glcpp/.gitignore b/src/glsl/glcpp/.gitignore
> index 24a7119..64033e2 100644
> --- a/src/glsl/glcpp/.gitignore
> +++ b/src/glsl/glcpp/.gitignore
> @@ -4,3 +4,4 @@ glcpp-parse.output
>  glcpp-parse.c
>  glcpp-parse.h
>  tests/*.out
> +/Makefile
> diff --git a/src/glsl/glcpp/Makefile.am b/src/glsl/glcpp/Makefile.am
> new file mode 100644
> index 0000000..114c959
> --- /dev/null
> +++ b/src/glsl/glcpp/Makefile.am
> @@ -0,0 +1,33 @@
> +
> +# Hack to make some of the non-automake variables work.
> +TOP=$(top_builddir)
> +
> +GLSL_SRCDIR=$(top_srcdir)/src/glsl
> +include ../Makefile.sources
> +
> +AM_CFLAGS = \
> +       -I$(top_srcdir)/include \
> +       -I$(top_srcdir)/src/mapi \
> +       -I$(top_srcdir)/src/mesa/ \
> +       $(LIBRARY_INCLUDES) \
> +       $(DEFINES) \
> +       $(LIBRARY_DEFINES) \
> +       $(API_DEFINES)
> +
> +noinst_PROGRAMS = glcpp
> +
> +glcpp_SOURCES = \
> +       $(LIBGLCPP_GENERATED_FILES) \
> +       $(LIBGLCPP_FILES) \
> +       ../ralloc.c \
> +       glcpp.c \
> +       $(top_srcdir)/src//mesa/program/hash_table.c

Double / here.

> +
> +BUILT_SOURCES = glcpp-lex.c glcpp-parse.c glcpp-parse.h
> +CLEANFILES = $(BUILT_SOURCES)
> +
> +glcpp-lex.c: glcpp-lex.l
> +       $(AM_V_GEN) $(LEX) --nounistd -o$@  $<
> +
> +glcpp-parse.c: glcpp-parse.y
> +       $(AM_V_GEN) $(YACC) -v -o "$@" --defines=glcpp-parse.h $<
> diff --git a/src/glsl/tests/Makefile.am b/src/glsl/tests/Makefile.am
> index d2facba..4829fb2 100644
> --- a/src/glsl/tests/Makefile.am
> +++ b/src/glsl/tests/Makefile.am
> @@ -27,7 +27,7 @@ uniform_initializer_test_SOURCES =            \
>
>  uniform_initializer_test_LDADD =               \
>         $(top_builddir)/src/gtest/libgtest.la   \
> -       $(top_builddir)/src/glsl/libglsl.a      \
> +       $(top_builddir)/src/glsl/libglsl.la     \
>         $(top_builddir)/src/mesa/libmesa.a      \
>         -lpthread
>
> diff --git a/src/mesa/drivers/osmesa/Makefile.am b/src/mesa/drivers/osmesa/Makefile.am
> index 3cf3005..2c4ce2c 100644
> --- a/src/mesa/drivers/osmesa/Makefile.am
> +++ b/src/mesa/drivers/osmesa/Makefile.am
> @@ -41,7 +41,7 @@ lib at OSMESA_LIB@_la_LDFLAGS = -module -version-number @OSMESA_VERSION@ -shared
>  lib at OSMESA_LIB@_la_LIBADD = \
>         $(top_builddir)/src/mesa/libmesa.a \
>         $(top_builddir)/src/mapi/glapi/libglapi.a \
> -       $(top_builddir)/src/glsl/libglsl.a
> +       $(top_builddir)/src/glsl/libglsl.la
>
>  # Provide compatibility with scripts for the old Mesa build system for
>  # a while by putting a link to the driver into /lib of the build tree.
> --
> 1.7.9


More information about the mesa-dev mailing list