Fix libstdc++ failure where <atomic> is not able to be imported on Darwin systems.

The adding of <atomic> to test_common.h broke 12 tests on Darwin. We work around this by not including <atomic> when building on darwin for libstdc++ tests.

llvm-svn: 269372
This commit is contained in:
Greg Clayton 2016-05-12 22:33:02 +00:00
parent a9f3e908bf
commit ff8e6a763f
3 changed files with 10 additions and 6 deletions

View File

@ -1,6 +1,7 @@
LEVEL = ../../../make
CXX_SOURCES := main.cpp
USE_LIBSTDCPP := 1
# clang-3.5+ outputs FullDebugInfo by default for Darwin/FreeBSD
# targets. Other targets do not, which causes this test to fail.
@ -12,8 +13,3 @@ endif
include $(LEVEL)/Makefile.rules
CXXFLAGS += -O0
ifeq (,$(findstring gcc,$(CC)))
CXXFLAGS += -stdlib=libstdc++
LDFLAGS += -stdlib=libstdc++
endif

View File

@ -306,7 +306,7 @@ endif
ifeq (1,$(USE_LIBSTDCPP))
# Clang requires an extra flag: -stdlib=libstdc++
ifneq (,$(findstring clang,$(CC)))
CXXFLAGS += -stdlib=libstdc++
CXXFLAGS += -stdlib=libstdc++ -DLLDB_USING_LIBSTDCPP
LDFLAGS += -stdlib=libstdc++
endif
endif

View File

@ -43,6 +43,13 @@
#endif
#if defined(__APPLE__) && defined(LLDB_USING_LIBSTDCPP)
// on Darwin, libstdc++ is missing <atomic>, so this would cause any test to fail building
// since this header file is being included in every C-family test case, we need to not include it
// on Darwin, most tests use libc++ by default, so this will only affect tests that explicitly require libstdc++
#else
#ifdef __cplusplus
#include <atomic>
@ -65,3 +72,4 @@ typedef std::atomic<int> pseudo_barrier_t;
(barrier) = (count); \
} while (0)
#endif // __cplusplus
#endif // defined(__APPLE__) && defined(LLDB_USING_LIBSTDCPP)