diff mbox series

[XEN,7/8] xen: Use $(CONFIG_CC_IS_CLANG) instead of $(clang) in Makefile

Message ID 20191212182740.2190199-8-anthony.perard@citrix.com (mailing list archive)
State Superseded
Headers show
Series xen: Kconfig update with few extra | expand

Commit Message

Anthony PERARD Dec. 12, 2019, 6:27 p.m. UTC
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(-)

Comments

Andrew Cooper Dec. 12, 2019, 7 p.m. UTC | #1
On 12/12/2019 18:27, Anthony PERARD wrote:
> 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>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

This is a massive improvement on the status quo.

Do we perhaps want to tweak the relevant CI scripts and other build
instructions now that clang=y is obsolete?

~Andrew
Anthony PERARD Dec. 13, 2019, 2:37 p.m. UTC | #2
On Thu, Dec 12, 2019 at 07:00:35PM +0000, Andrew Cooper wrote:
> On 12/12/2019 18:27, Anthony PERARD wrote:
> > 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>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> This is a massive improvement on the status quo.
> 
> Do we perhaps want to tweak the relevant CI scripts and other build
> instructions now that clang=y is obsolete?

No, clang=y isn't obsolete yet. We need to change the tools side as well,
there's a few $(clang) in there. So we need one more patch to remove
them.
diff mbox series

Patch

diff --git a/xen/Rules.mk b/xen/Rules.mk
index d053dbd26526..fcdafd029342 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -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 $@
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index a2c257fb95b2..b98e14e28c5a 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -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.
 #
diff --git a/xen/common/coverage/Makefile b/xen/common/coverage/Makefile
index b509e51f960b..63f98c71d6b5 100644
--- a/xen/common/coverage/Makefile
+++ b/xen/common/coverage/Makefile
@@ -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, \
diff --git a/xen/include/Makefile b/xen/include/Makefile
index c3e0283d347f..fde0ca013121 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -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