aboutsummaryrefslogtreecommitdiffstats
path: root/buildconfigs/Rules.mk
blob: 5e7d659a5b4faf80f78a8881f42a42f40bbd113c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
include Config.mk

export DESTDIR

ALLKERNELS = $(patsubst buildconfigs/mk.%,%,$(wildcard buildconfigs/mk.*))
ALLSPARSETREES = $(patsubst %-xen-sparse,%,$(wildcard *-xen-sparse))

# Setup pristine search path
PRISTINE_SRC_PATH	?= .:..
vpath pristine-% $(PRISTINE_SRC_PATH)

# Let XEN_TARGET_ARCH override ARCH.
ifeq ($(XEN_TARGET_ARCH),x86_32)
LINUX_ARCH	?= i386
else
LINUX_ARCH	?= $(XEN_TARGET_ARCH)
endif

# Expand Linux series to Linux version
LINUX_SERIES	?= 2.6
LINUX_VER	?= $(shell grep "^LINUX_VER" buildconfigs/mk.linux-2.6-xen | sed -e 's/.*=[ ]*//')

# Setup Linux search path
LINUX_SRC_PATH	?= .:..
vpath linux-%.tar.bz2 $(LINUX_SRC_PATH)
vpath patch-%.bz2 $(LINUX_SRC_PATH)

# download a pristine Linux kernel tarball if there isn't one in LINUX_SRC_PATH
linux-%.tar.bz2: override _LINUX_VDIR = $(word 1,$(subst ., ,$*)).$(word 2,$(subst ., ,$*))
linux-%.tar.bz2:
	@echo "Cannot find $@ in path $(LINUX_SRC_PATH)"
	wget $(KERNEL_REPO)/pub/linux/kernel/v$(_LINUX_VDIR)/$@ -O./$@

patch-%.bz2: override _LINUX_VDIR = $(word 1,$(subst ., ,$(*F))).$(word 2,$(subst ., ,$(*F)))
patch-%.bz2: override _LINUX_XDIR = $(if $(word 3,$(subst -, ,$(*F))),snapshots,testing)
patch-%.bz2:
	@echo "Cannot find $(@F) in path $(LINUX_SRC_PATH)"
	wget $(KERNEL_REPO)/pub/linux/kernel/v$(_LINUX_VDIR)/$(_LINUX_XDIR)/$(@F) -O./$@

pristine-%: pristine-%/.valid-pristine
	@true

pristine-%/.valid-pristine: %.tar.bz2
	rm -rf tmp-pristine-$* $(@D)
	mkdir -p tmp-pristine-$*
	tar -C tmp-pristine-$* -jxf $<
	-@rm -f tmp-pristine-$*/pax_global_header
	mv tmp-pristine-$*/* $(@D)
	@rm -rf tmp-pristine-$*
	touch $(@D)/.hgskip
	touch $@ # update timestamp to avoid rebuild

PATCHDIRS := $(wildcard patches/*-*)

ifneq ($(PATCHDIRS),)
-include $(patsubst %,%/.makedep,$(PATCHDIRS))

$(patsubst patches/%,patches/%/.makedep,$(PATCHDIRS)): patches/%/.makedep: 
	@echo 'ref-$*/.valid-ref: $$(wildcard patches/$*/*.patch)' >$@

ref-%/.valid-ref: pristine-%/.valid-pristine
	set -e
	rm -rf $(@D)
	cp -al $(<D) $(@D)
	if [ -d patches/$* ] ; then \
	    for i in patches/$*/*.patch ; do patch -d $(@D) -p1 <$$i || exit 1 ; done ; \
	fi
	touch $@ # update timestamp to avoid rebuild
endif

%-prep:
	$(MAKE) -f buildconfigs/mk.$* prep

%-install:
	$(MAKE) -f buildconfigs/mk.$* build

%-dist: DESTDIR=$(DISTDIR)/install
%-dist: %-install
	@: # do nothing

# Legacy dist target
%-build: %-dist
	@: # do nothing

%-delete:
	$(MAKE) -f buildconfigs/mk.$* delete

%-clean:
	$(MAKE) -f buildconfigs/mk.$* clean

%-config:
	$(MAKE) -f buildconfigs/mk.$* config

linux-2.6-xen.patch: ref-linux-$(LINUX_VER)/.valid-ref
	rm -rf tmp-$@
	cp -al $(<D) tmp-$@
	( cd linux-2.6-xen-sparse && bash ./mkbuildtree ../tmp-$@ )	
	diff -Nurp $(patsubst ref%,pristine%,$(<D)) tmp-$@ > $@ || true
	rm -rf tmp-$@

%-xen.patch: ref-%/.valid-ref
	rm -rf tmp-$@
	cp -al $(<D) tmp-$@
	( cd $*-xen-sparse && bash ./mkbuildtree ../tmp-$@ )	
	diff -Nurp $(patsubst ref%,pristine%,$(<D)) tmp-$@ > $@ || true
	rm -rf tmp-$@

%-mrproper:
	$(MAKE) -f buildconfigs/mk.$*-xen mrpropper
	rm -rf pristine-$(*)* ref-$(*)*
	rm -rf $*-xen.patch

.PHONY: config-update-pae
config-update-pae:
ifeq ($(XEN_TARGET_X86_PAE),y)
	sed -e 's!^CONFIG_HIGHMEM4G=y$$!\# CONFIG_HIGHMEM4G is not set!;s!^\# CONFIG_HIGHMEM64G is not set$$!CONFIG_HIGHMEM64G=y!' $(CONFIG_FILE) > $(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE)
else
	grep '^CONFIG_HIGHMEM64G=y' $(CONFIG_FILE) >/dev/null && ( sed -e 's!^CONFIG_HIGHMEM64G=y$$!\# CONFIG_HIGHMEM64G is not set!;s!^\# CONFIG_HIGHMEM4G is not set$$!CONFIG_HIGHMEM4G=y!' $(CONFIG_FILE) > $(CONFIG_FILE)- && mv $(CONFIG_FILE)- $(CONFIG_FILE) ) || true
endif

# never delete any intermediate files.
.SECONDARY: