@@ -64,7 +64,7 @@ CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
CFLAGS-$(CONFIG_DEBUG_INFO) += -g
CFLAGS += '-D__OBJECT_FILE__="$@"'
-ifneq ($(clang),y)
+ifneq ($(CONFIG_CC_IS_CLANG),y)
# Clang doesn't understand this command line argument, and doesn't appear to
# have an suitable alternative. The resulting compiled binary does function,
# but has an excessively large symbol table.
@@ -126,7 +126,7 @@ subdir-all := $(subdir-y) $(subdir-n)
$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += -DINIT_SECTIONS_ONLY
ifeq ($(CONFIG_COVERAGE),y)
-ifeq ($(clang),y)
+ifeq ($(CONFIG_CC_IS_CLANG),y)
COV_FLAGS := -fprofile-instr-generate -fcoverage-mapping
else
COV_FLAGS := -fprofile-arcs -ftest-coverage
@@ -143,7 +143,7 @@ endif
ifeq ($(CONFIG_LTO),y)
CFLAGS += -flto
-LDFLAGS-$(clang) += -plugin LLVMgold.so
+LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
# Would like to handle all object files as bitcode, but objects made from
# pure asm are in a different format and have to be collected separately.
# Mirror the directory tree, collecting them as built_in_bin.o.
@@ -197,7 +197,7 @@ SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
%.o: %.c Makefile
ifeq ($(CONFIG_ENFORCE_UNIQUE_SYMBOLS),y)
$(CC) $(CFLAGS) -c $< -o $(@D)/.$(@F).tmp
-ifeq ($(clang),y)
+ifeq ($(CONFIG_CC_IS_CLANG),y)
$(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
else
$(OBJCOPY) --redefine-sym $(<F)=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
@@ -12,7 +12,7 @@ CFLAGS += '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CU
# Prevent floating-point variables from creeping into Xen.
CFLAGS += -msoft-float
-ifeq ($(clang),y)
+ifeq ($(CONFIG_CC_IS_CLANG),y)
# Note: Any test which adds -no-integrated-as will cause subsequent tests to
# succeed, and not trigger further additions.
#
@@ -1,5 +1,5 @@
obj-y += coverage.o
-ifneq ($(clang),y)
+ifneq ($(CONFIG_CC_IS_CLANG),y)
obj-y += gcov_base.o gcov.o
obj-y += $(call cc-ifversion,-lt,0407, \
gcc_3_4.o, $(call cc-ifversion,-lt,0409, \
@@ -36,7 +36,7 @@ cppflags-y := -include public/xen-compat.h -DXEN_GENERATING_COMPA
cppflags-$(CONFIG_X86) += -m32
# 8-byte types are 4-byte aligned on x86_32 ...
-ifeq ($(clang),y)
+ifeq ($(CONFIG_CC_IS_CLANG),y)
prefix-$(CONFIG_X86) := \#pragma pack(push, 4)
suffix-$(CONFIG_X86) := \#pragma pack(pop)
else
Kconfig can check if $(CC) is clang or not, if it is CONFIG_CC_IS_CLANG will be set. With that patch, the hypervisor can be built using clang by running `make CC=clang CXX=clang++` without needed to provide an extra clang parameter. `make clang=y` still works as Config.mk will set CC and CXX. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- xen/Rules.mk | 8 ++++---- xen/arch/x86/Rules.mk | 2 +- xen/common/coverage/Makefile | 2 +- xen/include/Makefile | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)