https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104006
--- Comment #21 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That is make -j48 from where? Toplevel, or the libgfortran build dir, or toplevel make -j48 all-target-libgfortran or make -j48 maybe-all-target-libgfortran? >From what I can see, toplevel all-target-libgfortran should do make all in the libgfortran build dir: ARGET-target-libgfortran=all maybe-all-target-libgfortran: all-target-libgfortran all-target-libgfortran: configure-target-libgfortran @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgfortran && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libgfortran)) and all: in the libgfortran Makefile should be: all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am (in your case with the ls -l added above it). Perhaps also above the ls do echo all in libgfortran, BUILT_SOURCES is $(BUILT_SOUCES) What version of GNU make are you using? I just don't understand how it could start building the object files etc. which is done from all-am before actually ensuring all those $(BUILT_SOURCES) like kinds.h exist.