[Lldb-commits] [PATCH] D25753: Use clang --driver-mode instead of guessing c++ compiler path

Chris Bieneman via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 18 14:53:17 PDT 2016


beanz created this revision.
beanz added reviewers: tfiala, zturner, labath.
beanz added a subscriber: lldb-commits.

When building the LLDB test programs, if your CC is clang it actually isn't safe to make CXX a string replace of "clang -> clang++". This falls down on unix configurations if your compiler is clang-${version}.

A safer approach is to use the "--driver-mode=g++" option to tell clang to act like clang++.


https://reviews.llvm.org/D25753

Files:
  packages/Python/lldbsuite/test/make/Makefile.rules


Index: packages/Python/lldbsuite/test/make/Makefile.rules
===================================================================
--- packages/Python/lldbsuite/test/make/Makefile.rules
+++ packages/Python/lldbsuite/test/make/Makefile.rules
@@ -242,27 +242,27 @@
 endif
 
 # Function that returns the counterpart C++ compiler, given $(CC) as arg.
-cxx_compiler_notdir = $(if $(findstring clang,$(1)), \
-                           $(subst clang,clang++,$(1)), \
-                           $(if $(findstring icc,$(1)), \
-                                $(subst icc,icpc,$(1)), \
-                                $(if $(findstring llvm-gcc,$(1)), \
-                                     $(subst llvm-gcc,llvm-g++,$(1)), \
-                                     $(if $(findstring gcc,$(1)), \
-                                          $(subst gcc,g++,$(1)), \
-                                          $(subst cc,c++,$(1))))))
+cxx_compiler_notdir = $(if $(findstring icc,$(1)), \
+                            $(subst icc,icpc,$(1)), \
+                            $(if $(findstring llvm-gcc,$(1)), \
+                                 $(subst llvm-gcc,llvm-g++,$(1)), \
+                                 $(if $(findstring gcc,$(1)), \
+                                      $(subst gcc,g++,$(1)), \
+                                      $(subst cc,c++,$(1)))))
 cxx_compiler = $(if $(findstring /,$(1)),$(join $(dir $(1)), $(call cxx_compiler_notdir,$(notdir $(1)))),$(call cxx_compiler_notdir,$(1)))
 
+ifeq ($(findstring clang, $(cxx_compiler)), clang)
+    CXXFLAGS += --driver-mode=g++
+endif
+
 # Function that returns the C++ linker, given $(CC) as arg.
-cxx_linker_notdir = $(if $(findstring clang,$(1)), \
-                         $(subst clang,clang++,$(1)), \
-                         $(if $(findstring icc,$(1)), \
-                              $(subst icc,icpc,$(1)), \
-                              $(if $(findstring llvm-gcc,$(1)), \
-                                   $(subst llvm-gcc,llvm-g++,$(1)), \
-                                   $(if $(findstring gcc,$(1)), \
-                                        $(subst gcc,g++,$(1)), \
-                                        $(subst cc,c++,$(1))))))
+cxx_linker_notdir = $(if $(findstring icc,$(1)), \
+                          $(subst icc,icpc,$(1)), \
+                          $(if $(findstring llvm-gcc,$(1)), \
+                               $(subst llvm-gcc,llvm-g++,$(1)), \
+                               $(if $(findstring gcc,$(1)), \
+                                    $(subst gcc,g++,$(1)), \
+                                    $(subst cc,c++,$(1)))))
 cxx_linker = $(if $(findstring /,$(1)),$(join $(dir $(1)), $(call cxx_linker_notdir,$(notdir $(1)))),$(call cxx_linker_notdir,$(1)))
 
 ifneq "$(OS)" "Darwin"
@@ -354,6 +354,7 @@
     DYLIB_OBJECTS +=$(strip $(DYLIB_CXX_SOURCES:.cpp=.o))
     CXX = $(call cxx_compiler,$(CC))
     LD = $(call cxx_linker,$(CC))
+    LDFLAGS += --driver-mode=g++
 endif
 
 #----------------------------------------------------------------------
@@ -377,6 +378,7 @@
 ifneq "$(strip $(CXX_SOURCES))" ""
 	OBJECTS +=$(strip $(CXX_SOURCES:.cpp=.o))
 	CXX = $(call cxx_compiler,$(CC))
+  LDFLAGS += --driver-mode=g++
 	LD = $(call cxx_linker,$(CC))
 endif
 
@@ -395,6 +397,7 @@
 	OBJECTS +=$(strip $(OBJCXX_SOURCES:.mm=.o))
 	CXX = $(call cxx_compiler,$(CC))
 	LD = $(call cxx_linker,$(CC))
+  LDFLAGS += --driver-mode=g++
 	ifeq "$(findstring lobjc,$(LDFLAGS))" ""
 		LDFLAGS +=-lobjc
 	endif


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25753.75078.patch
Type: text/x-patch
Size: 3511 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20161018/6a81613a/attachment.bin>


More information about the lldb-commits mailing list