diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-01-13 08:59:49 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-01-13 08:59:49 +0000 |
commit | 6b1ce5497dcb3becd432853e1666a0f01abe8829 (patch) | |
tree | 4b665419024be40be5c8dac9906d4c991631b904 | |
parent | e2869f9f1c70a6acfe35c16e7e0bd75e2dd93971 (diff) | |
download | xen-6b1ce5497dcb3becd432853e1666a0f01abe8829.tar.gz xen-6b1ce5497dcb3becd432853e1666a0f01abe8829.tar.bz2 xen-6b1ce5497dcb3becd432853e1666a0f01abe8829.zip |
build: Define cc-option-add to immediately add options to CFLAGS
without deferring the test execution of CC. This avoids extra
executions of CC every time CFLAGS is expanded.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
-rw-r--r-- | Config.mk | 13 | ||||
-rw-r--r-- | tools/firmware/Rules.mk | 6 | ||||
-rw-r--r-- | tools/tests/blowfish.mk | 6 | ||||
-rw-r--r-- | tools/vnet/libxutil/Makefile | 3 | ||||
-rw-r--r-- | xen/arch/x86/Rules.mk | 6 |
5 files changed, 22 insertions, 12 deletions
@@ -38,6 +38,15 @@ endif cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \ /dev/null 2>&1`"; then echo "$(2)"; else echo "$(3)"; fi ;) +# cc-option-add: Add an option to compilation flags, but only if supported. +# Usage: $(call cc-option-add CFLAGS,CC,-march=winchip-c6) +cc-option-add = $(eval $(call cc-option-add-closure,$(1),$(2),$(3))) +define cc-option-add-closure + ifneq ($$(call cc-option,$$($(2)),$(3),n),n) + $(1) += $(3) + endif +endef + # cc-ver: Check compiler is at least specified version. Return boolean 'y'/'n'. # Usage: ifeq ($(call cc-ver,$(CC),0x030400),y) cc-ver = $(shell if [ $$((`$(1) -dumpversion | awk -F. \ @@ -84,8 +93,8 @@ CFLAGS += -Wall -Wstrict-prototypes # result of any casted expression causes a warning. CFLAGS += -Wno-unused-value -HOSTCFLAGS += $(call cc-option,$(HOSTCC),-Wdeclaration-after-statement,) -CFLAGS += $(call cc-option,$(CC),-Wdeclaration-after-statement,) +$(call cc-option-add,HOSTCFLAGS,HOSTCC,-Wdeclaration-after-statement) +$(call cc-option-add,CFLAGS,CC,-Wdeclaration-after-statement) LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i)) CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i)) diff --git a/tools/firmware/Rules.mk b/tools/firmware/Rules.mk index e3dbc0d206..901bbf2434 100644 --- a/tools/firmware/Rules.mk +++ b/tools/firmware/Rules.mk @@ -13,9 +13,9 @@ endif CFLAGS += -Werror # Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +$(call cc-option-add,CFLAGS,CC,-nopie) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) # Extra CFLAGS suitable for an embedded type of environment. CFLAGS += -fno-builtin -msoft-float diff --git a/tools/tests/blowfish.mk b/tools/tests/blowfish.mk index 203eb50790..ae7888267d 100644 --- a/tools/tests/blowfish.mk +++ b/tools/tests/blowfish.mk @@ -5,9 +5,9 @@ CFLAGS = include $(XEN_ROOT)/tools/Rules.mk # Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +$(call cc-option-add,CFLAGS,CC,-nopie) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) CFLAGS += -fno-builtin -msoft-float diff --git a/tools/vnet/libxutil/Makefile b/tools/vnet/libxutil/Makefile index 889c55c32f..4d589b1b7f 100644 --- a/tools/vnet/libxutil/Makefile +++ b/tools/vnet/libxutil/Makefile @@ -24,7 +24,8 @@ LIB_SRCS += util.c LIB_OBJS := $(LIB_SRCS:.c=.o) PIC_OBJS := $(LIB_SRCS:.c=.opic) -CFLAGS += -Werror -fno-strict-aliasing $(call cc-option,$(CC),-fgnu89-inline,) +$(call cc-option-add,CFLAGS,CC,-fgnu89-inline) +CFLAGS += -Werror -fno-strict-aliasing CFLAGS += -O3 #CFLAGS += -g diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk index 5c2198f5cd..e9e1d5b952 100644 --- a/xen/arch/x86/Rules.mk +++ b/xen/arch/x86/Rules.mk @@ -26,9 +26,9 @@ CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default CFLAGS += -msoft-float # Disable PIE/SSP if GCC supports them. They can break us. -CFLAGS += $(call cc-option,$(CC),-nopie,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector,) -CFLAGS += $(call cc-option,$(CC),-fno-stack-protector-all,) +$(call cc-option-add,CFLAGS,CC,-nopie) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector) +$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all) ifeq ($(supervisor_mode_kernel),y) CFLAGS += -DCONFIG_X86_SUPERVISOR_MODE_KERNEL=1 |