[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XEN PATCH v8 47/47] WIP: no more link farming for xen-shim
--- tools/firmware/xen-dir/Makefile | 71 ++------------------------------- 1 file changed, 3 insertions(+), 68 deletions(-) diff --git a/tools/firmware/xen-dir/Makefile b/tools/firmware/xen-dir/Makefile index 6f5e208ab413..a50fdcbb8b17 100644 --- a/tools/firmware/xen-dir/Makefile +++ b/tools/firmware/xen-dir/Makefile @@ -7,74 +7,9 @@ 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)) - -# Exclude some intermediate files and final build products -LINK_EXCLUDES := '*.[isoa]' '*.bin' '*.chk' '*.lnk' '*.gz' '.*' -LINK_EXCLUDES += lexer.lex.? parser.tab.? conf -LINK_EXCLUDES += asm-offsets.h asm-macros.h compile.h '*-autogen.h' -LINK_EXCLUDES += mkelf32 mkreloc symbols config_data.S xen.lds efi.lds -LINK_EXCLUDES += '*.map' xen xen.gz xen.efi xen-syms check.efi - -# To exclude full subtrees or individual files of not sufficiently specific -# names, regular expressions are used: -LINK_EXCLUDE_PATHS := xen/include/compat/.* -LINK_EXCLUDE_PATHS += xen/include/config/.* -LINK_EXCLUDE_PATHS += xen/include/generated/.* -LINK_EXCLUDE_PATHS += xen/arch/x86/boot/reloc[.]S -LINK_EXCLUDE_PATHS += xen/arch/x86/boot/cmdline[.]S - -# This is all a giant mess and doesn't really work. -# -# The correct solution is to fix Xen to be able to do out-of-tree builds. -# -# Until that happens, we set up a linkfarm by iterating over the xen/ tree, -# linking source files. This is repeated each time we enter this directory, -# which poses a problem for a two-step "make; make install" build process. -# -# Any time the list of files to link changes, we relink all files, then -# distclean to take out not-easy-to-classify intermediate files. This is to -# support easy development of the shim, but has a side effect of clobbering -# the already-built shim. -# -# $(LINK_EXCLUDES) and $(LINK_EXCLUDE_DIRS) should be set such that a parallel -# build of shim and xen/ doesn't cause a subsequent `make install` to decide to -# regenerate the linkfarm. This means that all intermediate and final build -# artefacts must be excluded. -linkfarm.stamp: $(DEP_DIRS) $(DEP_FILES) FORCE - mkdir -p $(D) - rm -f linkfarm.stamp.tmp - set -e; \ - $(foreach d, $(LINK_DIRS), \ - (mkdir -p $(D)/$(d); \ - cd $(D)/$(d); \ - find $(XEN_ROOT)/$(d)/ -type d |\ - sed 's,^$(XEN_ROOT)/$(d)/,,g' | xargs mkdir -p .);) \ - $(foreach d, $(LINK_DIRS), \ - (cd $(XEN_ROOT); \ - find $(d) ! -type l -type f $(addprefix ! -name ,$(LINK_EXCLUDES)) \ - | grep -v $(patsubst %,-e '^%$$',$(LINK_EXCLUDE_PATHS))) \ - >> linkfarm.stamp.tmp ; ) \ - $(foreach f, $(LINK_FILES), \ - echo $(f) >> linkfarm.stamp.tmp ;) - cmp -s linkfarm.stamp.tmp linkfarm.stamp && \ - rm linkfarm.stamp.tmp || { \ - cat linkfarm.stamp.tmp | while read f; \ - do rm -f "$(D)/$$f"; ln -s "$(XEN_ROOT)/$$f" "$(D)/$$f"; done; \ - mv linkfarm.stamp.tmp linkfarm.stamp; \ - } - -# Copy enough of the tree to build the shim hypervisor -$(D): linkfarm.stamp - $(MAKE) -C $(D)/xen distclean - -$(D)/xen/.config: $(D) - $(MAKE) -C $(@D) KBUILD_DEFCONFIG=pvshim_defconfig defconfig +$(D)/xen/.config: FORCE + mkdir -p $(@D) + $(MAKE) -f $(XEN_ROOT)/xen/Makefile -C $(@D) KBUILD_DEFCONFIG=pvshim_defconfig defconfig xen-shim: $(D)/xen/.config $(MAKE) -C $(<D) build -- Anthony PERARD
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |