forked from OSchip/llvm-project
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:
parent
a9f3e908bf
commit
ff8e6a763f
|
@ -1,6 +1,7 @@
|
||||||
LEVEL = ../../../make
|
LEVEL = ../../../make
|
||||||
|
|
||||||
CXX_SOURCES := main.cpp
|
CXX_SOURCES := main.cpp
|
||||||
|
USE_LIBSTDCPP := 1
|
||||||
|
|
||||||
# clang-3.5+ outputs FullDebugInfo by default for Darwin/FreeBSD
|
# clang-3.5+ outputs FullDebugInfo by default for Darwin/FreeBSD
|
||||||
# targets. Other targets do not, which causes this test to fail.
|
# targets. Other targets do not, which causes this test to fail.
|
||||||
|
@ -12,8 +13,3 @@ endif
|
||||||
include $(LEVEL)/Makefile.rules
|
include $(LEVEL)/Makefile.rules
|
||||||
|
|
||||||
CXXFLAGS += -O0
|
CXXFLAGS += -O0
|
||||||
|
|
||||||
ifeq (,$(findstring gcc,$(CC)))
|
|
||||||
CXXFLAGS += -stdlib=libstdc++
|
|
||||||
LDFLAGS += -stdlib=libstdc++
|
|
||||||
endif
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ endif
|
||||||
ifeq (1,$(USE_LIBSTDCPP))
|
ifeq (1,$(USE_LIBSTDCPP))
|
||||||
# Clang requires an extra flag: -stdlib=libstdc++
|
# Clang requires an extra flag: -stdlib=libstdc++
|
||||||
ifneq (,$(findstring clang,$(CC)))
|
ifneq (,$(findstring clang,$(CC)))
|
||||||
CXXFLAGS += -stdlib=libstdc++
|
CXXFLAGS += -stdlib=libstdc++ -DLLDB_USING_LIBSTDCPP
|
||||||
LDFLAGS += -stdlib=libstdc++
|
LDFLAGS += -stdlib=libstdc++
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -43,6 +43,13 @@
|
||||||
|
|
||||||
#endif
|
#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
|
#ifdef __cplusplus
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
||||||
|
@ -65,3 +72,4 @@ typedef std::atomic<int> pseudo_barrier_t;
|
||||||
(barrier) = (count); \
|
(barrier) = (count); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
#endif // defined(__APPLE__) && defined(LLDB_USING_LIBSTDCPP)
|
||||||
|
|
Loading…
Reference in New Issue