From 9029c8b1e37b645c16a4c78feb62ee42480408ae Mon Sep 17 00:00:00 2001 From: Deborah Brouwer Date: Fri, 26 Sep 2025 16:26:15 -0700 Subject: [PATCH] =?UTF-8?q?android:=20fall=20back=20to=20SwiftShader?= =?UTF-8?q?=E2=80=99s=20LLVM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If no external/llvm-project directory is present, build with SwiftShader’s static LLVM library if available. This can simplify Mesa builds inside AOSP. Signed-off-by: Deborah Brouwer Reviewed-by: Antonio Ospite Reviewed-by: Valentine Burley Part-of: --- android/Android.mk | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/android/Android.mk b/android/Android.mk index b63edf28ca2..5b948b4cf5b 100644 --- a/android/Android.mk +++ b/android/Android.mk @@ -27,11 +27,20 @@ LOCAL_PATH := $(call my-dir) MESA3D_TOP := $(dir $(LOCAL_PATH)) LIBDRM_VERSION = $(shell cat external/libdrm/meson.build | grep -o "\\s*:\s*'\w*\.\w*\.\w*'" | grep -o "\w*\.\w*\.\w*" | head -1) + +USE_LLVM_SWIFTSHADER := $(if $(wildcard external/llvm-project), false, \ + $(if $(wildcard external/swiftshader/third_party/llvm-[0-9]*), true, false)) + LLVM_VERSION_MAJOR = $(shell \ if [ -f external/llvm-project/cmake/Modules/LLVMVersion.cmake ]; then \ grep 'set.LLVM_VERSION_MAJOR ' external/llvm-project/cmake/Modules/LLVMVersion.cmake | grep -o '[0-9]\+'; \ - else \ + elif [ -f external/llvm-project/llvm/CMakeLists.txt ]; then \ grep 'set.LLVM_VERSION_MAJOR ' external/llvm-project/llvm/CMakeLists.txt | grep -o '[0-9]\+'; \ + else \ + ss_dir="$$(printf '%s\n' $(wildcard external/swiftshader/third_party/llvm-[0-9]*) | sort -V | tail -n1)"; \ + if [ -n "$$ss_dir" ]; then \ + echo "$$ss_dir" | sed -E 's|.*llvm-([0-9]+).*|\1|'; \ + fi; \ fi) MESA_VK_LIB_SUFFIX_amd := radeon @@ -93,9 +102,16 @@ endif ifneq ($(MESON_GEN_LLVM_STUB),) MESON_LLVM_VERSION := $(LLVM_VERSION_MAJOR).0.0 + +ifeq ($(strip $(USE_LLVM_SWIFTSHADER)),true) +LOCAL_C_INCLUDES += $(TOP)/external/swiftshader/third_party/llvm-$(LLVM_VERSION_MAJOR).0/include +LOCAL_STATIC_LIBRARIES += libLLVM$(LLVM_VERSION_MAJOR)_swiftshader +else LOCAL_SHARED_LIBRARIES += libLLVM$(LLVM_VERSION_MAJOR) endif +endif + ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 30; echo $$?), 0) LOCAL_SHARED_LIBRARIES += \ android.hardware.graphics.mapper@4.0 \