mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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>
This commit is contained in:
1 parent
e2869f9f1c
commit
6b1ce5497d
5 files changed
+22
-12
No files matched your search
@@ -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))
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||