mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-11-01 18:04:12 +08:00
The mcs51 library target writes into ../build/$(PORT) without depending on it, so with -j the archiver can start before the directory exists and the toolchain build fails with sdar: ../build/small/mcs51.lib: No such file or directory It is intermittent: the same tree builds fine on a retry.
24 lines
736 B
Diff
24 lines
736 B
Diff
Parallel builds race: the library target writes into ../build/$(PORT) but does
|
|
not depend on it, so with -j the archiver can run before the directory exists:
|
|
|
|
sdar: ../build/small/mcs51.lib: No such file or directory
|
|
|
|
Give the target an order-only dependency on its output directory.
|
|
|
|
Index: device/lib/mcs51/Makefile.in
|
|
===================================================================
|
|
--- device/lib/mcs51/Makefile.in (revision 17011)
|
|
+++ device/lib/mcs51/Makefile.in (working copy)
|
|
@@ -30,7 +30,10 @@
|
|
|
|
all: $(PORTDIR)/$(LIB)
|
|
|
|
-$(PORTDIR)/$(LIB): $(OBJ) Makefile
|
|
+$(PORTDIR):
|
|
+ mkdir -p $@
|
|
+
|
|
+$(PORTDIR)/$(LIB): $(OBJ) Makefile | $(PORTDIR)
|
|
ifeq ($(LIB_TYPE), SDCCLIB)
|
|
rm -f $@; \
|
|
$(top_builddir)/bin/sdcclib -a $@ $(OBJ)
|