forked from OSchip/llvm-project
Use clang --driver-mode instead of guessing c++ compiler path
Summary: 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++. Reviewers: tfiala, zturner, labath Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D25753 llvm-svn: 284550
This commit is contained in:
parent
84a0b6dba1
commit
e80f007dfb
|
@ -242,27 +242,27 @@ ifneq "$(DYLIB_NAME)" ""
|
|||
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 @@ ifneq "$(strip $(DYLIB_CXX_SOURCES))" ""
|
|||
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 @@ endif
|
|||
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 @@ ifneq "$(strip $(OBJCXX_SOURCES))" ""
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue