From e326480e4ebe8687948041c2dc5f5b7595559a2e Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 12 Jan 2012 14:28:37 -0800 Subject: [PATCH] i965: Convert the build to using automake. 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. v2: Put a link in /lib to avoid transition pains for people. Reviewed-by: Ian Romanick (v1) Reviewed-by: Matt Turner (v1) --- .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 | 81 ++++++++++++++++++++++ src/mesa/drivers/dri/i965/Makefile.sources | 8 +-- 7 files changed, 106 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 a6243bfe6c772..a4394b6da655f 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 e63790ea47e33..dde640897194a 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 7c50e3c009d72..1a120ecdaae66 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 ec4a76130990a..fbc6fc0e1db87 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 57af7a6f1387c..0000000000000 --- 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 0000000000000..55123814a7b4d --- /dev/null +++ b/src/mesa/drivers/dri/i965/Makefile.am @@ -0,0 +1,81 @@ + + +# 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 + +# 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. +all-local: i965_dri.la + $(MKDIR_P) $(top_builddir)/$(LIB_DIR); + ln -f .libs/i965_dri.so $(top_builddir)/$(LIB_DIR)/i965_dri.so; diff --git a/src/mesa/drivers/dri/i965/Makefile.sources b/src/mesa/drivers/dri/i965/Makefile.sources index 3eeac6f91b24a..2b20885f30be3 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 :=