From 9ba7693a9ae1ddb10675e20f2cd05061f5151705 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Tue, 15 Aug 2017 16:37:41 -0500 Subject: [PATCH] Android: Fix LLVM duplicated symbols linking for N and M Both statically linking libLLVMCore and dynamically linking libLLVM causes duplicated symbols in gallium_dri.so and it fails to dlopen. We don't really need to link libLLVMCore, but just need generated headers to be built first. Dynamically linking to libLLVM instead is enough to do that. Thanks to Qiang Yu for finding the root cause. With this change, we can align all versions and just have libLLVM as a shared lib dependency. This also requires changes in the M and N versions of LLVM to export the include paths for libLLVM. AOSP master is okay. Fixes: 26aee6f4d5a ("Android: rework LLVM build support") Reported-by: Mauro Rossi Cc: 17.2 Reviewed-by: Emil Velikov Signed-off-by: Qiang Yu Signed-off-by: Rob Herring (cherry picked from commit 4734bfc02adad103efa1fa51e4c0f93fcaedb73c) --- Android.mk | 12 ++++-------- src/amd/Android.common.mk | 4 +--- src/gallium/drivers/radeon/Android.mk | 2 +- src/gallium/drivers/radeonsi/Android.mk | 2 +- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Android.mk b/Android.mk index 6571161c878..7087a44a9c3 100644 --- a/Android.mk +++ b/Android.mk @@ -92,16 +92,12 @@ define mesa-build-with-llvm $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5), \ $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \ $(if $(filter 6,$(MESA_ANDROID_MAJOR_VERSION)), \ - $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_PATCH=0) \ - $(eval LOCAL_STATIC_LIBRARIES += libLLVMCore) \ - $(eval LOCAL_C_INCLUDES += external/llvm/include external/llvm/device/include),) \ + $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_PATCH=0)) \ $(if $(filter 7,$(MESA_ANDROID_MAJOR_VERSION)), \ - $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0308 -DMESA_LLVM_VERSION_PATCH=0) \ - $(eval LOCAL_STATIC_LIBRARIES += libLLVMCore) \ - $(eval LOCAL_C_INCLUDES += external/llvm/include external/llvm/device/include),) \ + $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0308 -DMESA_LLVM_VERSION_PATCH=0)) \ $(if $(filter O,$(MESA_ANDROID_MAJOR_VERSION)), \ - $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_PATCH=0) \ - $(eval LOCAL_HEADER_LIBRARIES += llvm-headers),) + $(eval LOCAL_CFLAGS += -DHAVE_LLVM=0x0309 -DMESA_LLVM_VERSION_PATCH=0)) \ + $(eval LOCAL_SHARED_LIBRARIES += libLLVM) endef # add subdirectories diff --git a/src/amd/Android.common.mk b/src/amd/Android.common.mk index 39d2732fd99..92b2452db59 100644 --- a/src/amd/Android.common.mk +++ b/src/amd/Android.common.mk @@ -54,9 +54,7 @@ LOCAL_C_INCLUDES := \ $(call generated-sources-dir-for,STATIC_LIBRARIES,libmesa_nir,,)/nir \ $(MESA_TOP)/src/gallium/include \ $(MESA_TOP)/src/gallium/auxiliary \ - $(intermediates)/common \ - external/llvm/include \ - external/llvm/device/include + $(intermediates)/common LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH)/common diff --git a/src/gallium/drivers/radeon/Android.mk b/src/gallium/drivers/radeon/Android.mk index eb1a32182bb..c2d3a1cbce6 100644 --- a/src/gallium/drivers/radeon/Android.mk +++ b/src/gallium/drivers/radeon/Android.mk @@ -30,7 +30,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := $(C_SOURCES) -LOCAL_SHARED_LIBRARIES := libdrm_radeon libLLVM +LOCAL_SHARED_LIBRARIES := libdrm_radeon LOCAL_MODULE := libmesa_pipe_radeon ifeq ($(MESA_ENABLE_LLVM),true) diff --git a/src/gallium/drivers/radeonsi/Android.mk b/src/gallium/drivers/radeonsi/Android.mk index 6fff91f6f75..faf38809946 100644 --- a/src/gallium/drivers/radeonsi/Android.mk +++ b/src/gallium/drivers/radeonsi/Android.mk @@ -40,7 +40,7 @@ LOCAL_C_INCLUDES := \ LOCAL_STATIC_LIBRARIES := libmesa_amd_common -LOCAL_SHARED_LIBRARIES := libdrm_radeon libLLVM +LOCAL_SHARED_LIBRARIES := libdrm_radeon LOCAL_MODULE := libmesa_pipe_radeonsi $(call mesa-build-with-llvm)