correct apic probe of 2.6.32.41 linux kernel
[linux-based-stubdoms.git] / Makefile
blob89a0f91b791764c2d42f6f88e0f3ba716d5a2baf
1 XEN_ROOT = $(CURDIR)/..
2 STUBDOM_ARCH = x86_32
4 #download linux kernel
5 LINUX_STUBDOM_GIT_URL ?= git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git
6 LINUX_SRCDIR = linux-src-$(STUBDOM_ARCH).git
7 XEN_GIT_ORIGIN ?= xen
8 XEN_LINUX_GIT_REMOTEBRANCH ?= xen/stable-2.6.32.x
9 XEN_LINUX_GIT_LOCALBRANCH ?= $(XEN_LINUX_GIT_REMOTEBRANCH)
10 XEN_LINUX_GITREV ?= $(XEN_GIT_ORIGIN)/$(XEN_LINUX_GIT_REMOTEBRANCH)
12 #build linux-stubdom kernel
13 IMAGE_TARGET ?= bzImage
14 LINUX_DIR = build-linux-$(STUBDOM_ARCH)
15 INSTALL_PATH = install-stubdom-$(STUBDOM_ARCH)
16 LINUX_ARCH = $$(sh $(CURDIR)/select-linux-arch $(LINUX_SRCDIR) $(STUBDOM_ARCH))
18 #download upstream qemu
19 IOEMU_GIT_URL ?= git://xenbits.xen.org/people/aperard/qemu-dm.git
20 IOEMU_SRCDIR = ioemu-src-$(STUBDOM_ARCH).git
21 IOEMU_GIT_ORIGIN ?= origin
22 IOEMU_GIT_REMOTEBRANCH ?= qemu-dm-v15
23 IOEMU_GIT_LOCALBRANCH ?= $(IOEMU_GIT_REMOTEBRANCH)
24 IOEMU_GITREV ?= $(IOEMU_GIT_ORIGIN)/$(IOEMU_GIT_REMOTEBRANCH)
26 #download udev
27 UDEV_URL?= http://www.us.kernel.org/pub/linux/utils/kernel/hotplug
28 UDEV_VERSION=100
30 #build ioemu
31 IOEMU_DIR = build-ioemu-$(STUBDOM_ARCH)
34 TARGETS=ioemu
36 GIT ?= git
38 WGET=wget -c
40 .PHONY: all
41 all: ioemu-stubdom
43 ######################
44 # download source code
45 ######################
47 .PHONY: download-linux-src
48 download-linux-src:
49 if ! [ -d $(LINUX_SRCDIR) ]; then \
50 rm -rf $(LINUX_SRCDIR) $(LINUX_SRCDIR).tmp; \
51 mkdir $(LINUX_SRCDIR).tmp; rmdir $(LINUX_SRCDIR).tmp; \
52 $(GIT) clone -o $(XEN_GIT_ORIGIN) -n $(LINUX_STUBDOM_GIT_URL) $(LINUX_SRCDIR).tmp; \
53 (cd $(LINUX_SRCDIR).tmp; git checkout -b $(XEN_LINUX_GIT_LOCALBRANCH) $(XEN_LINUX_GITREV); git checkout); \
54 mv $(LINUX_SRCDIR).tmp $(LINUX_SRCDIR); \
55 patch -d $(LINUX_SRCDIR) -p1 < linux-src.patch; \
58 .PHONY: download-ioemu-src
59 download-ioemu-src:
60 if ! [ -d $(IOEMU_SRCDIR) ]; then \
61 rm -rf $(IOEMU_SRCDIR) $(IOEMU_SRCDIR).tmp; \
62 mkdir $(IOEMU_SRCDIR).tmp; rmdir $(IOEMU_SRCDIR).tmp; \
63 $(GIT) clone -o $(IOEMU_GIT_ORIGIN) -n $(IOEMU_GIT_URL) $(IOEMU_SRCDIR).tmp; \
64 (cd $(IOEMU_SRCDIR).tmp; git checkout -b $(IOEMU_GIT_LOCALBRANCH) $(IOEMU_GITREV); git checkout);\
65 mv $(IOEMU_SRCDIR).tmp $(IOEMU_SRCDIR);\
68 ################
69 # linux-stubdom
70 ################
72 TARGETS_LINUX=$(addprefix linux-stubdom-$(STUBDOM_ARCH)-,$(TARGETS))
73 LINUX_STUBDOM_CONFIG=$(addprefix linux-config-,$(TARGETS))
74 MAKE_RAMDISK_SCRIPT=$(addprefix mk-ramdisk-,$(TARGETS))
75 $(TARGETS_LINUX):download-linux-src
76 mkdir -p $@
77 mkdir -p $@/$(LINUX_DIR)
78 mkdir -p $@/$(INSTALL_PATH)
79 if [ ! -f $@/$(LINUX_DIR)/.config ]; then \
80 cp $(LINUX_STUBDOM_CONFIG) $@/$(LINUX_DIR)/.config;\
81 $(MAKE) -C $(LINUX_SRCDIR) ARCH=$(LINUX_ARCH) menuconfig O=$$(/bin/pwd)/$@/$(LINUX_DIR);\
82 $(MAKE) -C $@/$(LINUX_DIR) ARCH=$(LINUX_ARCH) prepare;\
84 if grep "^CONFIG_MODULES=" $@/$(LINUX_DIR)/.config ; then \
85 $(MAKE) -C $@/$(LINUX_DIR) ARCH=$(LINUX_ARCH) modules || exit 1 ; \
86 $(MAKE) -C $@/$(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(CURDIR)/$@/$(INSTALL_PATH) modules_install ; \
88 $(MAKE) -C $@/$(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$@/$(INSTALL_PATH) $(IMAGE_TARGET)
89 @cp -v $@/$(LINUX_DIR)/arch/$(LINUX_ARCH)/boot/bzImage $@/$(INSTALL_PATH)/vmlinuz-$(TARGETS)
90 @cp -v $@/$(LINUX_DIR)/.config $@/$(INSTALL_PATH)/config-$(TARGETS)
91 @cp -v $@/$(LINUX_DIR)/System.map $@/$(INSTALL_PATH)/System.map-$(TARGETS)
93 #######
94 # ioemu
95 #######
97 linux-stubdom-$(STUBDOM_ARCH)-ioemu/link-ioemu-dir:
98 mkdir -p linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(IOEMU_DIR)
99 set -e; \
100 cd linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(IOEMU_DIR); \
101 (cd $(CURDIR)/$(IOEMU_SRCDIR) && find * -type d -print) | xargs mkdir -p; \
102 (cd $(CURDIR)/$(IOEMU_SRCDIR) && find * ! -type l -type f $(addprefix ! -name , \
103 '*.[oda1]' 'config-*' config.mak \
104 '*.html' '*.pod' \
105 )) | \
106 while read f; do rm -f "$$f"; ln -s "$(CURDIR)/$(IOEMU_SRCDIR)/$$f" "$$f"; done
107 patch -d linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(IOEMU_DIR) -p1 < ioemu.patch
108 touch linux-stubdom-$(STUBDOM_ARCH)-ioemu/link-ioemu-dir
110 .PHONY: ioemu
111 ioemu: download-ioemu-src linux-stubdom-$(STUBDOM_ARCH)-ioemu/link-ioemu-dir
112 $(warning "build upstream qemu")
113 (cd linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(IOEMU_DIR); \
114 sh configure --target-list=i386-softmmu --enable-xen --disable-werror --enable-stubdom --extra-cflags=-I$(XEN_ROOT)/dist/install/usr/include --extra-ldflags=-L$(XEN_ROOT)/dist/install/usr/lib; \
115 $(MAKE) install;\
116 cp -af i386-softmmu/qemu ../$(INSTALL_PATH))
119 ######
120 # udev
121 ######
123 udev-$(UDEV_VERSION).tar.bz2:
124 $(WGET) $(UDEV_URL)/$@
126 .PHONY: udev
127 udev: udev-$(UDEV_VERSION).tar.bz2
128 tar xjvf $<
129 ( cd udev-$(UDEV_VERSION); \
130 $(MAKE) ; \
131 cp -af udevd ../linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(INSTALL_PATH);\
132 cp -af udevstart ../linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(INSTALL_PATH))
135 ###########################
136 # functional-linux-stubdoms
137 ###########################
139 .PHONY: ioemu-stubdom
140 ioemu-stubdom: linux-stubdom-$(STUBDOM_ARCH)-ioemu ioemu udev
141 $(warning "ioemu-linux-stubdom")
142 sh $(MAKE_RAMDISK_SCRIPT) linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(INSTALL_PATH) ramdisk-$(TARGETS) ioemu
144 .PHONY: xenstore-stubdom
145 xenstore-linux-stubdom:
146 $(warning "xenstore-linux-stubdom")
149 #########
150 # install
151 #########
155 #######
156 # clean
157 #######
159 # Only clean the build stuff
160 .PHONY: clean
161 clean:
162 rm -fr linux-stubdom-$(STUBDOM_ARCH)-ioemu
163 rm -fr udev-$(UDEV_VERSION)
165 .PHONY: downloadclean
166 downloadclean: clean
167 rm -fr $(LINUX_SRCDIR)
168 rm -fr $(IOEMU_SRCDIR)
169 rm -fr udev-$(UDEV_VERSION).tar.bz2