Makefile: Correct SPL/TPL/DTB build race condition
authorM. Vefa Bicakci <m.v.b@runbox.com>
Sun, 12 Nov 2017 03:48:40 +0000 (22:48 -0500)
committerTom Rini <trini@konsulko.com>
Tue, 21 Nov 2017 01:18:39 +0000 (20:18 -0500)
commitdd2081a8e46877df5166fcd5af7f26c74a799317
tree92315ac17953b83ee965ae16b5405406965eda4c
parenta874cac3b45cbb6dd8bad05a5b42912acae6b7e4
Makefile: Correct SPL/TPL/DTB build race condition

When building on a multi-core machine for an SPL-enabled board that
also uses CONFIG_OF_EMBED, the following error can be encountered
due to a race condition:

  make[3]: *** No rule to make target 'spl/dts/dt.dtb.o', needed by
    'spl/dts/built-in.o'.  Stop.
  ../scripts/Makefile.spl:364: recipe for target 'spl/dts' failed
  make[2]: *** [spl/dts] Error 2
  make[2]: *** Waiting for unfinished jobs....

A reliable way to trigger this race condition is to add "sleep 60" to
the end of the "arch-dtbs" rule's recipe in "dts/Makefile" and to build
U-Boot against a board which uses the CONFIG_OF_EMBED and CONFIG_SPL
options using "make -j8" or a similar command.

This commit corrects this race condition via the use of CONFIG_OF_EMBED
in the same way that commit 3c00a2c8b5e2 ("Makefile: Correct dependency
race condition with TPL") and commit 054b3a1e80fc ("dm: Makefile: Build
of-platdata before SPL") use CONFIG_OF_SEPARATE.

Signed-off-by: M. Vefa Bicakci <m.v.b@runbox.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Makefile