cobol: Fix --enable-link-serialization build

Message ID Z9AEf9KvF/Bezo6g@tucnak
State New
Headers
Series cobol: Fix --enable-link-serialization build |

Commit Message

Jakub Jelinek March 11, 2025, 9:38 a.m. UTC
  Hi!

--enable-link-serialization relies on each FE participating properly,
setting <lang>.serial, depending on $(<lang>.prev) and printing progress.
The configure option is mainly for LTO bootstraps when we don't want to link
all the FEs at once because that can consume too much memory.

The comment changes are unrelated, just something I've spotted while
working on this.  .exe is a Windows suffix, so either we shouldn't
talk about suffixes in the comments or use there $(exeext) as well
to make it clear that it is dependent on the host/build.

Tested on x86_64-linux with --enable-languages=c,c++,cobol \
--enable-link-serialization, ok for trunk?

2025-03-11  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in: Remove .exe extension from comments.
	(cobol.serial): Set to cobol1$(exeext).
	(cobol1$(exeext)): Depend on $(cobol.prev).  Add
	LINK_PROGRESS calls before/after the link command.


	Jakub
  

Comments

Richard Biener March 11, 2025, 9:53 a.m. UTC | #1
On Tue, 11 Mar 2025, Jakub Jelinek wrote:

> Hi!
> 
> --enable-link-serialization relies on each FE participating properly,
> setting <lang>.serial, depending on $(<lang>.prev) and printing progress.
> The configure option is mainly for LTO bootstraps when we don't want to link
> all the FEs at once because that can consume too much memory.
> 
> The comment changes are unrelated, just something I've spotted while
> working on this.  .exe is a Windows suffix, so either we shouldn't
> talk about suffixes in the comments or use there $(exeext) as well
> to make it clear that it is dependent on the host/build.
> 
> Tested on x86_64-linux with --enable-languages=c,c++,cobol \
> --enable-link-serialization, ok for trunk?

OK.

Thanks,
Richard.

> 2025-03-11  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* Make-lang.in: Remove .exe extension from comments.
> 	(cobol.serial): Set to cobol1$(exeext).
> 	(cobol1$(exeext)): Depend on $(cobol.prev).  Add
> 	LINK_PROGRESS calls before/after the link command.
> 
> --- gcc/Make-lang.in.jj	2025-03-11 09:57:19.026823436 +0100
> +++ gcc/Make-lang.in	2025-03-11 10:02:07.984835720 +0100
> @@ -38,6 +38,7 @@ gcobol_INSTALL_NAME := $(shell echo gcob
>  gcobol_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcobol|sed '$(program_transform_name)')
>  
>  cobol: cobol1$(exeext)
> +cobol.serial = cobol1$(exeext)
>  .PHONY: cobol
>  
>  BINCLUDE ?= ./gcc
> @@ -67,7 +68,7 @@ YFLAGS = -Werror -Wmidrule-values -Wno-y
>  LFLAGS = -d -Ca
>  
>  #
> -# These are the object files for creating the cobol1.exe compiler:
> +# These are the object files for creating the cobol1 compiler:
>  #
>  cobol1_OBJS =    \
>   cobol/cdf.o        \
> @@ -112,7 +113,7 @@ cobol/charmaps.o: cobol/charmaps.cc $(LI
>  cobol/valconv.o: cobol/valconv.cc $(LIB_SOURCE_H)
>  
>  #
> -# These are the object files for creating the gcobol.exe "driver"
> +# These are the object files for creating the gcobol "driver"
>  #
>  GCOBOL_D_OBJS = $(GCC_OBJS) cobol/gcobolspec.o
>  
> @@ -133,7 +134,7 @@ cobol_OBJS = \
>  CFLAGS-cobol/gcobolspec.o += $(DRIVER_DEFINES)
>  
>  #
> -# This controls the build of the gcobol.exe "driver"
> +# This controls the build of the gcobol "driver"
>  #
>  gcobol$(exeext): \
>  	 $(GCOBOL_D_OBJS) \
> @@ -145,7 +146,7 @@ gcobol$(exeext): \
>  	 $(EXTRA_GCC_LIBS) $(LIBS)
>  
>  #
> -# These control the build of the cobol1.exe source-to-GENERIC converter
> +# These control the build of the cobol1 source-to-GENERIC converter
>  #
>  
>  # First, files needed for parsing:
> @@ -264,11 +265,13 @@ cobol.srcextra: cobol/parse.cc cobol/cdf
>  	ln -f $^ cobol/parse.h cobol/cdf.h $(srcdir)/cobol/
>  
>  
> -# And the cobol1.exe front end
> +# And the cobol1 front end
>  
> -cobol1$(exeext): $(cobol1_OBJS) 	$(BACKEND) $(LIBDEPS) attribs.o
> +cobol1$(exeext): $(cobol1_OBJS) $(BACKEND) $(LIBDEPS) attribs.o $(cobol.prev)
> +	@$(call LINK_PROGRESS,$(INDEX.cobol),start)
>  	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) attribs.o -o $@	\
>  	      $(cobol1_OBJS) $(BACKEND) $(LIBS) $(BACKENDLIBS)
> +	@$(call LINK_PROGRESS,$(INDEX.cobol),end)
>  
>  # FIXME
>  cobol.all.cross:
> 
> 	Jakub
> 
>
  

