Skip to contentSkip to conversation

kbuild not creating output dirs

DISCUSSION Geoff Levand 3 participants 3 messages Apr 3, 2013 – Apr 4, 2013 Kbuild

lore
Share & tools
lore
#0 lore raw

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:

https://git.kernel.org/cgit/linux/kernel/git/maz/arm-platforms.git/tree/arch/arm64/kvm/Makefile?h=kvm-arm64/kvm-for-next

Thanks for your help.

-Geoff

#1 lore raw

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 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:

https://git.kernel.org/cgit/linux/kernel/git/maz/arm-platforms.git/tree/arch/arm64/kvm/Makefile?h=kvm-arm64/kvm-for-next

Thanks for your help.

-Geoff

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm

#2 lore raw
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 file arch/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.