It appears that make 3.81 has a latent bug that is triggered by a combination
of modula2 build recipe entries that appear to be correct.  In particular
marking the m2.pod file as .INTERMEDIATE produces a situation which a clean
build of the compiler works, as does any non-parallel rebuild.  However any
parallel rebuild results in make spinning with a single process at 100%.

Other similar recipes in Fortran and D appear to work as expected, there is
some subtle difference in the m2 case.

The solution that works to allow a rebuild with j > 1 is to remove the
.INTERMEDIATE marking on the m2.pod (and to make it explictly deleted on
clean).

gcc/m2/ChangeLog:

        * Make-lang.in: Do not make m2.pod as .INTERMEDIATE but delete it
        explicitly in clean targets.

(cherry picked from commit 93bcb5098e398d2df50c125a11978ac435680ebd)

Signed-off-by: Gaius Mulley <[email protected]>
---
 gcc/m2/Make-lang.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in
index d7c46ec1a19..e4f37a155b9 100644
--- a/gcc/m2/Make-lang.in
+++ b/gcc/m2/Make-lang.in
@@ -189,8 +189,6 @@ m2.install-pdf: $(M2_PDFFILES)
          $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \
        done
 
-.INTERMEDIATE: m2.pod
-
 m2.pod: $(TEXISRC) | $(objdir)/m2/images/gnu.eps $(TEXILIBSRC)
        -$(TEXI2POD) -I $(objdir)/m2 -D m2 < $< > $@
 
@@ -412,6 +410,7 @@ endif
 
 m2.mostlyclean:
        -rm -f m2/*.o
+       -rm -f m2.pod
 
 m2.clean:
        -rm -f m2/*.o
-- 
2.47.3

Reply via email to