From 4f2afde2528c6870eef470436842eabdd76953c3 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Tue, 3 Mar 2015 17:42:28 -0800 Subject: [PATCH] (Hopefully) fix the Mac build. The Mac linker doesn't understand --start-group, which is needed for properly linking libgcc/libc statically. It isn't needed for dynamic executables though, so use that driver behavior where appropriate. Bug: 19567451 Change-Id: Ifeb03bea55bc87561c64ddafdb99f664fef0f00e --- core/cxx_stl_setup.mk | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk index c1ce6e1cda..1cb73eae98 100644 --- a/core/cxx_stl_setup.mk +++ b/core/cxx_stl_setup.mk @@ -26,6 +26,10 @@ else my_cxx_stl := $(strip $(LOCAL_CXX_STL)) endif +# Yes, this is actually what the clang driver does. +HOST_dynamic_gcclibs := -lgcc_s -lgcc -lc -lgcc_s -lgcc +HOST_static_gcclibs := -Wl,--start-group -lgcc -lgcc_eh -lc -Wl,--end-group + ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),) my_cflags += -D_USING_LIBCXX my_c_includes += external/libcxx/include @@ -39,7 +43,11 @@ ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),) my_cppflags += -nostdinc++ my_ldflags += -nodefaultlibs my_ldlibs += -lpthread -lm - my_ldlibs += -Wl,--start-group -lgcc -lgcc_eh -lc -Wl,--end-group + ifeq (,$(BUILD_HOST_static)) + my_ldlibs += $(HOST_dynamic_gcclibs) + else + my_ldlibs += $(HOST_static_gcclibs) + endif endif else ifneq ($(filter $(my_cxx_stl),stlport stlport_static),) ifndef LOCAL_IS_HOST_MODULE @@ -68,7 +76,11 @@ else ifeq ($(my_cxx_stl),none) ifdef LOCAL_IS_HOST_MODULE my_cppflags += -nostdinc++ my_ldflags += -nodefaultlibs - my_ldlibs += -lm -Wl,--start-group -lgcc -lgcc_eh -lc -Wl,--end-group + ifeq (,$(BUILD_HOST_static)) + my_ldlibs += $(HOST_dynamic_gcclibs) + else + my_ldlibs += $(HOST_static_gcclibs) + endif endif else $(error $(my_cxx_stl) is not a supported STL.)