XEN_ROOT = $(CURDIR)/../../.. all: xen-shim .PHONY: FORCE FORCE: D=xen-root # Minimun set of files / directories go get Xen to build LINK_DIRS=config xen LINK_FILES=Config.mk DEP_DIRS=$(foreach i, $(LINK_DIRS), $(XEN_ROOT)/$(i)) DEP_FILES=$(foreach i, $(LINK_FILES), $(XEN_ROOT)/$(i)) linkfarm.stamp: $(DEP_DIRS) $(DEP_FILES) FORCE mkdir -p $(D) set -e rm -f linkfarm.stamp.tmp $(foreach d, $(LINK_DIRS), \ (mkdir -p $(D)/$(d); \ cd $(D)/$(d); \ find $(XEN_ROOT)/$(d)/ -type d -exec sh -c \ "echo {} | sed 's,^$(XEN_ROOT)/$(d)/,,g' | xargs mkdir -p" \;);) $(foreach d, $(LINK_DIRS), \ (cd $(XEN_ROOT); \ find $(d) ! -type l -type f \ $(addprefix ! -path , '*.[oda1]' '*.d[12]')) \ >> linkfarm.stamp.tmp ; ) $(foreach f, $(LINK_FILES), \ echo $(f) >> linkfarm.stamp.tmp ;) cmp -s linkfarm.stamp.tmp linkfarm.stamp && \ rm linkfarm.stamp.tmp || { \ mv linkfarm.stamp.tmp linkfarm.stamp; \ cat linkfarm.stamp | while read f; \ do rm -f "$(D)/$$f"; ln -s "$(XEN_ROOT)/$$f" "$(D)/$$f"; done \ } # Copy enough of the tree to build the shim hypervisor $(D): linkfarm.stamp $(MAKE) -C $(D)/xen distclean .PHONY: shim-%config shim-%config: $(D) FORCE $(MAKE) -C $(D)/xen $*config \ XEN_CONFIG_EXPERT=y \ KCONFIG_CONFIG=$(CURDIR)/shim.config xen-shim: $(D) shim-olddefconfig $(MAKE) -C $(D)/xen install-shim \ XEN_CONFIG_EXPERT=y \ KCONFIG_CONFIG=$(CURDIR)/shim.config \ DESTDIR=$(CURDIR) .PHONY: distclean clean distclean clean: rm -f xen-shim *.old rm -rf $(D) rm -f linkfarm.stamp*