summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-03-03 17:42:28 -0800
committerDan Albert <danalbert@google.com>2015-03-03 17:42:28 -0800
commit4f2afde2528c6870eef470436842eabdd76953c3 (patch)
tree8e19024e9b5ea0c13bcf2bf2e178cbff14ae1a75
parentcfafe554c0852f5b2c05e5d895b47d032daeec2e (diff)
downloadbuild-4f2afde2528c6870eef470436842eabdd76953c3.zip
build-4f2afde2528c6870eef470436842eabdd76953c3.tar.gz
build-4f2afde2528c6870eef470436842eabdd76953c3.tar.bz2
(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
-rw-r--r--core/cxx_stl_setup.mk16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/cxx_stl_setup.mk b/core/cxx_stl_setup.mk
index c1ce6e1..1cb73ea 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.)