https://gcc.gnu.org/g:acd0e21e964b266a7fa59461af7aa6918698a1bd

commit r14-11291-gacd0e21e964b266a7fa59461af7aa6918698a1bd
Author: Arsen Arsenović <ar...@aarsen.me>
Date:   Wed Jan 29 21:14:33 2025 +0100

    d: give dependency files better filenames [PR118477]
    
    Currently, the dependency files for root-file.o and common-file.o were
    both d/.deps/file.Po, which would cause parallel builds to fail
    sometimes with:
    
      make[3]: Leaving directory 
'/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/build/gcc'
      make[3]: Entering directory 
'/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/build/gcc'
      mv: cannot stat 'd/.deps/file.TPo': No such file or directory
      make[3]: *** 
[/var/tmp/portage/sys-devel/gcc-14.1.1_p20240511/work/gcc-14-20240511/gcc/d/Make-lang.in:421:
 d/root-file.o] Error 1 shuffle=131581365
    
    Also, this means that dependencies of one of root-file or common-file
    are missing when developing.  After this patch, those two files get
    assigned dependency files d/.deps/root-file.Po and
    d/.deps/common-file.Po respectively, so match the actual object
    files in the d/ subdirectory.
    
    There are other files with similar conflicts (mangle-package.o,
    visitor-package.o for instance).
    
    2025-01-29  Arsen Arsenović  <ar...@aarsen.me>
                Jakub Jelinek  <ja...@redhat.com>
    
            PR d/118477
            * Make-lang.in (DCOMPILE, DPOSTCOMPILE): Use $(basename $(@F))
            instead of $(*F).
    
    Co-Authored-By: Jakub Jelinek <ja...@redhat.com>
    (cherry picked from commit d9ac0ad1e9a4ceec2d354ac0368da7462bea5675)

Diff:
---
 gcc/d/Make-lang.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/d/Make-lang.in b/gcc/d/Make-lang.in
index eaea6e039cf7..30af91301923 100644
--- a/gcc/d/Make-lang.in
+++ b/gcc/d/Make-lang.in
@@ -65,8 +65,8 @@ ALL_DFLAGS = $(DFLAGS-$@) $(GDCFLAGS) -fversion=IN_GCC 
$(CHECKING_DFLAGS) \
        $(WARN_DFLAGS)
 
 DCOMPILE.base = $(GDC) -c $(ALL_DFLAGS) -o $@
-DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(*F).TPo
-DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(*F).TPo $(@D)/$(DEPDIR)/$(*F).Po
+DCOMPILE = $(DCOMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(basename 
$(@F)).TPo
+DPOSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).TPo 
$(@D)/$(DEPDIR)/$(basename $(@F)).Po
 DLINKER = $(GDC) $(NO_PIE_FLAG) -lstdc++
 
 # Like LINKER, but use a mutex for serializing front end links.

Reply via email to