Re: [Mesa-dev] [PATCH 4/9] automake: convert libmesa and libmesagallium

2012-07-10 Thread Jon TURNEY
On 09/07/2012 17:31, Eric Anholt wrote:
 Jon TURNEY jon.tur...@dronecode.org.uk writes:
 diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
 index bada760..08beaa6 100644
 --- a/src/mesa/Makefile.am
 +++ b/src/mesa/Makefile.am
 
 +libmesa_la_SOURCES = \
 +$(MESA_FILES) \
 +$(MESA_CXX_FILES) \
 +$(MESA_ASM_FILES_FOR_ARCH)
 +
 +libmesa_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
 +libmesa_la_LDFLAGS = -static
 
 Doesn't this -static result in relocations for static libs getting
 built, which would then be a problem for the linking into shared
 libraries later?  I don't really know this stuff well, but a -static in
 the middle of a shared lib build seems strange.
 
 The helper lib for the asm code in libdricore built a .a file without
 -static being specified.

Yes, this is entirely wrong.  I think I added the '-static' when reading
'mklib -static' and never came back to change it to a convenience library.

 Also, with this commit, did you test that git_sha1 depencies were
 working correctly and commit --amending would produce a new sha1 in your
 drivers?

This appears to work for me.

I can see I have removed a dependency of depend: on git_sha1.h, but
recomputing the dependencies every time that file changes seems a bit of
overkill to me.  The computed dependencies still include git_sha1.h and things
which depend on it are rebuilt when it changes.
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 4/9] automake: convert libmesa and libmesagallium

2012-07-10 Thread Jon TURNEY
* configure substitutions are not allowed in _SOURCES variables in automake, 
so instead of
MESA_ASM_FILES, use some AM_CONDITIONALS to choose which architecture's asm 
sources are used
in libmesa_la_SOURCES. (Can't remove MESA_ASM_FILES autoconf variable as it's 
still used in
sources.mak)

* Update to link with the .la file in other Makefile.am files, and make a link 
to the
.a file for the convenience of other Makefiles which have not yet been 
converted to automake

v2: Remove stray -static from LDFLAGS

Signed-off-by: Jon TURNEY jon.tur...@dronecode.org.uk
---
 src/glsl/tests/Makefile.am  |2 +-
 src/mesa/Makefile.am|   45 +--
 src/mesa/Makefile.old   |   57 +--
 src/mesa/drivers/osmesa/Makefile.am |2 +-
 src/mesa/drivers/x11/Makefile.am|2 +-
 src/mesa/main/tests/Makefile.am |2 +-
 6 files changed, 46 insertions(+), 64 deletions(-)

diff --git a/src/glsl/tests/Makefile.am b/src/glsl/tests/Makefile.am
index 4829fb2..33e634d 100644
--- a/src/glsl/tests/Makefile.am
+++ b/src/glsl/tests/Makefile.am
@@ -28,7 +28,7 @@ uniform_initializer_test_SOURCES =\
 uniform_initializer_test_LDADD =   \
$(top_builddir)/src/gtest/libgtest.la   \
$(top_builddir)/src/glsl/libglsl.la \
-   $(top_builddir)/src/mesa/libmesa.a  \
+   $(top_builddir)/src/mesa/libmesa.la \
-lpthread
 
 ralloc_test_SOURCES = ralloc_test.cpp $(top_builddir)/src/glsl/ralloc.c
diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
index bada760..54ee253 100644
--- a/src/mesa/Makefile.am
+++ b/src/mesa/Makefile.am
@@ -93,14 +93,51 @@ program/lex.yy.c: program/program_lexer.l
mkdir -p program
$(LEX) --never-interactive --outfile=$@ $
 
-all-local:
-   $(MAKE) -f $(srcdir)/Makefile.old
+noinst_LTLIBRARIES = libmesa.la libmesagallium.la
+
+SRCDIR = $(top_srcdir)/src/mesa
+include sources.mak
+
+AM_CFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) $(LLVM_CFLAGS) $(CFLAGS)
+AM_CXXFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) $(LLVM_CFLAGS) 
$(CXXFLAGS)
+
+# cannot just add $(MESA_ASM_FILES) to libmesa_la_SOURCES as it contains a 
configure substitution
+MESA_ASM_FILES_FOR_ARCH =
+
+if HAVE_X86_ASM
+MESA_ASM_FILES_FOR_ARCH += $(X86_FILES)
+endif
+if HAVE_X86_64_ASM
+MESA_ASM_FILES_FOR_ARCH += $(X86_64_FILES)
+endif
+if HAVE_SPARC_ASM
+MESA_ASM_FILES_FOR_ARCH += $(SPARC_FILES)
+endif
+
+libmesa_la_SOURCES = \
+   $(MESA_FILES) \
+   $(MESA_CXX_FILES) \
+$(MESA_ASM_FILES_FOR_ARCH)
+
+libmesa_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
+libmesa_la_LDFLAGS =
+
+libmesagallium_la_SOURCES = \
+   $(MESA_GALLIUM_FILES) \
+   $(MESA_GALLIUM_CXX_FILES) \
+$(MESA_ASM_FILES_FOR_ARCH)
+
+libmesagallium_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
+libmesagallium_la_LDFLAGS =
 
 install-exec-local:
