# 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
# 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)
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
lock_profile ?= n
crash_debug ?= n
frame_pointer ?= n
-clang ?= n
lto ?= n
XEN_ROOT=$(BASEDIR)/..
# LDFLAGS are only passed directly to $(LD)
LDFLAGS += $(LDFLAGS_DIRECT)
+LDFLAGS += $(LDFLAGS-y)
+
include Makefile
# Ensure each subdirectory has exactly one trailing slash.
# 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
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