From 68e04cc6014bf7a2c9bd0b3b783b4ec12aa2e824 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Thu, 28 Jun 2012 23:15:48 +0100 Subject: [PATCH] automake: convert libglsl v2: Use AM_V_GEN to silence generated code rules. Add BUILT_SOURCES to CLEANFILES v3: - Fix an accidental // in a path - Use automake make rules for lex/yacc rather than writing our own - Update .gitignore appropriately - Build a libglcpp convenience library rather than awkwardly including the files in libglsl and delegating the generation - Remove libglsl.a compatibility link on clean v4: - Automake's rules for lex/yacc make .cc if source is .ll or .yy, and apparently we must use those extensions "because of scons", so update everywhere glsl_parser.cpp -> glsl_parser.cc and glsl_lexer.cpp -> glsl_lexer.cc. This fixes 'make tarballs' and building with dricore enabled. Signed-off-by: Jon TURNEY Reviewed-by: Eric Anholt Tested-by: Matt Turner --- Makefile.am | 6 +- configure.ac | 2 + src/glsl/.gitignore | 3 + src/glsl/Makefile | 144 ---------------------------- src/glsl/Makefile.am | 106 ++++++++++++++++++++ src/glsl/Makefile.sources | 4 +- src/glsl/glcpp/.gitignore | 1 + src/glsl/glcpp/Makefile.am | 57 +++++++++++ src/glsl/tests/Makefile.am | 2 +- src/mesa/drivers/osmesa/Makefile.am | 2 +- 10 files changed, 176 insertions(+), 151 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/Makefile.am b/Makefile.am index 8210fccd44b..b2c810aef13 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,9 +58,9 @@ PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION) EXTRA_FILES = \ aclocal.m4 \ configure \ - src/glsl/glsl_parser.cpp \ + src/glsl/glsl_parser.cc \ src/glsl/glsl_parser.h \ - src/glsl/glsl_lexer.cpp \ + src/glsl/glsl_lexer.cc \ src/glsl/glcpp/glcpp-lex.c \ src/glsl/glcpp/glcpp-parse.c \ src/glsl/glcpp/glcpp-parse.h \ @@ -80,7 +80,7 @@ IGNORE_FILES = \ parsers: configure -@touch $(top_builddir)/configs/current - $(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp + $(MAKE) -C src/glsl glsl_parser.cc glsl_parser.h glsl_lexer.cc $(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h $(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h diff --git a/configure.ac b/configure.ac index 5390868a7da..1f94701d8d9 100644 --- a/configure.ac +++ b/configure.ac @@ -2151,6 +2151,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 d26839a3e3e..c9a9f30f034 100644 --- a/src/glsl/.gitignore +++ b/src/glsl/.gitignore @@ -1,8 +1,11 @@ glsl_compiler +glsl_lexer.cc glsl_lexer.cpp +glsl_parser.cc glsl_parser.cpp glsl_parser.h 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 3cf9fc962e2..00000000000 --- 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 00000000000..2b9ca2cbaf9 --- /dev/null +++ b/src/glsl/Makefile.am @@ -0,0 +1,106 @@ +# 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) + +AM_YFLAGS = -v -d -p "_mesa_glsl_" +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c + +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 = \ + glsl_lexer.ll \ + glsl_parser.yy \ + $(LIBGLSL_FILES) \ + $(LIBGLSL_CXX_FILES) + +libglslcommon_la_LIBADD = glcpp/libglcpp.la + +# 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.cc glsl_parser.cc glsl_parser.h builtin_function.cpp +CLEANFILES = $(BUILT_SOURCES) + +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 + +glcpp/libglcpp.la: + cd glcpp ; $(MAKE) $(AM_MAKEFLAGS) + +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 . + +CLEANFILES += libglsl.a diff --git a/src/glsl/Makefile.sources b/src/glsl/Makefile.sources index 0425fa33ea5..f2743f75067 100644 --- a/src/glsl/Makefile.sources +++ b/src/glsl/Makefile.sources @@ -101,8 +101,8 @@ BUILTIN_COMPILER_CXX_FILES = \ $(GLSL_SRCDIR)/builtin_stubs.cpp BUILTIN_COMPILER_GENERATED_CXX_FILES = \ - $(GLSL_SRCDIR)/glsl_lexer.cpp \ - $(GLSL_SRCDIR)/glsl_parser.cpp + $(GLSL_SRCDIR)/glsl_lexer.cc \ + $(GLSL_SRCDIR)/glsl_parser.cc # libglsl generated sources LIBGLSL_GENERATED_CXX_FILES = \ diff --git a/src/glsl/glcpp/.gitignore b/src/glsl/glcpp/.gitignore index 24a7119caa4..64033e2aacb 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 00000000000..e7d5d2ca346 --- /dev/null +++ b/src/glsl/glcpp/Makefile.am @@ -0,0 +1,57 @@ + +# 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. + +# 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) + +AM_YFLAGS = -v -d +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c + +noinst_LTLIBRARIES = libglcpp.la +noinst_PROGRAMS = glcpp + +libglcpp_la_SOURCES = \ + glcpp-lex.l \ + glcpp-parse.y \ + $(LIBGLCPP_FILES) + +glcpp_SOURCES = \ + ../ralloc.c \ + $(top_srcdir)/src/mesa/program/hash_table.c \ + glcpp.c + +glcpp_LDADD = libglcpp.la + +BUILT_SOURCES = glcpp-lex.c glcpp-parse.c glcpp-parse.h +CLEANFILES = $(BUILT_SOURCES) diff --git a/src/glsl/tests/Makefile.am b/src/glsl/tests/Makefile.am index d2facbaabb8..4829fb2fe0d 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 3cf3005071a..2c4ce2c33d2 100644 --- a/src/mesa/drivers/osmesa/Makefile.am +++ b/src/mesa/drivers/osmesa/Makefile.am @@ -41,7 +41,7 @@ lib@OSMESA_LIB@_la_LDFLAGS = -module -version-number @OSMESA_VERSION@ -shared lib@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. -- 2.30.2