On Tue, Sep 11, 2007 at 12:40:41AM +0200, Andi Kleen wrote:I did not like the vdir hack for a couple of reasons as partly outline by Andi. So starting to wonder why the obvious did not work. For mm/Makefile I wanted to do: diff --git a/arch/x86_64/mm/Makefile b/arch/x86_64/mm/Makefile index d25ac86..6f4addf 100644 --- a/arch/x86_64/mm/Makefile +++ b/arch/x86_64/mm/Makefile @@ -1,11 +1,10 @@ # # Makefile for the linux x86_64-specific parts of the memory manager. # +i386 := ../../../arch/i386/mm obj-y := init.o fault.o ioremap.o extable.o pageattr.o mmap.o -obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o +obj-$(CONFIG_HUGETLB_PAGE) += $(i386)/hugetlbpage.o obj-$(CONFIG_NUMA) += numa.o obj-$(CONFIG_K8_NUMA) += k8topology.o obj-$(CONFIG_ACPI_NUMA) += srat.o - -hugetlbpage-y = ../../i386/mm/hugetlbpage.o And after wondering a bit I came up with following fix for kbuild: diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index fc498fe..ff03b15 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -46,7 +46,7 @@ multi-objs := $(multi-objs-y) $(multi-objs-m) # $(subdir-obj-y) is the list of objects in $(obj-y) which do not live # in the local directory -subdir-obj-y := $(foreach o,$(obj-y),$(if $(filter-out $(o),$(notdir $(o))),$(o))) +subdir-obj-y := $(filter %/built-in.o, $(obj-y)) # $(obj-dirs) is a list of directories that contain object files obj-dirs := $(dir $(multi-objs) $(subdir-obj-y)) subdir-obj-y listed all targets in another dir than current dir but only needed to list built-in.o targets. So after fixig this long standing bug in kbuild I could do the attached cleanup of current x86_64 Makefiles. I will push the kbuild fix in next merge window but due to the ongoing merge talk I dunno about the x86_64 patch. Anyway the kbuild fix needs to be pushed first. Sam arch/x86_64/kernel/Makefile | 37 +++++++++++------------------------- arch/x86_64/kernel/acpi/Makefile | 12 ++++------- arch/x86_64/kernel/cpufreq/Makefile | 18 +++++------------ arch/x86_64/mm/Makefile | 5 +--- arch/x86_64/pci/Makefile | 24 ++++++----------------- scripts/Makefile.lib | 2 - 6 files changed, 33 insertions(+), 65 deletions(-) diff --git a/arch/x86_64/kernel/Makefile b/arch/x86_64/kernel/Makefile index ff5d8c9..ac27cc4 100644 --- a/arch/x86_64/kernel/Makefile +++ b/arch/x86_64/kernel/Makefile @@ -1,25 +1,26 @@ # # Makefile for the linux kernel. # +i386 := ../../../arch/i386/kernel extra-y := head.o head64.o init_task.o vmlinux.lds EXTRA_AFLAGS := -traditional obj-y := process.o signal.o entry.o traps.o irq.o \ ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \ x8664_ksyms.o i387.o syscall.o vsyscall.o \ - setup64.o bootflag.o e820.o reboot.o quirks.o i8237.o \ - pci-dma.o pci-nommu.o alternative.o hpet.o tsc.o bugs.o \ - perfctr-watchdog.o + setup64.o $(i386)/bootflag.o e820.o reboot.o $(i386)/quirks.o $(i386)/i8237.o \ + pci-dma.o pci-nommu.o $(i386)/alternative.o hpet.o tsc.o bugs.o \ + $(i386)/cpu/perfctr-watchdog.o obj-$(CONFIG_STACKTRACE) += stacktrace.o -obj-$(CONFIG_X86_MCE) += mce.o therm_throt.o +obj-$(CONFIG_X86_MCE) += mce.o $(i386)/cpu/mcheck/therm_throt.o obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o obj-$(CONFIG_X86_MCE_AMD) += mce_amd.o obj-$(CONFIG_MTRR) += ../../i386/kernel/cpu/mtrr/ obj-$(CONFIG_ACPI) += acpi/ -obj-$(CONFIG_X86_MSR) += msr.o -obj-$(CONFIG_MICROCODE) += microcode.o -obj-$(CONFIG_X86_CPUID) += cpuid.o +obj-$(CONFIG_X86_MSR) += $(i386)/msr.o +obj-$(CONFIG_MICROCODE) += $(i386)/microcode.o +obj-$(CONFIG_X86_CPUID) += $(i386)/cpuid.o obj-$(CONFIG_SMP) += smp.o smpboot.o trampoline.o tsc_sync.o obj-y += apic.o nmi.o obj-y += io_apic.o mpparse.o genapic.o genapic_flat.o @@ -41,23 +42,9 @@ obj-$(CONFIG_AUDIT) += audit.o obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_PCI) += early-quirks.o -obj-y += topology.o -obj-y += intel_cacheinfo.o -obj-y += addon_cpuid_features.o -obj-y += pcspeaker.o +obj-y += $(i386)/topology.o +obj-y += $(i386)/cpu/intel_cacheinfo.o +obj-y += $(i386)/cpu/addon_cpuid_features.o +obj-y += $(i386)/pcspeaker.o CFLAGS_vsyscall.o := $(PROFILING) -g0 - -therm_throt-y += ../../i386/kernel/cpu/mcheck/therm_throt.o -bootflag-y += ../../i386/kernel/bootflag.o -cpuid-$(subst m,y,$(CONFIG_X86_CPUID)) += ../../i386/kernel/cpuid.o -topology-y += ../../i386/kernel/topology.o -microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o -intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o -addon_cpuid_features-y += ../../i386/kernel/cpu/addon_cpuid_features.o -quirks-y += ../../i386/kernel/quirks.o -i8237-y += ../../i386/kernel/i8237.o -msr-$(subst m,y,$(CONFIG_X86_MSR)) += ../../i386/kernel/msr.o -alternative-y += ../../i386/kernel/alternative.o -pcspeaker-y += ../../i386/kernel/pcspeaker.o -perfctr-watchdog-y += ../../i386/kernel/cpu/perfctr-watchdog.o diff --git a/arch/x86_64/kernel/acpi/Makefile b/arch/x86_64/kernel/acpi/Makefile index 080b996..7879f97 100644 --- a/arch/x86_64/kernel/acpi/Makefile +++ b/arch/x86_64/kernel/acpi/Makefile @@ -1,9 +1,7 @@ -obj-y := boot.o -boot-y := ../../../i386/kernel/acpi/boot.o -obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o +i386 := ../../../../arch/i386/kernel/acpi -ifneq ($(CONFIG_ACPI_PROCESSOR),) -obj-y += processor.o -processor-y := ../../../i386/kernel/acpi/processor.o ../../../i386/kernel/acpi/cstate.o -endif +obj-y := $(i386)/boot.o +obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o +obj-$(CONFIG_ACPI_PROCESSOR) += $(i386)/processor.o +obj-$(CONFIG_ACPI_PROCESSOR) += $(i386)/cstate.o diff --git a/arch/x86_64/kernel/cpufreq/Makefile b/arch/x86_64/kernel/cpufreq/Makefile index 753ce1d..d8dacae 100644 --- a/arch/x86_64/kernel/cpufreq/Makefile +++ b/arch/x86_64/kernel/cpufreq/Makefile @@ -2,16 +2,10 @@ # Reuse the i386 cpufreq drivers # -SRCDIR := ../../../i386/kernel/cpu/cpufreq +i386 := ../../../i386/kernel/cpu/cpufreq -obj-$(CONFIG_X86_POWERNOW_K8) += powernow-k8.o -obj-$(CONFIG_X86_ACPI_CPUFREQ) += acpi-cpufreq.o -obj-$(CONFIG_X86_SPEEDSTEP_CENTRINO) += speedstep-centrino.o -obj-$(CONFIG_X86_P4_CLOCKMOD) += p4-clockmod.o -obj-$(CONFIG_X86_SPEEDSTEP_LIB) += speedstep-lib.o - -powernow-k8-objs := ${SRCDIR}/powernow-k8.o -speedstep-centrino-objs := ${SRCDIR}/speedstep-centrino.o -acpi-cpufreq-objs := ${SRCDIR}/acpi-cpufreq.o -p4-clockmod-objs := ${SRCDIR}/p4-clockmod.o -speedstep-lib-objs := ${SRCDIR}/speedstep-lib.o +obj-$(CONFIG_X86_POWERNOW_K8) += $(i386)/powernow-k8.o +obj-$(CONFIG_X86_ACPI_CPUFREQ) += $(i386)/acpi-cpufreq.o +obj-$(CONFIG_X86_SPEEDSTEP_CENTRINO) += $(i386)/speedstep-centrino.o +obj-$(CONFIG_X86_P4_CLOCKMOD) += $(i386)/p4-clockmod.o +obj-$(CONFIG_X86_SPEEDSTEP_LIB) += $(i386)/speedstep-lib.o diff --git a/arch/x86_64/mm/Makefile b/arch/x86_64/mm/Makefile index d25ac86..6f4addf 100644 --- a/arch/x86_64/mm/Makefile +++ b/arch/x86_64/mm/Makefile @@ -1,11 +1,10 @@ # # Makefile for the linux x86_64-specific parts of the memory manager. # +i386 := ../../../arch/i386/mm obj-y := init.o fault.o ioremap.o extable.o pageattr.o mmap.o -obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o +obj-$(CONFIG_HUGETLB_PAGE) += $(i386)/hugetlbpage.o obj-$(CONFIG_NUMA) += numa.o obj-$(CONFIG_K8_NUMA) += k8topology.o obj-$(CONFIG_ACPI_NUMA) += srat.o - -hugetlbpage-y = ../../i386/mm/hugetlbpage.o diff --git a/arch/x86_64/pci/Makefile b/arch/x86_64/pci/Makefile index c9eddc8..6f69df2 100644 --- a/arch/x86_64/pci/Makefile +++ b/arch/x86_64/pci/Makefile @@ -3,25 +3,15 @@ # # Reuse the i386 PCI subsystem # +i386 := ../../../arch/i386/pci EXTRA_CFLAGS += -Iarch/i386/pci -obj-y := i386.o -obj-$(CONFIG_PCI_DIRECT)+= direct.o -obj-y += fixup.o init.o -obj-$(CONFIG_ACPI) += acpi.o -obj-y += legacy.o irq.o common.o early.o +obj-y := $(i386)/i386.o +obj-$(CONFIG_PCI_DIRECT)+= $(i386)/direct.o +obj-y += $(i386)/fixup.o init.o +obj-$(CONFIG_ACPI) += $(i386)/acpi.o +obj-y += $(i386)/legacy.o $(i386)/irq.o $(i386)/common.o $(i386)/early.o # mmconfig has a 64bit special -obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o mmconfig-shared.o +obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o $(i386)/direct.o $(i386)/mmconfig-shared.o obj-$(CONFIG_NUMA) += k8-bus.o - -direct-y += ../../i386/pci/direct.o -acpi-y += ../../i386/pci/acpi.o -legacy-y += ../../i386/pci/legacy.o -irq-y += ../../i386/pci/irq.o -common-y += ../../i386/pci/common.o -fixup-y += ../../i386/pci/fixup.o -i386-y += ../../i386/pci/i386.o -init-y += ../../i386/pci/init.o -early-y += ../../i386/pci/early.o -mmconfig-shared-y += ../../i386/pci/mmconfig-shared.o diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index fc498fe..ff03b15 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -46,7 +46,7 @@ multi-objs := $(multi-objs-y) $(multi-objs-m) # $(subdir-obj-y) is the list of objects in $(obj-y) which do not live # in the local directory -subdir-obj-y := $(foreach o,$(obj-y),$(if $(filter-out $(o),$(notdir $(o))),$(o))) +subdir-obj-y := $(filter %/built-in.o, $(obj-y)) # $(obj-dirs) is a list of directories that contain object files obj-dirs := $(dir $(multi-objs) $(subdir-obj-y)) -
| Arjan van de Ven | [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in |
| Tilman Schmidt | git guidance |
| Vu Pham | Re: [Scst-devel] Integration of SCST in the mainstream Linux kernel |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
git: | |
| David Miller | Re: Git and GCC |
| Mike | I don't want the .git directory next to my code. |
| Steffen Prohaska | merge vs rebase: Is visualization in gitk the only problem? |
| David Kastrup | What is the idea for bare repositories? |
| Richard Stallman | Real men don't attack straw men |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Falk Brockerhoff | ftp-proxy and no route to host issue |
| Pieter Verberne | Remove escape characters from file |
| Chuck Lever | Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Stefan Richter | Re: [GIT]: Networking |
| jamal | Re: [LARTC] ifb and ppp |
