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@xxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|