[Mesa-dev] [PATCH 3/4] i965: Convert the build to using automake.

Eric Anholt eric at anholt.net
Thu Jan 12 16:08:13 PST 2012


This does introduce a warning by the automake build system, that the
missing-symbols test build is non-portable.  That's true -- Mac OS X
can't take something built as a loadable module and just link it as a
library.  Of course, we aren't building this on OS X at all, so it
would be nice to be able to suppress it, but I haven't found a way.

Still, the build is going to be much quieter than we have ever had
before, so I think this is a fair tradeoff until we find a way to shut
that warning up.
---
 .gitignore                                 |    4 ++
 configs/linux-dri                          |    2 +-
 configure.ac                               |   13 +++++
 src/mesa/drivers/dri/i965/Android.mk       |    6 +-
 src/mesa/drivers/dri/i965/Makefile         |   27 ----------
 src/mesa/drivers/dri/i965/Makefile.am      |   75 ++++++++++++++++++++++++++++
 src/mesa/drivers/dri/i965/Makefile.sources |    8 ++--
 7 files changed, 100 insertions(+), 35 deletions(-)
 delete mode 100644 src/mesa/drivers/dri/i965/Makefile
 create mode 100644 src/mesa/drivers/dri/i965/Makefile.am

diff --git a/.gitignore b/.gitignore
index a6243bf..a4394b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
 *.dll
 *.exe
 *.ilk
+*.lo
 *.o
 *.obj
 *.os
@@ -19,9 +20,11 @@
 *~
 depend
 depend.bak
+bin/ltmain.sh
 lib
 lib64
 configure
+configure.lineno
 autom4te.cache
 aclocal.m4
 config.log
@@ -30,5 +33,6 @@ cscope*
 .scon*
 config.py
 build
+libtool
 manifest.txt
 .dir-locals.el
diff --git a/configs/linux-dri b/configs/linux-dri
index e63790e..dde6408 100644
--- a/configs/linux-dri
+++ b/configs/linux-dri
@@ -62,7 +62,7 @@ GALLIUM_WINSYS_DIRS = sw sw/xlib drm/vmware drm/intel svga/drm
 GALLIUM_TARGET_DIRS = dri-vmwgfx
 GALLIUM_STATE_TRACKERS_DIRS = egl dri
 
-DRI_DIRS = i915 i965 nouveau r200 radeon swrast
+DRI_DIRS = i915 nouveau r200 radeon swrast
 
 INTEL_LIBS = $(shell $(PKG_CONFIG) --libs libdrm_intel)
 INTEL_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm_intel)
diff --git a/configure.ac b/configure.ac
index 7c50e3c..1a120ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,6 +18,9 @@ AC_CONFIG_AUX_DIR([bin])
 AC_CANONICAL_HOST
 AM_INIT_AUTOMAKE([foreign])
 
+LT_PREREQ([2.2])
+LT_INIT([disable-static])
+
 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
 USER_CFLAGS="$CFLAGS"
 USER_CXXFLAGS="$CXXFLAGS"
@@ -1282,9 +1285,18 @@ AC_SUBST([DRI_LIB_DEPS])
 case $DRI_DIRS in
 *i915*|*i965*)
     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
+
+    case $DRI_DIRS in
+    *i965*)
+	HAVE_I965_DRI=yes;
+	;;
+    esac
+
     ;;
 esac
 
+AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
+
 case $DRI_DIRS in
 *nouveau*)
     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
@@ -1924,6 +1936,7 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
 
 dnl Substitute the config
 AC_CONFIG_FILES([configs/autoconf
+		src/mesa/drivers/dri/i965/Makefile
 		tests/Makefile
 		tests/glx/Makefile])
 
diff --git a/src/mesa/drivers/dri/i965/Android.mk b/src/mesa/drivers/dri/i965/Android.mk
index ec4a761..fbc6fc0 100644
--- a/src/mesa/drivers/dri/i965/Android.mk
+++ b/src/mesa/drivers/dri/i965/Android.mk
@@ -41,9 +41,9 @@ LOCAL_C_INCLUDES := \
 	$(DRM_TOP)/intel
 
 LOCAL_SRC_FILES := \
-	$(i965_C_SOURCES) \
-	$(i965_CXX_SOURCES) \
-	$(i965_ASM_SOURCES)
+	$(i965_C_FILES) \
+	$(i965_CXX_FILES) \
+	$(i965_ASM_FILES)
 
 LOCAL_WHOLE_STATIC_LIBRARIES := \
 	$(MESA_DRI_WHOLE_STATIC_LIBRARIES)
diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile
deleted file mode 100644
index 57af7a6..0000000
--- a/src/mesa/drivers/dri/i965/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-TOP = ../../../../..
-MESA_TOP := $(TOP)
-
-# Import variables i965_*.
-include Makefile.sources
-
-include $(TOP)/configs/current
-
-LIBNAME = i965_dri.so
-
-include ../Makefile.defines
-
-C_SOURCES := \
-	$(i965_C_SOURCES) \
-	$(COMMON_SOURCES)
-
-CXX_SOURCES := $(i965_CXX_SOURCES)
-ASM_SOURCES := $(i965_ASM_SOURCES)
-DRIVER_DEFINES := $(addprefix -I, $(i965_INCLUDES))
-
-INCLUDES += $(INTEL_CFLAGS)
-DRI_LIB_DEPS += $(INTEL_LIBS)
-
-include ../Makefile.targets
-
-intel_decode.o: ../intel/intel_decode.c
-intel_tex_layout.o: ../intel/intel_tex_layout.c
diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am
new file mode 100644
index 0000000..cb44aa4
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/Makefile.am
@@ -0,0 +1,75 @@
+
+
+# Copyright © 2011 Intel Corporation
+#
+# 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.
+
+include Makefile.sources
+
+# Hack to make some of the non-automake variables work.
+TOP=$(top_builddir)
+
+AM_CFLAGS = \
+	-I$(top_srcdir)/include \
+	-I$(top_srcdir)/src/ \
+	-I$(top_srcdir)/src/mapi \
+	-I$(top_srcdir)/src/mesa/ \
+	-I../common \
+	-I../intel \
+	-I../intel/server \
+	$(DEFINES) \
+	$(ASM_FLAGS) \
+	$(API_DEFINES) \
+	$(INTEL_CFLAGS)
+
+AM_CXXFLAGS = $(AM_CFLAGS)
+
+dridir = $(DRI_DRIVER_INSTALL_DIR)
+
+if HAVE_I965_DRI
+dri_LTLIBRARIES = i965_dri.la
+endif
+
+# These should be an ltlibrary that's built once.  Let's fix that once
+# the other drivers are converted to automake.
+COMMON_FILES = \
+	../common/utils.c \
+	../common/dri_util.c \
+	../common/xmlconfig.c
+
+i965_dri_la_SOURCES = \
+	$(i965_C_FILES) \
+	$(i965_CXX_FILES) \
+	$(COMMON_FILES)
+
+i965_dri_la_LDFLAGS = -module -avoid-version -shared
+i965_dri_la_LIBADD = \
+	$(DRI_LIB_DEPS) \
+	$(DRICORE_LIB_DEPS) \
+	$(INTEL_LIBS)
+
+# Test build to make sure that we didn't leave any undefined symbols in the
+# driver.
+noinst_PROGRAMS = i965_symbols_test
+
+i965_symbols_test_SOURCES = \
+	../common/dri_test.c
+i965_symbols_test_LDADD = \
+	i965_dri.la
diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources
index 3eeac6f..2b20885 100644
--- a/src/mesa/drivers/dri/i965/Makefile.sources
+++ b/src/mesa/drivers/dri/i965/Makefile.sources
@@ -2,7 +2,7 @@ i965_INCLUDES := \
 	$(MESA_TOP)/src \
 	$(MESA_TOP)/src/mesa/drivers/dri/intel
 
-i965_C_SOURCES := \
+i965_C_FILES := \
 	intel_batchbuffer.c \
 	intel_blit.c \
 	intel_buffer_objects.c \
@@ -109,9 +109,9 @@ i965_C_SOURCES := \
 	gen7_viewport_state.c \
 	gen7_vs_state.c \
 	gen7_wm_state.c \
-	gen7_wm_surface_state.c \
+	gen7_wm_surface_state.c
 
-i965_CXX_SOURCES := \
+i965_CXX_FILES := \
 	brw_cubemap_normalize.cpp \
 	brw_fs.cpp \
 	brw_fs_emit.cpp \
@@ -127,4 +127,4 @@ i965_CXX_SOURCES := \
 	brw_vec4_reg_allocate.cpp \
 	brw_vec4_visitor.cpp
 
-i965_ASM_SOURCES :=
+i965_ASM_FILES :=
-- 
1.7.7.3



More information about the mesa-dev mailing list