Re: [PATCH] powerpc/boot: Fix build of dts/fsl
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2020-12-16 02:42:56
Masahiro Yamada [off-list ref] writes:
On Tue, Dec 15, 2020 at 12:29 PM Michael Ellerman [off-list ref] wrote:quoted
The lkp robot reported that some configs fail to build, for example mpc85xx_smp_defconfig, with: cc1: fatal error: opening output file arch/powerpc/boot/dts/fsl/.mpc8540ads.dtb.dts.tmp: No such file or directory This bisects to: cc8a51ca6f05 ("kbuild: always create directories of targets") Although that commit claims to be about in-tree builds, it somehow breaks out-of-tree builds. But presumably it's just exposing a latent bug in our Makefiles. We can fix it by adding to targets for dts/fsl in the same way that we do for dts. Fixes: cc8a51ca6f05 ("kbuild: always create directories of targets") Reported-by: kernel test robot <redacted> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/boot/Makefile | 2 ++ 1 file changed, 2 insertions(+)diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 68a7534454cd..c3e084cceaed 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile@@ -372,6 +372,8 @@ initrd-y := $(filter-out $(image-y), $(initrd-y)) targets += $(image-y) $(initrd-y) targets += $(foreach x, dtbImage uImage cuImage simpleImage treeImage, \ $(patsubst $(x).%, dts/%.dtb, $(filter $(x).%, $(image-y)))) +targets += $(foreach x, dtbImage uImage cuImage simpleImage treeImage, \ + $(patsubst $(x).%, dts/fsl/%.dtb, $(filter $(x).%, $(image-y)))) $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gzSome freescale dts files are right under arch/powerpc/boot/dts/, but some are in the fsl/ subdirectory. I do not understand the policy.
There isn't a policy. Best I can tell Kumar felt like it would be cleaner to have a separate directory for (some of) the Freescale DTS files, when he initially submitted them ~9 years ago.
If "fsl/" is a very special case, I just thought we could add a new syntax, fslimage-y, but I do not mind either way.
OK. If you don't mind I'll merge my patch as a quick fix for now. Then we can probably move all the fsl/ files up one level and avoid the problem entirely in future.
fslimage-$(CONFIG_MPC8540_ADS) += cuImage.mpc8540ads
targets += $(foreach x, dtbImage uImage cuImage simpleImage treeImage, \
$(patsubst $(x).%, dts/fsl/%.dtb, $(filter $(x).%,
$(fslimage-y))))
This Makefile is wrong over-all anyway.Excellent. cheers