From acf642177b81543a4d954e58cfb24347c02b125a Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 23 Feb 2022 22:01:05 -0500 Subject: [PATCH] newlib: fix multilib libg.a parallel builds I split libg.a out into a sep target from libc.a for the main dir in commit f2b053f49ed2bd7b4da8cf4ed3a608dc2f425c2b ("newlib: separate out libg from libc"), but missed the multilib dirs. That leads to an uncommon parallel build failure: - libc.a rule runs & finishes - $(BUILD_MULTISUBDIR)/libc.a rule runs -> failure due to libg.a not yet existing - libg.a rule runs & finishes Split the multilib libg rule out from libc too so it can depend on the main libg directly and avoid this race. --- newlib/Makefile.am | 8 +++++--- newlib/Makefile.in | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 1a5123f0a..0479ca4f5 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -161,10 +161,12 @@ $(BUILD_MULTISUBDIR)/crt0.o: $(CRT0_DIR)$(CRT0) $(BUILD_MULTISUBDIR) ln $< $@ >/dev/null 2>/dev/null || cp $< $@ $(BUILD_MULTISUBDIR)/libc.a: libc.a $(BUILD_MULTISUBDIR) - rm -f $@ $(BUILD_MULTISUBDIR)/libg.a + rm -f $@ + ln $< $@ >/dev/null 2>/dev/null || cp $< $@ + +$(BUILD_MULTISUBDIR)/libg.a: libg.a ${BUILD_MULTISUBDIR} + rm -f $@ ln $< $@ >/dev/null 2>/dev/null || cp $< $@ - ln libg.a $(BUILD_MULTISUBDIR)/libg.a >/dev/null 2>/dev/null || \ - cp libg.a $(BUILD_MULTISUBDIR)/libg.a $(BUILD_MULTISUBDIR)/libm.a: libm.a $(BUILD_MULTISUBDIR) rm -f $@ diff --git a/newlib/Makefile.in b/newlib/Makefile.in index cc7afc704..106f11ba0 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -8672,10 +8672,12 @@ libm.a: $(libm_a_OBJECTS) $(libm_a_DEPENDENCIES) @HAVE_MULTISUBDIR_TRUE@ ln $< $@ >/dev/null 2>/dev/null || cp $< $@ @HAVE_MULTISUBDIR_TRUE@$(BUILD_MULTISUBDIR)/libc.a: libc.a $(BUILD_MULTISUBDIR) -@HAVE_MULTISUBDIR_TRUE@ rm -f $@ $(BUILD_MULTISUBDIR)/libg.a +@HAVE_MULTISUBDIR_TRUE@ rm -f $@ +@HAVE_MULTISUBDIR_TRUE@ ln $< $@ >/dev/null 2>/dev/null || cp $< $@ + +@HAVE_MULTISUBDIR_TRUE@$(BUILD_MULTISUBDIR)/libg.a: libg.a ${BUILD_MULTISUBDIR} +@HAVE_MULTISUBDIR_TRUE@ rm -f $@ @HAVE_MULTISUBDIR_TRUE@ ln $< $@ >/dev/null 2>/dev/null || cp $< $@ -@HAVE_MULTISUBDIR_TRUE@ ln libg.a $(BUILD_MULTISUBDIR)/libg.a >/dev/null 2>/dev/null || \ -@HAVE_MULTISUBDIR_TRUE@ cp libg.a $(BUILD_MULTISUBDIR)/libg.a @HAVE_MULTISUBDIR_TRUE@$(BUILD_MULTISUBDIR)/libm.a: libm.a $(BUILD_MULTISUBDIR) @HAVE_MULTISUBDIR_TRUE@ rm -f $@