# Choose the best mirror to download linux kernel KERNEL_REPO = http://www.kernel.org LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen # Setup pristine search path PRISTINE_SRC_PATH ?= .:.. vpath pristine-% $(PRISTINE_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 $( $@ || true rm -rf tmp-$@