Use -nostdlib++ instead of -nodefaultlibs

Host builds using libc++ used -nodefaultlibs to turn off the default
C++ runtime, and then added back all the other necessary libraries.
Clang supports -nostdlib++ since https://reviews.llvm.org/D47115
that removes the C++ runtime without affecting the other default
libraries.  Use -nostdlib++, and remove the lists of default
libraries.

Test: m checkbuild
Change-Id: Ib8b761534f64fd7f881e14598e514783678e0b35
This commit is contained in:
Colin Cross 2019-10-03 16:04:52 -07:00
parent 147f46ba72
commit 84783a776e

View file

@ -33,12 +33,6 @@ else
endif
endif
# Yes, this is actually what the clang driver does.
linux_dynamic_gcclibs := -lgcc_s -lgcc -lc -lgcc_s -lgcc
linux_static_gcclibs := -Wl,--start-group -lgcc -lgcc_eh -lc -Wl,--end-group
darwin_dynamic_gcclibs := -lc -lSystem
darwin_static_gcclibs := NO_STATIC_HOST_BINARIES_ON_DARWIN
my_link_type := dynamic
ifdef LOCAL_IS_HOST_MODULE
ifneq (,$(BUILD_HOST_static))
@ -79,8 +73,7 @@ ifneq ($(filter $(my_cxx_stl),libc++ libc++_static),)
ifdef LOCAL_IS_HOST_MODULE
my_cppflags += -nostdinc++
my_ldflags += -nodefaultlibs
my_cxx_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs)
my_ldflags += -nostdlib++
else
my_static_libraries += libc++demangle
ifeq (arm,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
@ -99,8 +92,7 @@ else ifeq ($(my_cxx_stl),libstdc++)
else ifeq ($(my_cxx_stl),none)
ifdef LOCAL_IS_HOST_MODULE
my_cppflags += -nostdinc++
my_ldflags += -nodefaultlibs
my_cxx_ldlibs += $($($(my_prefix)OS)_$(my_link_type)_gcclibs)
my_ldflags += -nostdlib++
endif
else
$(error $(LOCAL_PATH): $(LOCAL_MODULE): $(my_cxx_stl) is not a supported STL.)