]> sourceware.org Git - newlib-cygwin.git/commitdiff
newlib: fix multilib libg.a parallel builds
authorMike Frysinger <vapier@gentoo.org>
Thu, 24 Feb 2022 03:01:05 +0000 (22:01 -0500)
committerMike Frysinger <vapier@gentoo.org>
Thu, 24 Feb 2022 03:01:05 +0000 (22:01 -0500)
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
newlib/Makefile.in

index 1a5123f0a4c6116ea4c80e01625ce9e1db757a2d..0479ca4f5b61886a697779c32427aa33438fee19 100644 (file)
@@ -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 $@
index cc7afc70451b6f1dd142e7a52f3e4ff5355f6704..106f11ba077035b876133fdc476d1d53b18fdc00 100644 (file)
@@ -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 $@
This page took 0.079202 seconds and 5 git commands to generate.