OSDN Git Service

mesa: build xmlconfig to a separate static library
authorErik Faye-Lund <kusmabite@gmail.com>
Wed, 10 Jun 2015 22:35:04 +0000 (23:35 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Thu, 18 Jun 2015 12:43:40 +0000 (13:43 +0100)
As we use the file from both the dri modules and loader, we end up with
multiple definition of the symbols provided in our gallium dri  modules.
Additionally we compile the file twice.

Resolve both issues, effectively enabling the build on toolchains which
don't support -Wl,--allow-multiple-definition.

v2: [Emil Velikov]
 - Fix the Scons/Android build.
 - Resolve libgbm build issues (bring back the missing -lm)

Cc: Julien Isorce <j.isorce@samsung.com>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90310
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90905
Acked-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
(cherry picked from commit 634f2002563b4fca68490c0a39518ea838f28fb1)

src/gallium/targets/dri/Makefile.am
src/loader/Makefile.am
src/mesa/drivers/dri/Makefile.am
src/mesa/drivers/dri/common/Android.mk
src/mesa/drivers/dri/common/Makefile.am
src/mesa/drivers/dri/common/Makefile.sources
src/mesa/drivers/dri/common/SConscript
src/mesa/drivers/dri/i965/Makefile.am

index aaeb950..3967280 100644 (file)
@@ -55,12 +55,6 @@ gallium_dri_la_LIBADD = \
        $(LIBDRM_LIBS) \
        $(GALLIUM_COMMON_LIB_DEPS)
 
-# XXX: Temporary allow duplicated symbols, as the loader pulls in xmlconfig.c
-# which already provides driParse* and driQuery* amongst others.
-# Remove this hack as we come up with a cleaner solution.
-gallium_dri_la_LDFLAGS += \
-       -Wl,--allow-multiple-definition
-
 EXTRA_gallium_dri_la_DEPENDENCIES = \
        dri.sym \
        $(top_srcdir)/src/gallium/targets/dri-vdpau.dyn
index 36ddba8..aef1bd6 100644 (file)
@@ -41,15 +41,11 @@ libloader_la_CPPFLAGS += \
        -I$(top_builddir)/src/mesa/drivers/dri/common/ \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/mapi/ \
-       -DUSE_DRICONF \
-       $(EXPAT_CFLAGS)
+       -DUSE_DRICONF
 
-libloader_la_SOURCES += \
-       $(top_srcdir)/src/mesa/drivers/dri/common/xmlconfig.c
+ libloader_la_LIBADD += \
+       $(top_builddir)/src/mesa/drivers/dri/common/libxmlconfig.la
 
-libloader_la_LIBADD += \
-       -lm \
-       $(EXPAT_LIBS)
 endif
 
 if !HAVE_LIBDRM
index fa1de10..08a8e64 100644 (file)
@@ -60,6 +60,7 @@ mesa_dri_drivers_la_LIBADD = \
         ../../libmesa.la \
         common/libmegadriver_stub.la \
         common/libdricommon.la \
+        common/libxmlconfig.la \
         $(MEGADRIVERS_DEPS) \
         $(DRI_LIB_DEPS) \
         $()
index 03ea564..deaf501 100644 (file)
@@ -47,7 +47,9 @@ else
 LOCAL_SHARED_LIBRARIES := libdrm
 endif
 
-LOCAL_SRC_FILES := $(DRI_COMMON_FILES)
+LOCAL_SRC_FILES := \
+       $(DRI_COMMON_FILES) \
+       $(XMLCONFIG_FILES)
 
 LOCAL_GENERATED_SOURCES := \
     $(intermediates)/xmlpool/options.h
index af6f742..2d6cb9d 100644 (file)
@@ -31,16 +31,20 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mapi \
        -I$(top_srcdir)/src/mesa/ \
        $(DEFINES) \
-       $(EXPAT_CFLAGS) \
        $(VISIBILITY_CFLAGS)
 
 noinst_LTLIBRARIES = \
        libdricommon.la \
+       libxmlconfig.la \
        libmegadriver_stub.la \
        libdri_test_stubs.la
 
 libdricommon_la_SOURCES = $(DRI_COMMON_FILES)
 
+libxmlconfig_la_SOURCES = $(XMLCONFIG_FILES)
+libxmlconfig_la_CFLAGS = $(AM_CFLAGS) $(EXPAT_CFLAGS)
+libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm
+
 libdri_test_stubs_la_SOURCES = $(test_stubs_FILES)
 libdri_test_stubs_la_CFLAGS = $(AM_CFLAGS) -DNO_MAIN
 
index d00ec5f..d5d8da8 100644 (file)
@@ -2,7 +2,9 @@ DRI_COMMON_FILES := \
        utils.c \
        utils.h \
        dri_util.c \
-       dri_util.h \
+       dri_util.h
+
+XMLCONFIG_FILES := \
        xmlconfig.c \
        xmlconfig.h
 
index 0bee1b4..b402736 100644 (file)
@@ -37,7 +37,7 @@ drienv.PkgUseModules('DRM')
 # else
 #env.Append(CPPDEFINES = ['__NOT_HAVE_DRM_H'])
 
-sources = drienv.ParseSourceList('Makefile.sources', 'DRI_COMMON_FILES')
+sources = drienv.ParseSourceList('Makefile.sources', ['DRI_COMMON_FILES', 'XMLCONFIG_FILES' ])
 
 dri_common = drienv.ConvenienceLibrary(
        target = 'dri_common',
index a675b95..7e69b6a 100644 (file)
@@ -46,6 +46,7 @@ libi965_dri_la_LIBADD = $(INTEL_LIBS)
 TEST_LIBS = \
        libi965_dri.la \
        ../common/libdricommon.la \
+       ../common/libxmlconfig.la \
        ../common/libmegadriver_stub.la \
         ../../../libmesa.la \
        $(DRI_LIB_DEPS) \