Patch

--- gcc/Make-lang.in.jj	2025-03-11 09:57:19.026823436 +0100
+++ gcc/Make-lang.in	2025-03-11 10:02:07.984835720 +0100
@@ -38,6 +38,7 @@  gcobol_INSTALL_NAME := $(shell echo gcob
 gcobol_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcobol|sed '$(program_transform_name)')
 
 cobol: cobol1$(exeext)
+cobol.serial = cobol1$(exeext)
 .PHONY: cobol
 
 BINCLUDE ?= ./gcc
@@ -67,7 +68,7 @@  YFLAGS = -Werror -Wmidrule-values -Wno-y
 LFLAGS = -d -Ca
 
 #
-# These are the object files for creating the cobol1.exe compiler:
+# These are the object files for creating the cobol1 compiler:
 #
 cobol1_OBJS =    \
  cobol/cdf.o        \
@@ -112,7 +113,7 @@  cobol/charmaps.o: cobol/charmaps.cc $(LI
 cobol/valconv.o: cobol/valconv.cc $(LIB_SOURCE_H)
 
 #
-# These are the object files for creating the gcobol.exe "driver"
+# These are the object files for creating the gcobol "driver"
 #
 GCOBOL_D_OBJS = $(GCC_OBJS) cobol/gcobolspec.o
 
@@ -133,7 +134,7 @@  cobol_OBJS = \
 CFLAGS-cobol/gcobolspec.o += $(DRIVER_DEFINES)
 
 #
-# This controls the build of the gcobol.exe "driver"
+# This controls the build of the gcobol "driver"
 #
 gcobol$(exeext): \
 	 $(GCOBOL_D_OBJS) \
@@ -145,7 +146,7 @@  gcobol$(exeext): \
 	 $(EXTRA_GCC_LIBS) $(LIBS)
 
 #
-# These control the build of the cobol1.exe source-to-GENERIC converter
+# These control the build of the cobol1 source-to-GENERIC converter
 #
 
 # First, files needed for parsing:
@@ -264,11 +265,13 @@  cobol.srcextra: cobol/parse.cc cobol/cdf
 	ln -f $^ cobol/parse.h cobol/cdf.h $(srcdir)/cobol/
 
 
-# And the cobol1.exe front end
+# And the cobol1 front end
 
-cobol1$(exeext): $(cobol1_OBJS) 	$(BACKEND) $(LIBDEPS) attribs.o
+cobol1$(exeext): $(cobol1_OBJS) $(BACKEND) $(LIBDEPS) attribs.o $(cobol.prev)
+	@$(call LINK_PROGRESS,$(INDEX.cobol),start)
 	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) attribs.o -o $@	\
 	      $(cobol1_OBJS) $(BACKEND) $(LIBS) $(BACKENDLIBS)
+	@$(call LINK_PROGRESS,$(INDEX.cobol),end)
 
 # FIXME
 cobol.all.cross: