1XEN_ROOT = $(CURDIR)/../../.. 2 3all: xen-shim 4 5.PHONY: FORCE 6FORCE: 7 8D=xen-root 9 10# Minimun set of files / directories go get Xen to build 11LINK_DIRS=config xen 12LINK_FILES=Config.mk 13 14DEP_DIRS=$(foreach i, $(LINK_DIRS), $(XEN_ROOT)/$(i)) 15DEP_FILES=$(foreach i, $(LINK_FILES), $(XEN_ROOT)/$(i)) 16 17linkfarm.stamp: $(DEP_DIRS) $(DEP_FILES) FORCE 18 mkdir -p $(D) 19 set -e 20 rm -f linkfarm.stamp.tmp 21 $(foreach d, $(LINK_DIRS), \ 22 (mkdir -p $(D)/$(d); \ 23 cd $(D)/$(d); \ 24 find $(XEN_ROOT)/$(d)/ -type d -exec sh -c \ 25 "echo {} | sed 's,^$(XEN_ROOT)/$(d)/,,g' | xargs mkdir -p" \;);) 26 $(foreach d, $(LINK_DIRS), \ 27 (cd $(XEN_ROOT); \ 28 find $(d) ! -type l -type f \ 29 $(addprefix ! -path , '*.[oda1]' '*.d[12]')) \ 30 >> linkfarm.stamp.tmp ; ) 31 $(foreach f, $(LINK_FILES), \ 32 echo $(f) >> linkfarm.stamp.tmp ;) 33 cmp -s linkfarm.stamp.tmp linkfarm.stamp && \ 34 rm linkfarm.stamp.tmp || { \ 35 mv linkfarm.stamp.tmp linkfarm.stamp; \ 36 cat linkfarm.stamp | while read f; \ 37 do rm -f "$(D)/$$f"; ln -s "$(XEN_ROOT)/$$f" "$(D)/$$f"; done \ 38 } 39 40# Copy enough of the tree to build the shim hypervisor 41$(D): linkfarm.stamp 42 $(MAKE) -C $(D)/xen distclean 43 44.PHONY: shim-%config 45shim-%config: $(D) FORCE 46 $(MAKE) -C $(D)/xen $*config \ 47 XEN_CONFIG_EXPERT=y \ 48 KCONFIG_CONFIG=$(CURDIR)/shim.config 49 50xen-shim: $(D) shim-olddefconfig 51 $(MAKE) -C $(D)/xen install-shim \ 52 XEN_CONFIG_EXPERT=y \ 53 KCONFIG_CONFIG=$(CURDIR)/shim.config \ 54 DESTDIR=$(CURDIR) 55 56.PHONY: distclean clean 57distclean clean: 58 rm -f xen-shim *.old 59 rm -rf $(D) 60 rm -f linkfarm.stamp* 61