Hi! Here is a patch which uses sed to fix up the copies of the generated files by flex/bison in the source directories (i.e. what we ship in release tarballs). In that case the generated files are in the same directory as the files they are generated from, so there should be no absolute or relative directories, just the filenames.
Furthermore, c.srcextra was duplicating the work of gcc.srcextra, there is nothing C FE specific on gengtype-lex.l. Tested on x86_64-linux, ok for trunk? 2025-03-28 Jakub Jelinek <ja...@redhat.com> gcc/ * Makefile.in (gcc.srcextra): Use sed to turn .../gcc/gengtype-lex.l in #line directives into just gengtype-lex.l. gcc/c/ * Make-lang.in (c.srcextra): Don't depend on anything and don't copy anything. gcc/cobol/ * Make-lang.in (cobol.srcextra): Use sed to turn .../gcc/cobol/*.{y,l,h,cc} and cobol/*.{y,l,h,cc} in #line directives into just *.{y,l,h,cc}. --- gcc/Makefile.in.jj 2025-03-27 09:29:36.938576746 +0100 +++ gcc/Makefile.in 2025-03-28 14:45:00.960408922 +0100 @@ -2508,7 +2508,7 @@ s-mlib: $(srcdir)/genmultilib Makefile srcextra: gcc.srcextra lang.srcextra gcc.srcextra: gengtype-lex.cc - -cp -p $^ $(srcdir) + -sed -e '/^#line/s,".*/gcc/gengtype-lex\.l","gengtype-lex.l",' $^ > $(srcdir)/$^ AR_OBJS = file-find.o AR_LIBS = @COLLECT2_LIBS@ --- gcc/c/Make-lang.in.jj 2025-01-02 11:47:22.032336564 +0100 +++ gcc/c/Make-lang.in 2025-03-28 14:48:43.601409373 +0100 @@ -131,8 +131,7 @@ c.all.cross: c.start.encap: c.rest.encap: c.srcinfo: -c.srcextra: gengtype-lex.cc - -cp -p $^ $(srcdir) +c.srcextra: c.tags: force cd $(srcdir)/c; $(ETAGS) -o TAGS.sub *.cc *.h; \ $(ETAGS) --include TAGS.sub --include ../TAGS.sub --- gcc/cobol/Make-lang.in.jj 2025-03-28 14:30:28.251174728 +0100 +++ gcc/cobol/Make-lang.in 2025-03-28 15:08:29.431543005 +0100 @@ -272,8 +272,9 @@ cobol/scan.o: cobol/scan.cc \ # output, and do not require those tools to be installed. # cobol.srcextra: cobol/parse.cc cobol/cdf.cc cobol/scan.cc - -cp -p $^ cobol/parse.h cobol/cdf.h $(srcdir)/cobol/ - + -for i in $^ cobol/parse.h cobol/cdf.h; do \ + sed -e '/^#line/s,"\(.*gcc/\)\?cobol/\([^/]*\.\([ylh]\|cc\)\)","\2",' $$i \ + > $(srcdir)/$$i; done # And the cobol1 front end Jakub