From 87c604dae49a97875c69069fb2ad5d15a5bade7e Mon Sep 17 00:00:00 2001 From: Tim Deegan Date: Tue, 8 Mar 2011 10:23:52 +0000 Subject: [PATCH] Tidy makefiles to use CFLAGS-$(foo) idiom instead of ifeq. Signed-off-by: Tim Deegan Acked-by: Keir Fraser --- Config.mk | 16 +++++++++++----- config/StdGNU.mk | 8 ++------ xen/Rules.mk | 3 ++- xen/arch/x86/Rules.mk | 6 ++---- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Config.mk b/Config.mk index aee6e5b8ad..9c16c1f2ce 100644 --- a/Config.mk +++ b/Config.mk @@ -23,6 +23,15 @@ DESTDIR ?= / # Allow phony attribute to be listed as dependency rather than fake target .PHONY: .phony +# Use Clang/LLVM instead of GCC? +clang ?= n +ifeq ($(clang),n) +gcc := y +else +gcc := n +endif + + include $(XEN_ROOT)/config/$(XEN_OS).mk include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk @@ -148,12 +157,9 @@ CFLAGS += -Wall -Wstrict-prototypes # result of any casted expression causes a warning. CFLAGS += -Wno-unused-value -ifeq ($(clang),y) # Clang complains about macros that expand to 'if ( ( foo == bar ) ) ...' -CFLAGS += -Wno-parentheses -# And is over-zealous with the printf format lint -CFLAGS += -Wno-format -endif +# and is over-zealous with the printf format lint +CFLAGS-$(clang) += -Wno-parentheses -Wno-format $(call cc-option-add,HOSTCFLAGS,HOSTCC,-Wdeclaration-after-statement) $(call cc-option-add,CFLAGS,CC,-Wdeclaration-after-statement) diff --git a/config/StdGNU.mk b/config/StdGNU.mk index 786efd7e20..25aeb4d819 100644 --- a/config/StdGNU.mk +++ b/config/StdGNU.mk @@ -76,14 +76,10 @@ CFLAGS += -O2 -fomit-frame-pointer else # Less than -O1 produces bad code and large stack frames CFLAGS += -O1 -fno-omit-frame-pointer -ifneq ($(clang),y) -CFLAGS += -fno-optimize-sibling-calls -endif +CFLAGS-$(gcc) += -fno-optimize-sibling-calls endif ifeq ($(lto),y) CFLAGS += -flto -ifeq ($(clang),y) -LDFLAGS += -plugin LLVMgold.so -endif +LDFLAGS-$(clang) += -plugin LLVMgold.so endif diff --git a/xen/Rules.mk b/xen/Rules.mk index 9a9829bcb3..c39706a6c7 100644 --- a/xen/Rules.mk +++ b/xen/Rules.mk @@ -9,7 +9,6 @@ perfc_arrays ?= n lock_profile ?= n crash_debug ?= n frame_pointer ?= n -clang ?= n lto ?= n XEN_ROOT=$(BASEDIR)/.. @@ -83,6 +82,8 @@ AFLAGS += $(AFLAGS-y) $(filter-out -std=gnu%,$(filter-out -flto,$(CFLAGS))) # LDFLAGS are only passed directly to $(LD) LDFLAGS += $(LDFLAGS_DIRECT) +LDFLAGS += $(LDFLAGS-y) + include Makefile # Ensure each subdirectory has exactly one trailing slash. diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk index f951398b60..df7cf34cce 100644 --- a/xen/arch/x86/Rules.mk +++ b/xen/arch/x86/Rules.mk @@ -14,9 +14,7 @@ supervisor_mode_kernel ?= n # Solaris grabs stdarg.h and friends from the system include directory. # Clang likewise. ifneq ($(XEN_OS),SunOS) -ifneq ($(clang),y) -CFLAGS += -nostdinc -endif +CFLAGS-$(gcc) += -nostdinc endif CFLAGS += -fno-builtin -fno-common -Wredundant-decls @@ -52,7 +50,7 @@ x86_32 := n x86_64 := y endif -ifneq ($(clang),y) +ifeq ($(gcc),y) # Require GCC v3.4+ (to avoid issues with alignment constraints in Xen headers) $(call cc-ver-check,CC,0x030400,"Xen requires at least gcc-3.4") endif -- 2.39.5