Effectively removes -lpthreads from linux/gcc build of test programs in test/api/multithreaded. This was done due to that combination causing a test program to hang due, likely due to an issue with gcc linker and libstdc++ conflicting pthreads code in test program and pthread used by lldb. Issue has been documented at:
http://llvm.org/bugs/show_bug.cgi?id=21553
Differential Revision: http://reviews.llvm.org/D5838
llvm-svn: 222031
LEVEL = ../../make
-ENABLE_THREADS := YES
+ENABLE_STD_THREADS := YES
CXX_SOURCES := main.cpp
include $(LEVEL)/Makefile.rules
LDFLAGS ?= $(CFLAGS)
LDFLAGS += $(LD_EXTRAS)
ifneq "$(OS)" "Windows_NT"
- ifeq "$(ENABLE_THREADS)" "YES"
- LDFLAGS += -lpthread
- endif
+ ifeq "$(ENABLE_THREADS)" "YES"
+ LDFLAGS += -lpthread
+ else
+ ifeq "$(ENABLE_STD_THREADS)" "YES"
+ # with the specific combination of Linux, g++, std=c++11, adding the
+ # linker flag -lpthread, will cause a program to hang when a std::conditional_variable
+ # is used in a program that links lldb (see bugzilla 21553)
+ ifeq "$(OS)" "Linux"
+ ifeq (,$(findstring gcc,$(CC)))
+ # Linux, but not gcc
+ LDFLAGS += -lpthread
+ endif
+ else
+ LDFLAGS += -lpthread
+ endif
+ endif
+ endif
endif
OBJECTS =
EXE ?= a.out