kbuild not creating output dirs
Hi Michal,
I was building Marc's kvm development kernel outside of the sources (make O=), and I got the following build error:
arch/arm64/kvm/../../../arch/arm/kvm/mmio.c: fatal error: opening dependency file arch/arm64/kvm/../../../arch/arm/kvm/.mmio.o.d: No such file or directory
The cause was that kbuild did not create the output directory arch/arm64/kvm/../../../arch/arm/kvm, and so gcc failed.
Here is what was in his makefile:
obj-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
I changed this to build a composite and kbuild then created the output directories:
obj-$(CONFIG_KVM_ARM_HOST) += kvm.o kvm-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
I guess kbuild used some other rules and saw the dependency on the output directory.
So, my questions are:
Is it expected that the original rule should fail?
Is my fix the correct way?
Can I use some other way to get those output directories created?
Just FYI, the original source is here:
Thanks for your help.
-Geoff
there was a similar problem with the kvm 32-bit makefile at some point, the fix looks ok to me.
-Christoffer
Quoted 43 lines · Geoff Levand
Hi Michal,
I was building Marc's kvm development kernel outside of the sources (make O=), and I got the following build error:
arch/arm64/kvm/../../../arch/arm/kvm/mmio.c: fatal error: opening dependency filearch/arm64/kvm/../../../arch/arm/kvm/.mmio.o.d: No such file or directoryThe cause was that kbuild did not create the output directory
arch/arm64/kvm/../../../arch/arm/kvm, and so gcc failed.Here is what was in his makefile:
obj-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)I changed this to build a composite and kbuild then created the output directories:
obj-$(CONFIG_KVM_ARM_HOST) += kvm.o kvm-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)I guess kbuild used some other rules and saw the dependency on the output directory.
So, my questions are:
Is it expected that the original rule should fail?
Is my fix the correct way?
Can I use some other way to get those output directories created?Just FYI, the original source is here:
Thanks for your help.
-Geoff
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm
Quoted 6 lines · Christoffer Dall
there was a similar problem with the kvm 32-bit makefile at some point, the fix looks ok to me.
-Christoffer
On Wed, Apr 3, 2013 at 4:28 PM, Geoff Levand <[email protected]>
Quoted 7 lines · wrote:
Quoted 7 lines
Hi Michal,
I was building Marc's kvm development kernel outside of the sources (make O=), and I got the following build error:
arch/arm64/kvm/../../../arch/arm/kvm/mmio.c: fatal error: opening dependency filearch/arm64/kvm/../../../arch/arm/kvm/.mmio.o.d: No
such
Quoted 17 lines
Quoted 17 lines
file or directory
The cause was that kbuild did not create the output directory
arch/arm64/kvm/../../../arch/arm/kvm, and so gcc failed.Here is what was in his makefile:
obj-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)I changed this to build a composite and kbuild then created the output directories:
obj-$(CONFIG_KVM_ARM_HOST) += kvm.o kvm-$(CONFIG_KVM_ARM_HOST) += $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
Quoted 8 lines
Quoted 8 lines
I guess kbuild used some other rules and saw the dependency on the output directory.
So, my questions are:
Is it expected that the original rule should fail?
Is my fix the correct way?
Can I use some other way to get those output directories created?
Yeah, this looks like the thing to do. I'll fix the KVM/arm64 makefile.
Thanks for investigating.
M.
Signature · 1 line
Fast, cheap, reliable. Pick two.