targets/dri: android: use WHOLE static libraries
authorEmil Velikov <emil.l.velikov@gmail.com>
Sun, 29 Nov 2015 16:38:54 +0000 (16:38 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 22 Jan 2016 11:55:34 +0000 (11:55 +0000)
By using whole static libraries the android buildsystem provides
whole-archive (alike) solution. This means that we don't need to worry
about the order of the static libraries and any reverse, recursive or
circular dependencies that they have between one another.

Without this the linker will discard any unused hunks of one library
and we'll end up with unresolved symbols as those are required by
another static library. This issue has become more prominent with the
introduction of pipe-loader.

Whole static libraries has been used in i915/i965 for a very long
time, so we might do the same.

v2:
 - Better commit message (Ilia)
 - Keep external dependencies as [normal] static libs (Mauro)

Cc: mesa-stable@lists.freedesktop.org
Cc: Mauro Rossi <issor.oruam@gmail.com>
Reported-by: Mauro Rossi <issor.oruam@gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
src/gallium/targets/dri/Android.mk

index 2d9610ee9abbcb2b7263d6aaa9793eac7694a75e..9118fef8724f26ea0e06f527a7587a61b923db12 100644 (file)
@@ -100,7 +100,7 @@ ifneq ($(filter nouveau r600g,$(MESA_GPU_DRIVERS)),)
 LOCAL_SHARED_LIBRARIES += $(if $(filter true,$(MESA_LOLLIPOP_BUILD)),libc++,libstlport)
 endif
 
-LOCAL_STATIC_LIBRARIES := \
+LOCAL_WHOLE_STATIC_LIBRARIES := \
        $(gallium_DRIVERS) \
        libmesa_st_dri \
        libmesa_st_mesa \
@@ -112,6 +112,8 @@ LOCAL_STATIC_LIBRARIES := \
        libmesa_util \
        libmesa_loader \
 
+LOCAL_STATIC_LIBRARIES :=
+
 ifeq ($(MESA_ENABLE_LLVM),true)
 LOCAL_STATIC_LIBRARIES += \
        libLLVMR600CodeGen \