summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon TURNEY <[email protected]>2012-06-28 23:15:48 +0100
committerJon TURNEY <[email protected]>2012-07-13 12:43:41 +0100
commit68e04cc6014bf7a2c9bd0b3b783b4ec12aa2e824 (patch)
tree41ca584f01c57b781d41d703f044f4452ba4e644
parent284325d97b3049e59e64daf784e2b3858f0ffcf5 (diff)
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 <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Tested-by: Matt Turner <[email protected]>
-rw-r--r--Makefile.am6
-rw-r--r--configure.ac2
-rw-r--r--src/glsl/.gitignore3
-rw-r--r--src/glsl/Makefile144
-rw-r--r--src/glsl/Makefile.am106
-rw-r--r--src/glsl/Makefile.sources4
-rw-r--r--src/glsl/glcpp/.gitignore1
-rw-r--r--src/glsl/glcpp/Makefile.am57
-rw-r--r--src/glsl/tests/Makefile.am2
-rw-r--r--src/mesa/drivers/osmesa/Makefile.am2
10 files changed, 176 insertions, 151 deletions
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.