$(MAKE) -f $(srcdir)/Makefile.old install
 
-clean-local:
-   $(MAKE) -f $(srcdir)/Makefile.old clean
+# 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: libmesa.la libmesagallium.la
+   ln -f .libs/libmesa.a .
+   ln -f .libs/libmesagallium.a .
 
 pkgconfigdir = $(libdir)/pkgconfig
 
diff --git a/src/mesa/Makefile.old b/src/mesa/Makefile.old
index 4ea70d4..3266a5d 100644
--- a/src/mesa/Makefile.old
+++ b/src/mesa/Makefile.old
@@ -3,58 +3,10 @@
 TOP = ../..
 include $(TOP)/configs/current
 
-MESA_LIBS := libmesa.a libmesagallium.a
-DEPENDS := depend
-
 SRCDIR = .
 include sources.mak
 
-# define preprocessor flags
-MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES)
-
-# append include dirs
-MESA_CPPFLAGS += $(INCLUDE_DIRS)
-
-# tidy compiler flags
-CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
-CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS))
-
-# LLVM is needed for the state tracker
-MESA_CFLAGS := $(LLVM_CFLAGS) $(CFLAGS)
-MESA_CXXFLAGS := $(LLVM_CFLAGS) $(CXXFLAGS)
-
-%.o: %.c
-   $(CC) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CFLAGS)
-
-%.o: %.cpp
-   $(CXX) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CXXFLAGS)
-
-%.o: %.S
-   $(CC) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CFLAGS)
-
-# Default: build dependencies, then asm_subdirs, GLSL built-in lib,
-# then convenience libs (.a) and finally the device drivers:
-default: $(DEPENDS) $(MESA_LIBS)
-
-##
-# Helper libraries used by many drivers:
-
-# Make archive of core mesa object files
-libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS)
-   @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS)
-
-# Make archive of subset of core mesa object files for gallium
-libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
-   @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
-
-##
-# Dependency generation
-
-depend: $(ALL_FILES) 

[Mesa-dev] [PATCH 4/9] automake: convert libmesa and libmesagallium

2012-07-09 Thread Jon TURNEY
Signed-off-by: Jon TURNEY jon.tur...@dronecode.org.uk
---
 src/glsl/tests/Makefile.am  |2 +-
 src/mesa/Makefile.am|   45 +--
 src/mesa/Makefile.old   |   57 +--
 src/mesa/drivers/osmesa/Makefile.am |2 +-
 src/mesa/drivers/x11/Makefile.am|2 +-
 src/mesa/main/tests/Makefile.am |2 +-
 6 files changed, 46 insertions(+), 64 deletions(-)

diff --git a/src/glsl/tests/Makefile.am b/src/glsl/tests/Makefile.am
index 4829fb2..33e634d 100644
--- a/src/glsl/tests/Makefile.am
+++ b/src/glsl/tests/Makefile.am
@@ -28,7 +28,7 @@ uniform_initializer_test_SOURCES =\
 uniform_initializer_test_LDADD =   \
$(top_builddir)/src/gtest/libgtest.la   \
$(top_builddir)/src/glsl/libglsl.la \
-   $(top_builddir)/src/mesa/libmesa.a  \
+   $(top_builddir)/src/mesa/libmesa.la \
-lpthread
 
 ralloc_test_SOURCES = ralloc_test.cpp $(top_builddir)/src/glsl/ralloc.c
diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
index bada760..08beaa6 100644
--- a/src/mesa/Makefile.am
+++ b/src/mesa/Makefile.am
@@ -93,14 +93,51 @@ program/lex.yy.c: program/program_lexer.l
mkdir -p program
$(LEX) --never-interactive --outfile=$@ $
 
