1 | # -*- mode: Makefile; -*- |
---|
2 | |
---|
3 | # A debug build of Xen and tools? |
---|
4 | debug ?= n |
---|
5 | |
---|
6 | XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ \ |
---|
7 | -e s/ppc/powerpc/ -e s/i86pc/x86_32/) |
---|
8 | XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH) |
---|
9 | XEN_OS ?= $(shell uname -s) |
---|
10 | |
---|
11 | ifeq ($(XEN_TARGET_ARCH),x86_32) |
---|
12 | XEN_TARGET_X86_PAE ?= y |
---|
13 | endif |
---|
14 | |
---|
15 | CONFIG_$(XEN_OS) := y |
---|
16 | |
---|
17 | SHELL ?= /bin/sh |
---|
18 | |
---|
19 | # Tools to run on system hosting the build |
---|
20 | HOSTCC = gcc |
---|
21 | HOSTCFLAGS = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer |
---|
22 | |
---|
23 | DISTDIR ?= $(XEN_ROOT)/dist |
---|
24 | DESTDIR ?= / |
---|
25 | |
---|
26 | include $(XEN_ROOT)/config/$(XEN_OS).mk |
---|
27 | include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk |
---|
28 | |
---|
29 | ifneq ($(EXTRA_PREFIX),) |
---|
30 | EXTRA_INCLUDES += $(EXTRA_PREFIX)/include |
---|
31 | EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBDIR) |
---|
32 | endif |
---|
33 | |
---|
34 | # cc-option: Check if compiler supports first option, else fall back to second. |
---|
35 | # Usage: cflags-y += $(call cc-option,$(CC),-march=winchip-c6,-march=i586) |
---|
36 | cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \ |
---|
37 | /dev/null 2>&1`"; then echo "$(2)"; else echo "$(3)"; fi ;) |
---|
38 | |
---|
39 | # cc-ver: Check compiler is at least specified version. Return boolean 'y'/'n'. |
---|
40 | # Usage: ifeq ($(call cc-ver,$(CC),0x030400),y) |
---|
41 | cc-ver = $(shell if [ $$((`$(1) -dumpversion | awk -F. \ |
---|
42 | '{ printf "0x%02x%02x%02x", $$1, $$2, $$3}'`)) -ge $$(($(2))) ]; \ |
---|
43 | then echo y; else echo n; fi ;) |
---|
44 | |
---|
45 | # cc-ver-check: Check compiler is at least specified version, else fail. |
---|
46 | # Usage: $(call cc-ver-check,CC,0x030400,"Require at least gcc-3.4") |
---|
47 | cc-ver-check = $(eval $(call cc-ver-check-closure,$(1),$(2),$(3))) |
---|
48 | define cc-ver-check-closure |
---|
49 | ifeq ($$(call cc-ver,$$($(1)),$(2)),n) |
---|
50 | override $(1) = echo "*** FATAL BUILD ERROR: "$(3) >&2; exit 1; |
---|
51 | cc-option := n |
---|
52 | endif |
---|
53 | endef |
---|
54 | |
---|
55 | ifneq ($(debug),y) |
---|
56 | CFLAGS += -DNDEBUG |
---|
57 | else |
---|
58 | CFLAGS += -g |
---|
59 | endif |
---|
60 | |
---|
61 | CFLAGS += -std=gnu99 |
---|
62 | |
---|
63 | CFLAGS += -Wall -Wstrict-prototypes |
---|
64 | |
---|
65 | # -Wunused-value makes GCC 4.x too aggressive for my taste: ignoring the |
---|
66 | # result of any casted expression causes a warning. |
---|
67 | CFLAGS += -Wno-unused-value |
---|
68 | |
---|
69 | HOSTCFLAGS += $(call cc-option,$(HOSTCC),-Wdeclaration-after-statement,) |
---|
70 | CFLAGS += $(call cc-option,$(CC),-Wdeclaration-after-statement,) |
---|
71 | |
---|
72 | LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i)) |
---|
73 | CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i)) |
---|
74 | |
---|
75 | # If ACM_SECURITY = y, then the access control module is compiled |
---|
76 | # into Xen and the policy type can be set by the boot policy file |
---|
77 | # y - Build the Xen ACM framework |
---|
78 | # n - Do not build the Xen ACM framework |
---|
79 | ACM_SECURITY ?= n |
---|
80 | |
---|
81 | # If ACM_SECURITY = y and no boot policy file is installed, |
---|
82 | # then the ACM defaults to the security policy set by |
---|
83 | # ACM_DEFAULT_SECURITY_POLICY |
---|
84 | # Supported models are: |
---|
85 | # ACM_NULL_POLICY |
---|
86 | # ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY |
---|
87 | ACM_DEFAULT_SECURITY_POLICY ?= ACM_NULL_POLICY |
---|
88 | |
---|
89 | # Optional components |
---|
90 | XENSTAT_XENTOP ?= y |
---|
91 | VTPM_TOOLS ?= n |
---|
92 | LIBXENAPI_BINDINGS ?= n |
---|
93 | XENFB_TOOLS ?= n |
---|
94 | PYTHON_TOOLS ?= y |
---|
95 | |
---|
96 | -include $(XEN_ROOT)/.config |
---|