The changed logic allows having *-xen.[cS] files anywhere in the tree, without a need to modify the corresponding Makefiles. The patch also cleans up Makefiles modified for Xen as far as possible. As before, the patch works on 2.6.22 and was just made apply to the aged Xen repository. Signed-off-by: Jan Beulich <jbeulich@novell.com> Index: head-2007-07-10/arch/i386/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/i386/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -129,7 +129,6 @@ PHONY += zImage bzImage compressed zlilo ifdef CONFIG_XEN CPPFLAGS := -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(CPPFLAGS) -head-y := arch/i386/kernel/head-xen.o arch/i386/kernel/init_task-xen.o boot := arch/i386/boot-xen .PHONY: vmlinuz all: vmlinuz Index: head-2007-07-10/arch/i386/kernel/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/kernel/Makefile 2007-07-10 11:14:07.000000000 +0200 +++ head-2007-07-10/arch/i386/kernel/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -43,13 +43,8 @@ obj-$(CONFIG_K8_NB) += k8.o EXTRA_AFLAGS := -traditional obj-$(CONFIG_SCx200) += scx200.o +obj-$(CONFIG_XEN) += fixup.o -ifdef CONFIG_XEN -vsyscall_note := vsyscall-note-xen.o -else -vsyscall_note := vsyscall-note.o -endif - # vsyscall.o contains the vsyscall DSO images as __initdata. # We must build both images before we can assemble it. # Note: kbuild does not track this dependency due to usage of .incbin @@ -74,7 +69,7 @@ SYSCFLAGS_vsyscall-int80.so = $(vsyscall $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \ $(obj)/vsyscall-%.so: $(src)/vsyscall.lds \ - $(obj)/vsyscall-%.o $(obj)/$(vsyscall_note) FORCE + $(obj)/vsyscall-%.o $(obj)/vsyscall-note.o FORCE $(call if_changed,syscall) # We also create a special relocatable object that should mirror the symbol @@ -86,20 +81,11 @@ $(obj)/built-in.o: ld_flags += -R $(obj) SYSCFLAGS_vsyscall-syms.o = -r $(obj)/vsyscall-syms.o: $(src)/vsyscall.lds \ - $(obj)/vsyscall-sysenter.o $(obj)/$(vsyscall_note) FORCE + $(obj)/vsyscall-sysenter.o $(obj)/vsyscall-note.o FORCE $(call if_changed,syscall) +early_printk-y += ../../x86_64/kernel/early_printk.o k8-y += ../../x86_64/kernel/k8.o -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen - -obj-y += fixup.o -microcode-$(subst m,y,$(CONFIG_MICROCODE)) := microcode-xen.o -n-obj-xen := i8259.o timers/ reboot.o smpboot.o trampoline.o - -obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) -obj-y := $(call cherrypickxen, $(obj-y)) -extra-y := $(call cherrypickxen, $(extra-y)) -%/head-xen.o %/head-xen.s: EXTRA_AFLAGS :-endif +disabled-obj-$(CONFIG_XEN) := i8259.o reboot.o smpboot.o trampoline.o +%/head.o %/head.s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :Index: head-2007-07-10/arch/i386/kernel/acpi/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/kernel/acpi/Makefile 2007-07-10 11:04:27.000000000 +0200 +++ head-2007-07-10/arch/i386/kernel/acpi/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -8,7 +8,3 @@ ifneq ($(CONFIG_ACPI_PROCESSOR),) obj-y += cstate.o processor.o endif -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen -obj-y := $(call cherrypickxen, $(obj-y), $(src)) -endif Index: head-2007-07-10/arch/i386/kernel/cpu/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/kernel/cpu/Makefile 2007-07-10 11:19:09.000000000 +0200 +++ head-2007-07-10/arch/i386/kernel/cpu/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -20,7 +20,3 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq/ obj-$(CONFIG_MTRR) += mtrr/ obj-$(CONFIG_CPU_FREQ) += cpufreq/ -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen -obj-y := $(call cherrypickxen, $(obj-y), $(src)) -endif Index: head-2007-07-10/arch/i386/kernel/cpu/mtrr/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/kernel/cpu/mtrr/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/i386/kernel/cpu/mtrr/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -1,10 +1,4 @@ obj-y += cyrix.o obj-y += centaur.o -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen -n-obj-xen := generic.o state.o amd.o cyrix.o centaur.o - -obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) -obj-y := $(call cherrypickxen, $(obj-y)) -endif +obj-$(CONFIG_XEN) := main.o if.o Index: head-2007-07-10/arch/i386/kernel/early_printk-xen.c ==================================================================--- head-2007-07-10.orig/arch/i386/kernel/early_printk-xen.c 2007-07-10 10:29:23.000000000 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ - -#include "../../x86_64/kernel/early_printk-xen.c" Index: head-2007-07-10/arch/i386/mm/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/mm/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/i386/mm/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -8,11 +8,4 @@ obj-$(CONFIG_NUMA) += discontig.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_HIGHMEM) += highmem.o obj-$(CONFIG_BOOT_IOREMAP) += boot_ioremap.o - -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen - -obj-y += hypervisor.o - -obj-y := $(call cherrypickxen, $(obj-y)) -endif +obj-$(CONFIG_XEN) += hypervisor.o Index: head-2007-07-10/arch/i386/pci/Makefile ==================================================================--- head-2007-07-10.orig/arch/i386/pci/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/i386/pci/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -16,8 +16,3 @@ pci-$(CONFIG_X86_VISWS) := visws.o fixu pci-$(CONFIG_X86_NUMAQ) := numa.o irq.o obj-y += $(pci-y) common.o - -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen -obj-y := $(call cherrypickxen, $(obj-y)) -endif Index: head-2007-07-10/arch/x86_64/Makefile ==================================================================--- head-2007-07-10.orig/arch/x86_64/Makefile 2007-07-10 11:19:26.000000000 +0200 +++ head-2007-07-10/arch/x86_64/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -94,7 +94,6 @@ PHONY += bzImage bzlilo install archmrpr ifdef CONFIG_XEN CPPFLAGS := -Iinclude$(if $(KBUILD_SRC),2)/asm/mach-xen $(CPPFLAGS) -head-y := arch/x86_64/kernel/head-xen.o arch/x86_64/kernel/head64-xen.o arch/x86_64/kernel/init_task.o LDFLAGS_vmlinux := -e startup_64 boot := arch/i386/boot-xen .PHONY: vmlinuz Index: head-2007-07-10/arch/x86_64/ia32/Makefile ==================================================================--- head-2007-07-10.orig/arch/x86_64/ia32/Makefile 2007-07-10 11:19:31.000000000 +0200 +++ head-2007-07-10/arch/x86_64/ia32/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -37,15 +37,8 @@ $(obj)/vsyscall-%.so: $(src)/vsyscall.ld ifdef CONFIG_XEN AFLAGS_vsyscall-int80.o = -m32 -Wa,-32 -Iarch/i386/kernel -CFLAGS_syscall32-xen.o += -DUSE_INT80 -AFLAGS_syscall32_syscall-xen.o += -DUSE_INT80 +CFLAGS_syscall32.o += -DUSE_INT80 +AFLAGS_syscall32_syscall.o += -DUSE_INT80 -$(obj)/syscall32_syscall-xen.o: \ - $(foreach F,int80 sysenter syscall,$(obj)/vsyscall-$F.so) - -targets := $(foreach F,int80 sysenter syscall,vsyscall-$F.o vsyscall-$F.so) - -include $(srctree)/scripts/Makefile.xen - -obj-y := $(call cherrypickxen, $(obj-y)) +$(obj)/syscall32_syscall.o: $(obj)/vsyscall-int80.so endif Index: head-2007-07-10/arch/x86_64/kernel/Makefile ==================================================================--- head-2007-07-10.orig/arch/x86_64/kernel/Makefile 2007-07-10 11:19:11.000000000 +0200 +++ head-2007-07-10/arch/x86_64/kernel/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -64,18 +64,8 @@ alternative-y += ../../i386/kernel/alt msr-$(subst m,y,$(CONFIG_X86_MSR)) += ../../i386/kernel/msr.o alternative-y += ../../i386/kernel/alternative.o -ifdef CONFIG_XEN -time-y += ../../i386/kernel/time-xen.o -pci-dma-y += ../../i386/kernel/pci-dma-xen.o -microcode-$(subst m,y,$(CONFIG_MICROCODE)) := ../../i386/kernel/microcode-xen.o -quirks-y := ../../i386/kernel/quirks-xen.o +time-$(CONFIG_XEN) += ../../i386/kernel/time.o +pci-dma-$(CONFIG_XEN) += ../../i386/kernel/pci-dma.o -n-obj-xen := i8259.o reboot.o i8237.o smpboot.o trampoline.o - -include $(srctree)/scripts/Makefile.xen - -obj-y := $(call filterxen, $(obj-y), $(n-obj-xen)) -obj-y := $(call cherrypickxen, $(obj-y)) -extra-y := $(call cherrypickxen, $(extra-y)) -%/head-xen.o %/head-xen.s: EXTRA_AFLAGS :-endif +disabled-obj-$(CONFIG_XEN) := i8259.o reboot.o smpboot.o trampoline.o +%/head.o %/head.s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :Index: head-2007-07-10/arch/x86_64/mm/Makefile ==================================================================--- head-2007-07-10.orig/arch/x86_64/mm/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/x86_64/mm/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -7,15 +7,8 @@ obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpag obj-$(CONFIG_NUMA) += numa.o obj-$(CONFIG_K8_NUMA) += k8topology.o obj-$(CONFIG_ACPI_NUMA) += srat.o +obj-$(CONFIG_XEN) += hypervisor.o hugetlbpage-y = ../../i386/mm/hugetlbpage.o - -ifdef CONFIG_XEN -include $(srctree)/scripts/Makefile.xen - -ioremap-y += ../../i386/mm/ioremap-xen.o -hypervisor-y += ../../i386/mm/hypervisor.o -obj-y += hypervisor.o - -obj-y := $(call cherrypickxen, $(obj-y)) -endif +ioremap-$(CONFIG_XEN) := ../../i386/mm/ioremap.o +hypervisor-y := ../../i386/mm/hypervisor.o Index: head-2007-07-10/arch/x86_64/pci/Makefile ==================================================================--- head-2007-07-10.orig/arch/x86_64/pci/Makefile 2007-07-10 10:29:24.000000000 +0200 +++ head-2007-07-10/arch/x86_64/pci/Makefile 2007-07-10 11:19:31.000000000 +0200 @@ -30,10 +30,3 @@ i386-y += ../../i386/pci/i386.o fixup-y += ../../i386/pci/fixup.o i386-y += ../../i386/pci/i386.o init-y += ../../i386/pci/init.o - -ifdef CONFIG_XEN -irq-y := ../../i386/pci/irq-xen.o -include $(srctree)/scripts/Makefile.xen - -obj-y := $(call cherrypickxen, $(obj-y)) -endif Index: head-2007-07-10/scripts/Makefile.build ==================================================================--- head-2007-07-10.orig/scripts/Makefile.build 2007-07-09 01:32:17.000000000 +0200 +++ head-2007-07-10/scripts/Makefile.build 2007-07-10 11:19:32.000000000 +0200 @@ -68,6 +68,18 @@ ifndef obj $(warning kbuild: Makefile.build is included improperly) endif +ifeq ($(CONFIG_XEN),y) +$(objtree)/scripts/Makefile.xen: $(srctree)/scripts/Makefile.xen.awk $(srctree)/scripts/Makefile.build + @echo '' Updating $@'' + @$(AWK) -f $< $(filter-out $<,$^) >$@ + +xen-src-single-used-m := $(patsubst $(srctree)/%,%,$(wildcard $(addprefix $(srctree)/,$(single-used-m:.o=-xen.c)))) +xen-single-used-m := $(xen-src-single-used-m:-xen.c=.o) +single-used-m := $(filter-out $(xen-single-used-m),$(single-used-m)) + +-include $(objtree)/scripts/Makefile.xen +endif + # ========================================================================== ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),) Index: head-2007-07-10/scripts/Makefile.lib ==================================================================--- head-2007-07-10.orig/scripts/Makefile.lib 2007-07-09 01:32:17.000000000 +0200 +++ head-2007-07-10/scripts/Makefile.lib 2007-07-10 11:19:32.000000000 +0200 @@ -13,6 +13,12 @@ obj-m := $(filter-out $(obj-y),$(obj-m)) lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m))) +# Remove objects forcibly disabled + +obj-y := $(filter-out $(disabled-obj-y),$(obj-y)) +obj-m := $(filter-out $(disabled-obj-y),$(obj-m)) +lib-y := $(filter-out $(disabled-obj-y),$(lib-y)) + # Handle objects in subdirs # --------------------------------------------------------------------------- Index: head-2007-07-10/scripts/Makefile.xen ==================================================================--- head-2007-07-10.orig/scripts/Makefile.xen 2007-07-10 10:29:24.000000000 +0200 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ - -# cherrypickxen($1 = allobj) -cherrypickxen = $(foreach var, $(1), \ - $(shell o=$(var); \ - c=$${o%.o}-xen.c; \ - s=$${o%.o}-xen.S; \ - oxen=$${o%.o}-xen.o; \ - [ -f $(srctree)/$(src)/$${c} ] || \ - [ -f $(srctree)/$(src)/$${s} ] \ - && echo $$oxen \ - || echo $(var) ) \ - ) -# filterxen($1 = allobj, $2 = noobjs) -filterxen = $(filter-out $(2), $(1)) Index: head-2007-07-10/scripts/Makefile.xen.awk ==================================================================--- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ head-2007-07-10/scripts/Makefile.xen.awk 2007-07-10 11:19:32.000000000 +0200 @@ -0,0 +1,34 @@ +BEGIN { + is_rule = 0 +} + +/^[[:space:]]*#/ { + next +} + +/^[[:space:]]*$/ { + if (is_rule) + print("") + is_rule = 0 + next +} + +/:[[:space:]]*%\.[cS][[:space:]]/ { + line = gensub(/%.([cS])/, "%-xen.\\1", "g", $0) + line = gensub(/(single-used-m)/, "xen-\\1", "g", line) + print line + is_rule = 1 + next +} + +/^[^\t]$/ { + if (is_rule) + print("") + is_rule = 0 + next +} + +is_rule { + print $0 + next +} _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel