
On Fri, Oct 25, 2019 at 02:46:54PM +0200, Heiko Schocher wrote:
imx targets are defined in arch/arm/mach-imx/Makefile. Some of them are dependent on targets defined in main Makefile. For the Makefile in arch/arm/mach-imx this targets must be finished before the imx targets are build, if not you get for example the error:
make -f /home/hs/abb/mainlining/u-boot/scripts/Makefile.build obj=arch/arm/mach-imx u-boot-dtb.imx make[2]: *** No rule to make target 'u-boot-fit-dtb.bin', needed by 'u-boot-dtb.imx'. Stop. make[1]: *** [/home/hs/abb/mainlining/u-boot/Makefile:1123: u-boot-dtb.imx] Error 2 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/work/hs/compile/u-boot/aristainetos2_defconfig' make: *** [Makefile:148: sub-make] Error 2 compile failed
In above case of CONFIG_MULTI_DTB_FIT is defined, the u-boot-dtb.imx is dependent on the u-boot-fit-dtb.bin which may is not build yet ...
I could reproduce this error on a travis build also if I build an out-of-tree build on a local machine with a build directory on a "slow" slow storage device. If building the same source target with a build dir on a fast storage device, the build works.
I found no solution to tell the arch/arm/mach-imx/Makefile to find the targets in main Makefile, if there is a way this would be the better fix.
I solved it by adding a IMX_DEPS var, which holds a list of main u-boot targets, which must be finished, before calling imx targets and fixed the build for imx targets which enabled CONFIG_MULTI_DTB_FIT.
I think it is just luck, that imx targets with CONFIG_OF_SEPARATE enabled build, because the u-boot-dtb.imx target depends on u-boot-dtb.bin which gets build early enough before starting with u-boot-dtb.imx. May this targets should be fixed too.
Signed-off-by: Heiko Schocher hs@denx.de
Reviewed-by: Tom Rini trini@konsulko.com
Good work figuring this out! I'll pick it up directly soon as I know it was blocking other stuff.