add Makefile rule for test program CREATE_STD_THREADS
authorShawn Best <sbest@blueshiftinc.com>
Fri, 14 Nov 2014 19:41:33 +0000 (19:41 +0000)
committerShawn Best <sbest@blueshiftinc.com>
Fri, 14 Nov 2014 19:41:33 +0000 (19:41 +0000)
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

lldb/test/api/multithreaded/Makefile
lldb/test/make/Makefile.rules

index 09374d3..8b2b6cf 100644 (file)
@@ -1,6 +1,6 @@
 LEVEL = ../../make
 
-ENABLE_THREADS := YES
+ENABLE_STD_THREADS := YES
 CXX_SOURCES := main.cpp
 
 include $(LEVEL)/Makefile.rules
index 87c291e..2b73d44 100644 (file)
@@ -120,9 +120,23 @@ LD = $(CC)
 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