-all-local:
-   $(MAKE) -f $(srcdir)/Makefile.old
+noinst_LTLIBRARIES = libmesa.la libmesagallium.la
+
+SRCDIR = $(top_srcdir)/src/mesa
+include sources.mak
+
+AM_CFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) $(LLVM_CFLAGS) $(CFLAGS)
+AM_CXXFLAGS = $(API_DEFINES) $(DEFINES) $(INCLUDE_DIRS) $(LLVM_CFLAGS) 
$(CXXFLAGS)
+
+# cannot just add $(MESA_ASM_FILES) to libmesa_la_SOURCES as it contains a 
configure substitution
+MESA_ASM_FILES_FOR_ARCH =
+
+if HAVE_X86_ASM
+MESA_ASM_FILES_FOR_ARCH += $(X86_FILES)
+endif
+if HAVE_X86_64_ASM
+MESA_ASM_FILES_FOR_ARCH += $(X86_64_FILES)
+endif
+if HAVE_SPARC_ASM
+MESA_ASM_FILES_FOR_ARCH += $(SPARC_FILES)
+endif
+
+libmesa_la_SOURCES = \
+   $(MESA_FILES) \
+   $(MESA_CXX_FILES) \
+$(MESA_ASM_FILES_FOR_ARCH)
+
+libmesa_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
+libmesa_la_LDFLAGS = -static
+
+libmesagallium_la_SOURCES = \
+   $(MESA_GALLIUM_FILES) \
+   $(MESA_GALLIUM_CXX_FILES) \
+$(MESA_ASM_FILES_FOR_ARCH)
+
+libmesagallium_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
+libmesagallium_la_LDFLAGS = -static
 
 install-exec-local:
$(MAKE) -f $(srcdir)/Makefile.old install
 
-clean-local:
-   $(MAKE) -f $(srcdir)/Makefile.old clean
+# 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: libmesa.la libmesagallium.la
+   ln -f .libs/libmesa.a .
+   ln -f .libs/libmesagallium.a .
 
 pkgconfigdir = $(libdir)/pkgconfig
 
diff --git a/src/mesa/Makefile.old b/src/mesa/Makefile.old
index 4ea70d4..3266a5d 100644
--- a/src/mesa/Makefile.old
+++ b/src/mesa/Makefile.old
@@ -3,58 +3,10 @@
 TOP = ../..
 include $(TOP)/configs/current
 
-MESA_LIBS := libmesa.a libmesagallium.a
-DEPENDS := depend
-
 SRCDIR = .
 include sources.mak
 
-# define preprocessor flags
-MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES)
-
-# append include dirs
-MESA_CPPFLAGS += $(INCLUDE_DIRS)
-
-# tidy compiler flags
-CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
-CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS))
-
-# LLVM is needed for the state tracker
-MESA_CFLAGS := $(LLVM_CFLAGS) $(CFLAGS)
-MESA_CXXFLAGS := $(LLVM_CFLAGS) $(CXXFLAGS)
-
-%.o: %.c
-   $(CC) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CFLAGS)
-
-%.o: %.cpp
-   $(CXX) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CXXFLAGS)
-
-%.o: %.S
-   $(CC) -c -o $@ $ $(MESA_CPPFLAGS) $(MESA_CFLAGS)
-
-# Default: build dependencies, then asm_subdirs, GLSL built-in lib,
-# then convenience libs (.a) and finally the device drivers:
-default: $(DEPENDS) $(MESA_LIBS)
-
-##
-# Helper libraries used by many drivers:
-
-# Make archive of core mesa object files
-libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS)
-   @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS)
-
-# Make archive of subset of core mesa object files for gallium
-libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
-   @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
-
-##
-# Dependency generation
-
-depend: $(ALL_FILES) main/git_sha1.h
-   @ echo running $(MKDEP)
-   @ touch depend
-   @$(MKDEP) $(MKDEP_OPTIONS) $(MESA_CPPFLAGS) \
-   $(ALL_FILES)  /dev/null 2/dev/null
+default:
 
 ##
 # Installation rules
@@ -73,10 +25,3 @@ install-osmesa: default
 # Emacs tags
 tags:
etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h
-
-clean:
-   -rm -f */*.o
-   -rm -f */*/*.o
-   -rm -f depend depend.bak 

Re: [Mesa-dev] [PATCH 4/9] automake: convert libmesa and libmesagallium

2012-07-09 Thread Eric Anholt
Jon TURNEY jon.tur...@dronecode.org.uk writes:
 diff --git a/src/mesa/Makefile.am b/src/mesa/Makefile.am
 index bada760..08beaa6 100644
 --- a/src/mesa/Makefile.am
 +++ b/src/mesa/Makefile.am

 +libmesa_la_SOURCES = \
 + $(MESA_FILES) \
 + $(MESA_CXX_FILES) \
 +$(MESA_ASM_FILES_FOR_ARCH)
 +
 +libmesa_la_LIBADD = $(top_builddir)/src/glsl/libglsl.la
 +libmesa_la_LDFLAGS = -static

Doesn't this -static result in relocations for static libs getting
built, which would then be a problem for the linking into shared
libraries later?  I don't really know this stuff well, but a -static in
the middle of a shared lib build seems strange.

The helper lib for the asm code in libdricore built a .a file without
-static being specified.

Also, with this commit, did you test that git_sha1 depencies were
working correctly and commit --amending would produce a new sha1 in your
drivers?


pgpIbpdE2iqQt.pgp
Description: PGP signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev