diff --git a/core/binary.mk b/core/binary.mk index 21a60194d6..a35d7e25e4 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1675,6 +1675,10 @@ ifneq ($(my_bad_ldlibs),) endif endif +# my_cxx_ldlibs may contain linker flags need to wrap certain libraries +# (start-group/end-group), so append after the check above. +my_ldlibs += $(my_cxx_ldlibs) + $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(my_asflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(my_conlyflags) diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk index bff4d23d13..fd9c442416 100644 --- a/core/cxx_stl_setup.mk +++ b/core/cxx_stl_setup.mk @@ -70,6 +70,7 @@ else endif endif +my_cxx_ldlibs := ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),) my_cflags += -D_USING_LIBCXX @@ -89,7 +90,7 @@ ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),) my_cppflags += -nostdinc++ my_ldflags += -nodefaultlibs my_ldlibs += -lpthread -lm - my_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs) + my_cxx_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs) else ifeq (arm,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) my_static_libraries += libunwind_llvm @@ -114,7 +115,7 @@ else ifeq ($(my_cxx_stl),none) ifdef LOCAL_IS_HOST_MODULE my_cppflags += -nostdinc++ my_ldflags += -nodefaultlibs - my_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs) + my_cxx_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs) endif else $(error $(LOCAL_PATH): $(LOCAL_MODULE): $(my_cxx_stl) is not a supported STL.)