diff --git a/core/binary.mk b/core/binary.mk index 0bc94692a4..1e98bc08fb 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -205,8 +205,6 @@ ifneq ($(LOCAL_SDK_VERSION),) my_api_level := $(my_ndk_api) endif - my_ndk_source_root := \ - $(HISTORICAL_NDK_VERSIONS_ROOT)/$(LOCAL_NDK_VERSION)/sources my_built_ndk := $(SOONG_OUT_DIR)/ndk my_ndk_triple := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_NDK_TRIPLE) my_ndk_sysroot_include := \ @@ -239,16 +237,18 @@ ifneq ($(LOCAL_SDK_VERSION),) endif ifeq (system,$(LOCAL_NDK_STL_VARIANT)) + my_ndk_source_root := \ + $(HISTORICAL_NDK_VERSIONS_ROOT)/$(LOCAL_NDK_VERSION)/sources my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/system/include my_system_shared_libraries += libstdc++ else ifneq (,$(filter c++_%, $(LOCAL_NDK_STL_VARIANT))) - my_ndk_stl_include_path := \ - $(my_ndk_source_root)/cxx-stl/llvm-libc++/include - my_ndk_stl_include_path += \ - $(my_ndk_source_root)/cxx-stl/llvm-libc++abi/include + my_llvm_dir := $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION) + my_libcxx_arch_dir := $(my_llvm_dir)/android_libc++/ndk/$($(LOCAL_2ND_ARCH_VAR_PREFIX)PREBUILT_LIBCXX_ARCH_DIR) - my_libcxx_libdir := \ - $(my_ndk_source_root)/cxx-stl/llvm-libc++/libs/$(my_cpu_variant) + # Include the target-specific __config_site file followed by the generic libc++ headers. + my_ndk_stl_include_path := $(my_libcxx_arch_dir)/include/c++/v1 + my_ndk_stl_include_path += $(my_llvm_dir)/include/c++/v1 + my_libcxx_libdir := $(my_libcxx_arch_dir)/lib ifeq (c++_static,$(LOCAL_NDK_STL_VARIANT)) my_ndk_stl_static_lib := \ @@ -258,7 +258,7 @@ ifneq ($(LOCAL_SDK_VERSION),) my_ndk_stl_shared_lib_fullpath := $(my_libcxx_libdir)/libc++_shared.so endif - my_ndk_stl_static_lib += $(my_libcxx_libdir)/libunwind.a + my_ndk_stl_static_lib += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBUNWIND) my_ldlibs += -ldl else # LOCAL_NDK_STL_VARIANT must be none # Do nothing. diff --git a/core/clang/TARGET_arm.mk b/core/clang/TARGET_arm.mk index f18747a44b..126482f72c 100644 --- a/core/clang/TARGET_arm.mk +++ b/core/clang/TARGET_arm.mk @@ -4,7 +4,10 @@ $(clang_2nd_arch_prefix)RS_COMPAT_TRIPLE := armv7-none-linux-gnueabi $(clang_2nd_arch_prefix)TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-arm-android.a $(clang_2nd_arch_prefix)TARGET_LIBCRT_BUILTINS := $(LLVM_RTLIB_PATH)/libclang_rt.builtins-arm-android.a +$(clang_2nd_arch_prefix)TARGET_LIBUNWIND := $(LLVM_RTLIB_PATH)/arm/libunwind.a # Address sanitizer clang config $(clang_2nd_arch_prefix)ADDRESS_SANITIZER_LINKER := /system/bin/linker_asan $(clang_2nd_arch_prefix)ADDRESS_SANITIZER_LINKER_FILE := /system/bin/bootstrap/linker_asan + +$(clang_2nd_arch_prefix)PREBUILT_LIBCXX_ARCH_DIR := arm diff --git a/core/clang/TARGET_arm64.mk b/core/clang/TARGET_arm64.mk index 42bed0aaed..e7ab6cb500 100644 --- a/core/clang/TARGET_arm64.mk +++ b/core/clang/TARGET_arm64.mk @@ -4,7 +4,10 @@ RS_COMPAT_TRIPLE := aarch64-linux-android TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-aarch64-android.a TARGET_LIBCRT_BUILTINS := $(LLVM_RTLIB_PATH)/libclang_rt.builtins-aarch64-android.a +TARGET_LIBUNWIND := $(LLVM_RTLIB_PATH)/aarch64/libunwind.a # Address sanitizer clang config ADDRESS_SANITIZER_LINKER := /system/bin/linker_asan64 ADDRESS_SANITIZER_LINKER_FILE := /system/bin/bootstrap/linker_asan64 + +PREBUILT_LIBCXX_ARCH_DIR := aarch64 diff --git a/core/clang/TARGET_riscv64.mk b/core/clang/TARGET_riscv64.mk index cfb5c7d0ea..58c9c7bf54 100644 --- a/core/clang/TARGET_riscv64.mk +++ b/core/clang/TARGET_riscv64.mk @@ -4,7 +4,10 @@ RS_COMPAT_TRIPLE := riscv64-linux-android TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-riscv64-android.a TARGET_LIBCRT_BUILTINS := $(LLVM_RTLIB_PATH)/libclang_rt.builtins-riscv64-android.a +TARGET_LIBUNWIND := $(LLVM_RTLIB_PATH)/riscv64/libunwind.a # Address sanitizer clang config ADDRESS_SANITIZER_LINKER := /system/bin/linker_asan64 ADDRESS_SANITIZER_LINKER_FILE := /system/bin/bootstrap/linker_asan64 + +PREBUILT_LIBCXX_ARCH_DIR := riscv64 diff --git a/core/clang/TARGET_x86.mk b/core/clang/TARGET_x86.mk index 5491a05978..1a08c79518 100644 --- a/core/clang/TARGET_x86.mk +++ b/core/clang/TARGET_x86.mk @@ -4,7 +4,10 @@ $(clang_2nd_arch_prefix)RS_COMPAT_TRIPLE := i686-linux-android $(clang_2nd_arch_prefix)TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-i686-android.a $(clang_2nd_arch_prefix)TARGET_LIBCRT_BUILTINS := $(LLVM_RTLIB_PATH)/libclang_rt.builtins-i686-android.a +$(clang_2nd_arch_prefix)TARGET_LIBUNWIND := $(LLVM_RTLIB_PATH)/i386/libunwind.a # Address sanitizer clang config $(clang_2nd_arch_prefix)ADDRESS_SANITIZER_LINKER := /system/bin/linker_asan $(clang_2nd_arch_prefix)ADDRESS_SANITIZER_LINKER_FILE := /system/bin/bootstrap/linker_asan + +$(clang_2nd_arch_prefix)PREBUILT_LIBCXX_ARCH_DIR := i386 diff --git a/core/clang/TARGET_x86_64.mk b/core/clang/TARGET_x86_64.mk index 167db72e74..f39b41ebf4 100644 --- a/core/clang/TARGET_x86_64.mk +++ b/core/clang/TARGET_x86_64.mk @@ -4,7 +4,10 @@ RS_COMPAT_TRIPLE := x86_64-linux-android TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-x86_64-android.a TARGET_LIBCRT_BUILTINS := $(LLVM_RTLIB_PATH)/libclang_rt.builtins-x86_64-android.a +TARGET_LIBUNWIND := $(LLVM_RTLIB_PATH)/x86_64/libunwind.a # Address sanitizer clang config ADDRESS_SANITIZER_LINKER := /system/bin/linker_asan64 ADDRESS_SANITIZER_LINKER_FILE := /system/bin/bootstrap/linker_asan64 + +PREBUILT_LIBCXX_ARCH_DIR := x86_64 diff --git a/core/install_jni_libs_internal.mk b/core/install_jni_libs_internal.mk index 5491247057..4959edd4c3 100644 --- a/core/install_jni_libs_internal.mk +++ b/core/install_jni_libs_internal.mk @@ -38,8 +38,9 @@ ifdef my_embed_jni $(error LOCAL_SDK_VERSION must be defined with LOCAL_NDK_STL_VARIANT, \ LOCAL_PACKAGE_NAME=$(LOCAL_PACKAGE_NAME)) endif + my_libcxx_arch := $($(LOCAL_2ND_ARCH_VAR_PREFIX)PREBUILT_LIBCXX_ARCH_DIR) my_jni_shared_libraries += \ - $(HISTORICAL_NDK_VERSIONS_ROOT)/$(LOCAL_NDK_VERSION)/sources/cxx-stl/llvm-libc++/libs/$(TARGET_$(my_2nd_arch_prefix)CPU_ABI)/libc++_shared.so + $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/android_libc++/ndk/$(my_libcxx_arch)/lib/libc++_shared.so endif # Set the abi directory used by the local JNI shared libraries.