https://gcc.gnu.org/g:9f1ae12f0ee0d3cebb7a5249b7f741c51c5934a0

commit r16-5778-g9f1ae12f0ee0d3cebb7a5249b7f741c51c5934a0
Author: Jose E. Marchesi <[email protected]>
Date:   Sat Nov 29 16:57:51 2025 +0100

    a68: build system changes
    
    This commit adds support for building the Algol 68 front-end to the
    build system.
    
    Signed-off-by: Jose E. Marchesi <[email protected]>
    
    ChangeLog
    
            * Makefile.def (libga68): New module.
            (configure-target-libga68): Likewise.
            * Makefile.tpl (GA68): Define.
            (GA68_FOR_BUILD): Likewise.
            (GA68FLAGS): Likewise.
            * configure.ac (--enable-libga68): New option.
            (--enable-algol68-gc): Likewise.
            (GA68): Subst.
            (GA68FLAGS): Likewise.
            Invoke ACX_PROG_GA68.
            * configure: Regenerate.
            * Makefile.in: Likewise.
    
    config/ChangeLog
    
            * acx.m4 (ACX_PROG_GA68): New defun.
    
    gcc/ChangeLog
    
            * Makefile.in (OPT_URLS_HTML_DEPS): Add ga68/Option-Index.html.
            * algol68/Make-lang.in: New file.
            * algol68/config-lang.in: Likewise.

Diff:
---
 Makefile.def               |   8 +
 Makefile.in                | 550 ++++++++++++++++++++++++++++++++++++++++++++-
 Makefile.tpl               |  18 ++
 config/acx.m4              |   6 +
 configure                  | 355 ++++++++++++++++++++++++++++-
 configure.ac               |  47 ++--
 gcc/Makefile.in            |   3 +-
 gcc/algol68/Make-lang.in   | 287 +++++++++++++++++++++++
 gcc/algol68/config-lang.in |  32 +++
 9 files changed, 1280 insertions(+), 26 deletions(-)

diff --git a/Makefile.def b/Makefile.def
index e7f33345aa82..627121e87bc8 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -205,6 +205,7 @@ target_modules = { module= zlib; bootstrap=true; };
 target_modules = { module= rda; };
 target_modules = { module= libada; };
 target_modules = { module= libgm2; lib_path=.libs; };
+target_modules = { module= libga68; lib_path=.libs; };
 target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
 target_modules = { module= libitm; lib_path=.libs; };
 target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; };
@@ -313,6 +314,8 @@ flags_to_pass = { flag= GNATBIND ; };
 flags_to_pass = { flag= GNATMAKE ; };
 flags_to_pass = { flag= GDC ; };
 flags_to_pass = { flag= GDCFLAGS ; };
+flags_to_pass = { flag= GA68 ; };
+flags_to_pass = { flag= GA68FLAGS ; };
 
 // Target tools
 flags_to_pass = { flag= AR_FOR_TARGET ; };
@@ -329,6 +332,8 @@ flags_to_pass = { flag= GOC_FOR_TARGET ; };
 flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; };
 flags_to_pass = { flag= GDC_FOR_TARGET ; };
 flags_to_pass = { flag= GDCFLAGS_FOR_TARGET ; };
+flags_to_pass = { flag= GA68_FOR_TARGET ; };
+flags_to_pass = { flag= GA68FLAGS_FOR_TARGET ; };
 flags_to_pass = { flag= GM2_FOR_TARGET ; };
 flags_to_pass = { flag= GM2FLAGS_FOR_TARGET ; };
 flags_to_pass = { flag= LD_FOR_TARGET ; };
@@ -678,6 +683,7 @@ dependencies = { module=configure-target-libstdc++-v3; 
on=configure-target-libgo
 dependencies = { module=configure-target-libsanitizer; 
on=all-target-libstdc++-v3; };
 dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
 dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; 
};
+dependencies = { module=configure-target-libga68; on=all-target-libstdc++-v3; 
};
 // parallel_list.o and parallel_settings.o depend on omp.h, which is
 // generated by the libgomp configure.  Unfortunately, due to the use of
 //  recursive make, we can't be that specific.
@@ -736,6 +742,8 @@ languages = { language=jit; gcc-check-target=check-jit; };
 languages = { language=rust;   gcc-check-target=check-rust; };
 languages = { language=cobol;  gcc-check-target=check-cobol;
                                lib-check-target=check-target-libgcobol; };
+languages = { language=algol68; gcc-check-target=check-algol68;
+                               lib-check-target=check-target-libga68; };
 
 // Toplevel bootstrap
 bootstrap_stage = { id=1 ; };
diff --git a/Makefile.in b/Makefile.in
index 15f7413e9973..ef49d3a4c032 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -160,6 +160,8 @@ BUILD_EXPORTS = \
        CXX="$(CXX_FOR_BUILD)"; export CXX; \
        CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+       GA68="$(GA68_FOR_BUILD)"; export GA68; \
+       GA68FLAGS="$(GA68FLAGS_FOR_BUILD)"; export GA68FLAGS; \
        GOC="$(GOC_FOR_BUILD)"; export GOC; \
        GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
        GDC="$(GDC_FOR_BUILD)"; export GDC; \
@@ -203,6 +205,7 @@ HOST_EXPORTS = \
        CXX="$(CXX)"; export CXX; \
        CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
+       GA68="$(GA68)"; export GA68; \
        GOC="$(GOC)"; export GOC; \
        GDC="$(GDC)"; export GDC; \
        GM2="$(GM2)"; export GM2; \
@@ -278,6 +281,11 @@ POSTSTAGE1_HOST_EXPORTS = \
        CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \
        $(POSTSTAGE1_CXX_EXPORT) \
        $(LTO_EXPORTS) \
+       GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) 
-B$$r/$(HOST_SUBDIR)/prev-gcc/ \
+         -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \
+         -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \
+       export GA68; \
+       GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \
        GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) 
-B$$r/$(HOST_SUBDIR)/prev-gcc/ \
          -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \
          -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \
@@ -310,6 +318,7 @@ BASE_TARGET_EXPORTS = \
        CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
        CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; 
export GFORTRAN; \
+       GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export 
GA68; \
        GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
        GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
        GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \
@@ -380,6 +389,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@
 DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
 DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@
 GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
+GA68_FOR_BUILD = @GA68_FOR_BUILD@
 GOC_FOR_BUILD = @GOC_FOR_BUILD@
 GDC_FOR_BUILD = @GDC_FOR_BUILD@
 GM2_FOR_BUILD = @GM2_FOR_BUILD@
@@ -443,6 +453,7 @@ STRIP = @STRIP@
 WINDRES = @WINDRES@
 WINDMC = @WINDMC@
 
+GA68 = @GA68@
 GDC = @GDC@
 GNATBIND = @GNATBIND@
 GNATMAKE = @GNATMAKE@
@@ -453,6 +464,7 @@ LIBCFLAGS = $(CFLAGS)
 CXXFLAGS = @CXXFLAGS@
 LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
 GOCFLAGS = $(CFLAGS)
+GA68FLAGS = @GA68FLAGS@
 GDCFLAGS = @GDCFLAGS@
 GM2FLAGS = $(CFLAGS)
 
@@ -678,6 +690,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@
 RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@
 GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
 GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
+GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@
 GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
 GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@
 DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
@@ -707,6 +720,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) 
-fno-implicit-templates
 LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@
 GM2FLAGS_FOR_TARGET = -O2 -g
 GOCFLAGS_FOR_TARGET = -O2 -g
+GA68FLAGS_FOR_TARGET = -O2 -g
 GDCFLAGS_FOR_TARGET = -O2 -g
 
 FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@
@@ -732,7 +746,7 @@ all:
 
 # This is the list of directories that may be needed in RPATH_ENVVAR
 # so that programs built for the target machine work.
-TARGET_LIB_PATH = 
$(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc)
+TARGET_LIB_PATH = 
$(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libga68)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc)
 
 @if target-libstdc++-v3
 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:
@@ -758,6 +772,10 @@ TARGET_LIB_PATH_libphobos = 
$$r/$(TARGET_SUBDIR)/libphobos/src/.libs:
 TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs:
 @endif target-libgm2
 
+@if target-libga68
+TARGET_LIB_PATH_libga68 = $$r/$(TARGET_SUBDIR)/libga68/.libs:
+@endif target-libga68
+
 @if target-libgomp
 TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs:
 @endif target-libgomp
@@ -889,6 +907,8 @@ BASE_FLAGS_TO_PASS = \
        "GNATMAKE=$(GNATMAKE)" \
        "GDC=$(GDC)" \
        "GDCFLAGS=$(GDCFLAGS)" \
+       "GA68=$(GA68)" \
+       "GA68FLAGS=$(GA68FLAGS)" \
        "AR_FOR_TARGET=$(AR_FOR_TARGET)" \
        "AS_FOR_TARGET=$(AS_FOR_TARGET)" \
        "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
@@ -903,6 +923,8 @@ BASE_FLAGS_TO_PASS = \
        "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \
        "GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \
        "GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \
+       "GA68_FOR_TARGET=$(GA68_FOR_TARGET)" \
+       "GA68FLAGS_FOR_TARGET=$(GA68FLAGS_FOR_TARGET)" \
        "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
        "GM2FLAGS_FOR_TARGET=$(GM2FLAGS_FOR_TARGET)" \
        "LD_FOR_TARGET=$(LD_FOR_TARGET)" \
@@ -977,6 +999,7 @@ EXTRA_HOST_FLAGS = \
        'DSYMUTIL=$(DSYMUTIL)' \
        'GFORTRAN=$(GFORTRAN)' \
        'GOC=$(GOC)' \
+       'GA68=$(GA68)' \
        'GDC=$(GDC)' \
        'GM2=$(GM2)' \
        'LD=$(LD)' \
@@ -1005,6 +1028,7 @@ STAGE1_FLAGS_TO_PASS = \
 POSTSTAGE1_FLAGS_TO_PASS = \
        CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
        CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
+       GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \
        GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \
        GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \
        GNATBIND="$${GNATBIND}" \
@@ -1040,6 +1064,8 @@ EXTRA_TARGET_FLAGS = \
        'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' 
\
        'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
        'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
+       'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'GA68FLAGS=$$(GA68FLAGS_FOR_TARGET)' \
        'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
        'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \
        'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
@@ -1161,6 +1187,7 @@ configure-target:  \
     maybe-configure-target-rda \
     maybe-configure-target-libada \
     maybe-configure-target-libgm2 \
+    maybe-configure-target-libga68 \
     maybe-configure-target-libgomp \
     maybe-configure-target-libitm \
     maybe-configure-target-libatomic \
@@ -1361,6 +1388,7 @@ all-target: maybe-all-target-zlib
 all-target: maybe-all-target-rda
 all-target: maybe-all-target-libada
 all-target: maybe-all-target-libgm2
+all-target: maybe-all-target-libga68
 @if target-libgomp-no-bootstrap
 all-target: maybe-all-target-libgomp
 @endif target-libgomp-no-bootstrap
@@ -1464,6 +1492,7 @@ info-target: maybe-info-target-zlib
 info-target: maybe-info-target-rda
 info-target: maybe-info-target-libada
 info-target: maybe-info-target-libgm2
+info-target: maybe-info-target-libga68
 info-target: maybe-info-target-libgomp
 info-target: maybe-info-target-libitm
 info-target: maybe-info-target-libatomic
@@ -1558,6 +1587,7 @@ dvi-target: maybe-dvi-target-zlib
 dvi-target: maybe-dvi-target-rda
 dvi-target: maybe-dvi-target-libada
 dvi-target: maybe-dvi-target-libgm2
+dvi-target: maybe-dvi-target-libga68
 dvi-target: maybe-dvi-target-libgomp
 dvi-target: maybe-dvi-target-libitm
 dvi-target: maybe-dvi-target-libatomic
@@ -1652,6 +1682,7 @@ pdf-target: maybe-pdf-target-zlib
 pdf-target: maybe-pdf-target-rda
 pdf-target: maybe-pdf-target-libada
 pdf-target: maybe-pdf-target-libgm2
+pdf-target: maybe-pdf-target-libga68
 pdf-target: maybe-pdf-target-libgomp
 pdf-target: maybe-pdf-target-libitm
 pdf-target: maybe-pdf-target-libatomic
@@ -1746,6 +1777,7 @@ html-target: maybe-html-target-zlib
 html-target: maybe-html-target-rda
 html-target: maybe-html-target-libada
 html-target: maybe-html-target-libgm2
+html-target: maybe-html-target-libga68
 html-target: maybe-html-target-libgomp
 html-target: maybe-html-target-libitm
 html-target: maybe-html-target-libatomic
@@ -1840,6 +1872,7 @@ TAGS-target: maybe-TAGS-target-zlib
 TAGS-target: maybe-TAGS-target-rda
 TAGS-target: maybe-TAGS-target-libada
 TAGS-target: maybe-TAGS-target-libgm2
+TAGS-target: maybe-TAGS-target-libga68
 TAGS-target: maybe-TAGS-target-libgomp
 TAGS-target: maybe-TAGS-target-libitm
 TAGS-target: maybe-TAGS-target-libatomic
@@ -1934,6 +1967,7 @@ install-info-target: maybe-install-info-target-zlib
 install-info-target: maybe-install-info-target-rda
 install-info-target: maybe-install-info-target-libada
 install-info-target: maybe-install-info-target-libgm2
+install-info-target: maybe-install-info-target-libga68
 install-info-target: maybe-install-info-target-libgomp
 install-info-target: maybe-install-info-target-libitm
 install-info-target: maybe-install-info-target-libatomic
@@ -2028,6 +2062,7 @@ install-dvi-target: maybe-install-dvi-target-zlib
 install-dvi-target: maybe-install-dvi-target-rda
 install-dvi-target: maybe-install-dvi-target-libada
 install-dvi-target: maybe-install-dvi-target-libgm2
+install-dvi-target: maybe-install-dvi-target-libga68
 install-dvi-target: maybe-install-dvi-target-libgomp
 install-dvi-target: maybe-install-dvi-target-libitm
 install-dvi-target: maybe-install-dvi-target-libatomic
@@ -2122,6 +2157,7 @@ install-pdf-target: maybe-install-pdf-target-zlib
 install-pdf-target: maybe-install-pdf-target-rda
 install-pdf-target: maybe-install-pdf-target-libada
 install-pdf-target: maybe-install-pdf-target-libgm2
+install-pdf-target: maybe-install-pdf-target-libga68
 install-pdf-target: maybe-install-pdf-target-libgomp
 install-pdf-target: maybe-install-pdf-target-libitm
 install-pdf-target: maybe-install-pdf-target-libatomic
@@ -2216,6 +2252,7 @@ install-html-target: maybe-install-html-target-zlib
 install-html-target: maybe-install-html-target-rda
 install-html-target: maybe-install-html-target-libada
 install-html-target: maybe-install-html-target-libgm2
+install-html-target: maybe-install-html-target-libga68
 install-html-target: maybe-install-html-target-libgomp
 install-html-target: maybe-install-html-target-libitm
 install-html-target: maybe-install-html-target-libatomic
@@ -2310,6 +2347,7 @@ installcheck-target: maybe-installcheck-target-zlib
 installcheck-target: maybe-installcheck-target-rda
 installcheck-target: maybe-installcheck-target-libada
 installcheck-target: maybe-installcheck-target-libgm2
+installcheck-target: maybe-installcheck-target-libga68
 installcheck-target: maybe-installcheck-target-libgomp
 installcheck-target: maybe-installcheck-target-libitm
 installcheck-target: maybe-installcheck-target-libatomic
@@ -2404,6 +2442,7 @@ mostlyclean-target: maybe-mostlyclean-target-zlib
 mostlyclean-target: maybe-mostlyclean-target-rda
 mostlyclean-target: maybe-mostlyclean-target-libada
 mostlyclean-target: maybe-mostlyclean-target-libgm2
+mostlyclean-target: maybe-mostlyclean-target-libga68
 mostlyclean-target: maybe-mostlyclean-target-libgomp
 mostlyclean-target: maybe-mostlyclean-target-libitm
 mostlyclean-target: maybe-mostlyclean-target-libatomic
@@ -2498,6 +2537,7 @@ clean-target: maybe-clean-target-zlib
 clean-target: maybe-clean-target-rda
 clean-target: maybe-clean-target-libada
 clean-target: maybe-clean-target-libgm2
+clean-target: maybe-clean-target-libga68
 clean-target: maybe-clean-target-libgomp
 clean-target: maybe-clean-target-libitm
 clean-target: maybe-clean-target-libatomic
@@ -2592,6 +2632,7 @@ distclean-target: maybe-distclean-target-zlib
 distclean-target: maybe-distclean-target-rda
 distclean-target: maybe-distclean-target-libada
 distclean-target: maybe-distclean-target-libgm2
+distclean-target: maybe-distclean-target-libga68
 distclean-target: maybe-distclean-target-libgomp
 distclean-target: maybe-distclean-target-libitm
 distclean-target: maybe-distclean-target-libatomic
@@ -2686,6 +2727,7 @@ maintainer-clean-target: 
maybe-maintainer-clean-target-zlib
 maintainer-clean-target: maybe-maintainer-clean-target-rda
 maintainer-clean-target: maybe-maintainer-clean-target-libada
 maintainer-clean-target: maybe-maintainer-clean-target-libgm2
+maintainer-clean-target: maybe-maintainer-clean-target-libga68
 maintainer-clean-target: maybe-maintainer-clean-target-libgomp
 maintainer-clean-target: maybe-maintainer-clean-target-libitm
 maintainer-clean-target: maybe-maintainer-clean-target-libatomic
@@ -2838,6 +2880,7 @@ check-target:  \
     maybe-check-target-rda \
     maybe-check-target-libada \
     maybe-check-target-libgm2 \
+    maybe-check-target-libga68 \
     maybe-check-target-libgomp \
     maybe-check-target-libitm \
     maybe-check-target-libatomic \
@@ -3036,6 +3079,7 @@ install-target:  \
     maybe-install-target-rda \
     maybe-install-target-libada \
     maybe-install-target-libgm2 \
+    maybe-install-target-libga68 \
     maybe-install-target-libgomp \
     maybe-install-target-libitm \
     maybe-install-target-libatomic \
@@ -3150,6 +3194,7 @@ install-strip-target:  \
     maybe-install-strip-target-rda \
     maybe-install-strip-target-libada \
     maybe-install-strip-target-libgm2 \
+    maybe-install-strip-target-libga68 \
     maybe-install-strip-target-libgomp \
     maybe-install-strip-target-libitm \
     maybe-install-strip-target-libatomic \
@@ -60201,6 +60246,491 @@ maintainer-clean-target-libgm2:
 
 
 
+.PHONY: configure-target-libga68 maybe-configure-target-libga68
+maybe-configure-target-libga68:
+@if gcc-bootstrap
+configure-target-libga68: stage_current
+@endif gcc-bootstrap
+@if target-libga68
+maybe-configure-target-libga68: configure-target-libga68
+configure-target-libga68: 
+       @: $(MAKE); $(unstage)
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       echo "Checking multilib configuration for libga68..."; \
+       $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \
+       $(CC_FOR_TARGET) --print-multi-lib > 
$(TARGET_SUBDIR)/libga68/multilib.tmp 2> /dev/null; \
+       if test -r $(TARGET_SUBDIR)/libga68/multilib.out; then \
+         if cmp -s $(TARGET_SUBDIR)/libga68/multilib.tmp 
$(TARGET_SUBDIR)/libga68/multilib.out; then \
+           rm -f $(TARGET_SUBDIR)/libga68/multilib.tmp; \
+         else \
+           rm -f $(TARGET_SUBDIR)/libga68/Makefile; \
+           mv $(TARGET_SUBDIR)/libga68/multilib.tmp 
$(TARGET_SUBDIR)/libga68/multilib.out; \
+         fi; \
+       else \
+         mv $(TARGET_SUBDIR)/libga68/multilib.tmp 
$(TARGET_SUBDIR)/libga68/multilib.out; \
+       fi; \
+       test ! -f $(TARGET_SUBDIR)/libga68/Makefile || exit 0; \
+       $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \
+       $(NORMAL_TARGET_EXPORTS)  \
+       echo Configuring in $(TARGET_SUBDIR)/libga68; \
+       cd "$(TARGET_SUBDIR)/libga68" || exit 1; \
+       case $(srcdir) in \
+         /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+         *) topdir=`echo $(TARGET_SUBDIR)/libga68/ | \
+               sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+       esac; \
+       module_srcdir=libga68; \
+       rm -f no-such-file || : ; \
+       CONFIG_SITE=no-such-file $(SHELL) \
+         $$s/$$module_srcdir/configure \
+         --srcdir=$${topdir}/$$module_srcdir \
+         $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+         --target=${target_alias}  \
+         || exit 1
+@endif target-libga68
+
+
+
+
+
+.PHONY: all-target-libga68 maybe-all-target-libga68
+maybe-all-target-libga68:
+@if gcc-bootstrap
+all-target-libga68: stage_current
+@endif gcc-bootstrap
+@if target-libga68
+TARGET-target-libga68=all
+maybe-all-target-libga68: all-target-libga68
+all-target-libga68: configure-target-libga68
+       @: $(MAKE); $(unstage)
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS)  \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
+               $(TARGET-target-libga68))
+@endif target-libga68
+
+
+
+
+
+.PHONY: check-target-libga68 maybe-check-target-libga68
+maybe-check-target-libga68:
+@if target-libga68
+maybe-check-target-libga68: check-target-libga68
+
+check-target-libga68:
+       @: $(MAKE); $(unstage)
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
+
+@endif target-libga68
+
+.PHONY: install-target-libga68 maybe-install-target-libga68
+maybe-install-target-libga68:
+@if target-libga68
+maybe-install-target-libga68: install-target-libga68
+
+install-target-libga68: installdirs
+       @: $(MAKE); $(unstage)
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
+
+@endif target-libga68
+
+.PHONY: install-strip-target-libga68 maybe-install-strip-target-libga68
+maybe-install-strip-target-libga68:
+@if target-libga68
+maybe-install-strip-target-libga68: install-strip-target-libga68
+
+install-strip-target-libga68: installdirs
+       @: $(MAKE); $(unstage)
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
+
+@endif target-libga68
+
+# Other targets (info, dvi, pdf, etc.)
+
+.PHONY: maybe-info-target-libga68 info-target-libga68
+maybe-info-target-libga68:
+@if target-libga68
+maybe-info-target-libga68: info-target-libga68
+
+info-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing info in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  info) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-dvi-target-libga68 dvi-target-libga68
+maybe-dvi-target-libga68:
+@if target-libga68
+maybe-dvi-target-libga68: dvi-target-libga68
+
+dvi-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing dvi in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  dvi) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-pdf-target-libga68 pdf-target-libga68
+maybe-pdf-target-libga68:
+@if target-libga68
+maybe-pdf-target-libga68: pdf-target-libga68
+
+pdf-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing pdf in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  pdf) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-html-target-libga68 html-target-libga68
+maybe-html-target-libga68:
+@if target-libga68
+maybe-html-target-libga68: html-target-libga68
+
+html-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing html in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  html) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-TAGS-target-libga68 TAGS-target-libga68
+maybe-TAGS-target-libga68:
+@if target-libga68
+maybe-TAGS-target-libga68: TAGS-target-libga68
+
+TAGS-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing TAGS in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  TAGS) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-install-info-target-libga68 install-info-target-libga68
+maybe-install-info-target-libga68:
+@if target-libga68
+maybe-install-info-target-libga68: install-info-target-libga68
+
+install-info-target-libga68: \
+    configure-target-libga68 \
+    info-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing install-info in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  install-info) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-install-dvi-target-libga68 install-dvi-target-libga68
+maybe-install-dvi-target-libga68:
+@if target-libga68
+maybe-install-dvi-target-libga68: install-dvi-target-libga68
+
+install-dvi-target-libga68: \
+    configure-target-libga68 \
+    dvi-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing install-dvi in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  install-dvi) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-install-pdf-target-libga68 install-pdf-target-libga68
+maybe-install-pdf-target-libga68:
+@if target-libga68
+maybe-install-pdf-target-libga68: install-pdf-target-libga68
+
+install-pdf-target-libga68: \
+    configure-target-libga68 \
+    pdf-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing install-pdf in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  install-pdf) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-install-html-target-libga68 install-html-target-libga68
+maybe-install-html-target-libga68:
+@if target-libga68
+maybe-install-html-target-libga68: install-html-target-libga68
+
+install-html-target-libga68: \
+    configure-target-libga68 \
+    html-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing install-html in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  install-html) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-installcheck-target-libga68 installcheck-target-libga68
+maybe-installcheck-target-libga68:
+@if target-libga68
+maybe-installcheck-target-libga68: installcheck-target-libga68
+
+installcheck-target-libga68: \
+    configure-target-libga68 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing installcheck in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  installcheck) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-mostlyclean-target-libga68 mostlyclean-target-libga68
+maybe-mostlyclean-target-libga68:
+@if target-libga68
+maybe-mostlyclean-target-libga68: mostlyclean-target-libga68
+
+mostlyclean-target-libga68: 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing mostlyclean in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  mostlyclean) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-clean-target-libga68 clean-target-libga68
+maybe-clean-target-libga68:
+@if target-libga68
+maybe-clean-target-libga68: clean-target-libga68
+
+clean-target-libga68: 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing clean in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  clean) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-distclean-target-libga68 distclean-target-libga68
+maybe-distclean-target-libga68:
+@if target-libga68
+maybe-distclean-target-libga68: distclean-target-libga68
+
+distclean-target-libga68: 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing distclean in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  distclean) \
+         || exit 1
+
+@endif target-libga68
+
+.PHONY: maybe-maintainer-clean-target-libga68 maintainer-clean-target-libga68
+maybe-maintainer-clean-target-libga68:
+@if target-libga68
+maybe-maintainer-clean-target-libga68: maintainer-clean-target-libga68
+
+maintainer-clean-target-libga68: 
+       @: $(MAKE); $(unstage)
+       @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(NORMAL_TARGET_EXPORTS) \
+       echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libga68"; \
+       for flag in $(EXTRA_TARGET_FLAGS); do \
+         eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export 
\1|"`; \
+       done; \
+       (cd $(TARGET_SUBDIR)/libga68 && \
+         $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+                 "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+                 "RANLIB=$${RANLIB}" \
+                 "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" 
"WINDMC=$${WINDMC}" \
+                  maintainer-clean) \
+         || exit 1
+
+@endif target-libga68
+
+
+
+
+
 .PHONY: configure-target-libgomp maybe-configure-target-libgomp
 maybe-configure-target-libgomp:
 @if gcc-bootstrap
@@ -64336,6 +64866,14 @@ check-gcc-cobol: gcc-site.exp
        (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-cobol);
 check-cobol: check-gcc-cobol check-target-libgcobol
 
+.PHONY: check-gcc-algol68 check-algol68
+check-gcc-algol68: gcc-site.exp
+       r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(HOST_EXPORTS) \
+       (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-algol68);
+check-algol68: check-gcc-algol68 check-target-libga68
+
 
 # The gcc part of install-no-fixedincludes, which relies on an intimate
 # knowledge of how a number of gcc internal targets (inter)operate.  Delegate.
@@ -67877,6 +68415,7 @@ configure-stageautofeedback-target-zlib: 
maybe-all-stageautofeedback-gcc
 configure-target-rda: stage_last
 configure-target-libada: stage_last
 configure-target-libgm2: stage_last
+configure-target-libga68: stage_last
 configure-stage1-target-libgomp: maybe-all-stage1-gcc
 configure-stage2-target-libgomp: maybe-all-stage2-gcc
 configure-stage3-target-libgomp: maybe-all-stage3-gcc
@@ -67921,6 +68460,7 @@ configure-target-zlib: maybe-all-gcc
 configure-target-rda: maybe-all-gcc
 configure-target-libada: maybe-all-gcc
 configure-target-libgm2: maybe-all-gcc
+configure-target-libga68: maybe-all-gcc
 configure-target-libgomp: maybe-all-gcc
 configure-target-libitm: maybe-all-gcc
 configure-target-libatomic: maybe-all-gcc
@@ -69221,6 +69761,9 @@ all-target-libgm2: maybe-all-target-libatomic
 @unless target-libstdc++-v3-bootstrap
 configure-target-libgrust: maybe-all-target-libstdc++-v3
 @endunless target-libstdc++-v3-bootstrap
+@unless target-libstdc++-v3-bootstrap
+configure-target-libga68: maybe-all-target-libstdc++-v3
+@endunless target-libstdc++-v3-bootstrap
 @unless target-libbacktrace-bootstrap
 configure-target-libgfortran: maybe-all-target-libbacktrace
 @endunless target-libbacktrace-bootstrap
@@ -69284,6 +69827,7 @@ all-target-libgo: maybe-all-target-libatomic
 configure-target-libgm2: maybe-all-target-libstdc++-v3
 all-target-libgm2: maybe-all-target-libatomic
 configure-target-libgrust: maybe-all-target-libstdc++-v3
+configure-target-libga68: maybe-all-target-libstdc++-v3
 configure-target-newlib: maybe-all-binutils
 configure-target-newlib: maybe-all-ld
 configure-target-libgfortran: maybe-all-target-libbacktrace
@@ -69390,6 +69934,7 @@ configure-target-zlib: maybe-all-target-libgcc
 configure-target-rda: maybe-all-target-libgcc
 configure-target-libada: maybe-all-target-libgcc
 configure-target-libgm2: maybe-all-target-libgcc
+configure-target-libga68: maybe-all-target-libgcc
 configure-target-libgomp: maybe-all-target-libgcc
 configure-target-libitm: maybe-all-target-libgcc
 configure-target-libatomic: maybe-all-target-libgcc
@@ -69436,6 +69981,8 @@ configure-target-libada: maybe-all-target-newlib 
maybe-all-target-libgloss
 
 configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss
 
+configure-target-libga68: maybe-all-target-newlib maybe-all-target-libgloss
+
 configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
 
 configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss
@@ -69533,6 +70080,7 @@ configure-target-zlib: maybe-all-target-libatomic
 configure-target-rda: maybe-all-target-libatomic
 configure-target-libada: maybe-all-target-libatomic
 configure-target-libgm2: maybe-all-target-libatomic
+configure-target-libga68: maybe-all-target-libatomic
 configure-target-libgomp: maybe-all-target-libatomic
 configure-target-libitm: maybe-all-target-libatomic
 configure-target-libgrust: maybe-all-target-libatomic
diff --git a/Makefile.tpl b/Makefile.tpl
index f4f0fc58df4f..362a21b2aff1 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -163,6 +163,8 @@ BUILD_EXPORTS = \
        CXX="$(CXX_FOR_BUILD)"; export CXX; \
        CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+       GA68="$(GA68_FOR_BUILD)"; export GA68; \
+       GA68FLAGS="$(GA68FLAGS_FOR_BUILD)"; export GA68FLAGS; \
        GOC="$(GOC_FOR_BUILD)"; export GOC; \
        GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
        GDC="$(GDC_FOR_BUILD)"; export GDC; \
@@ -206,6 +208,7 @@ HOST_EXPORTS = \
        CXX="$(CXX)"; export CXX; \
        CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
+       GA68="$(GA68)"; export GA68; \
        GOC="$(GOC)"; export GOC; \
        GDC="$(GDC)"; export GDC; \
        GM2="$(GM2)"; export GM2; \
@@ -281,6 +284,11 @@ POSTSTAGE1_HOST_EXPORTS = \
        CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \
        $(POSTSTAGE1_CXX_EXPORT) \
        $(LTO_EXPORTS) \
+       GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) 
-B$$r/$(HOST_SUBDIR)/prev-gcc/ \
+         -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \
+         -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \
+       export GA68; \
+       GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \
        GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) 
-B$$r/$(HOST_SUBDIR)/prev-gcc/ \
          -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \
          -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \
@@ -313,6 +321,7 @@ BASE_TARGET_EXPORTS = \
        CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
        CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
        GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; 
export GFORTRAN; \
+       GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export 
GA68; \
        GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
        GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
        GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \
@@ -383,6 +392,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@
 DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
 DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@
 GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
+GA68_FOR_BUILD = @GA68_FOR_BUILD@
 GOC_FOR_BUILD = @GOC_FOR_BUILD@
 GDC_FOR_BUILD = @GDC_FOR_BUILD@
 GM2_FOR_BUILD = @GM2_FOR_BUILD@
@@ -446,6 +456,7 @@ STRIP = @STRIP@
 WINDRES = @WINDRES@
 WINDMC = @WINDMC@
 
+GA68 = @GA68@
 GDC = @GDC@
 GNATBIND = @GNATBIND@
 GNATMAKE = @GNATMAKE@
@@ -456,6 +467,7 @@ LIBCFLAGS = $(CFLAGS)
 CXXFLAGS = @CXXFLAGS@
 LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
 GOCFLAGS = $(CFLAGS)
+GA68FLAGS = @GA68FLAGS@
 GDCFLAGS = @GDCFLAGS@
 GM2FLAGS = $(CFLAGS)
 
@@ -601,6 +613,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@
 RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@
 GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
 GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
+GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@
 GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
 GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@
 DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
@@ -630,6 +643,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) 
-fno-implicit-templates
 LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@
 GM2FLAGS_FOR_TARGET = -O2 -g
 GOCFLAGS_FOR_TARGET = -O2 -g
+GA68FLAGS_FOR_TARGET = -O2 -g
 GDCFLAGS_FOR_TARGET = -O2 -g
 
 FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@
@@ -734,6 +748,7 @@ EXTRA_HOST_FLAGS = \
        'DSYMUTIL=$(DSYMUTIL)' \
        'GFORTRAN=$(GFORTRAN)' \
        'GOC=$(GOC)' \
+       'GA68=$(GA68)' \
        'GDC=$(GDC)' \
        'GM2=$(GM2)' \
        'LD=$(LD)' \
@@ -762,6 +777,7 @@ STAGE1_FLAGS_TO_PASS = \
 POSTSTAGE1_FLAGS_TO_PASS = \
        CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
        CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
+       GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \
        GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \
        GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \
        GNATBIND="$${GNATBIND}" \
@@ -797,6 +813,8 @@ EXTRA_TARGET_FLAGS = \
        'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' 
\
        'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
        'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
+       'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+       'GA68FLAGS=$$(GA68FLAGS_FOR_TARGET)' \
        'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
        'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \
        'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
diff --git a/config/acx.m4 b/config/acx.m4
index db54ccf1c7c1..4e0c64172e6c 100644
--- a/config/acx.m4
+++ b/config/acx.m4
@@ -434,6 +434,12 @@ else
   have_cargo=no
 fi])
 
+# Test for Algol 68
+AC_DEFUN([ACX_PROG_GA68],
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])
+AC_REQUIRE([AC_PROG_CC])
+AC_CHECK_TOOL(GA68, ga68, no)])
+
 # Test for D.
 AC_DEFUN([ACX_PROG_GDC],
 [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])
diff --git a/configure b/configure
index d4da79e76690..e59746f3d000 100755
--- a/configure
+++ b/configure
@@ -620,6 +620,7 @@ AR_FOR_TARGET
 GM2_FOR_TARGET
 GDC_FOR_TARGET
 GOC_FOR_TARGET
+GA68_FOR_TARGET
 GFORTRAN_FOR_TARGET
 GCC_FOR_TARGET
 CXX_FOR_TARGET
@@ -633,6 +634,7 @@ GREP
 CPP
 PKG_CONFIG_PATH
 GDCFLAGS
+GA68FLAGS
 READELF
 OTOOL
 OBJDUMP
@@ -665,6 +667,7 @@ LDFLAGS_FOR_BUILD
 GNATMAKE_FOR_BUILD
 GDC_FOR_BUILD
 GOC_FOR_BUILD
+GA68_FOR_BUILD
 GFORTRAN_FOR_BUILD
 DSYMUTIL_FOR_BUILD
 DLLTOOL_FOR_BUILD
@@ -728,6 +731,7 @@ HAVE_CXX14
 do_compare
 CARGO
 GDC
+GA68
 GNATMAKE
 GNATBIND
 ac_ct_CXX
@@ -829,6 +833,7 @@ enable_libquadmath
 enable_libquadmath_support
 enable_libada
 enable_libgm2
+enable_libga68
 enable_libssp
 enable_libstdcxx
 enable_bootstrap
@@ -859,6 +864,7 @@ enable_host_shared
 enable_libgdiagnostics
 enable_stage1_languages
 enable_objc_gc
+enable_algol68_gc
 with_target_bdw_gc
 with_target_bdw_gc_include
 with_target_bdw_gc_lib
@@ -907,6 +913,7 @@ CC_FOR_TARGET
 CXX_FOR_TARGET
 GCC_FOR_TARGET
 GFORTRAN_FOR_TARGET
+GA68_FOR_TARGET
 GOC_FOR_TARGET
 GDC_FOR_TARGET
 GM2_FOR_TARGET
@@ -1576,6 +1583,7 @@ Optional Features:
                           disable libquadmath support for Fortran
   --enable-libada         build libada directory
   --enable-libgm2         build libgm2 directory
+  --enable-libga68        build libga68 directory
   --enable-libssp         build libssp directory
   --disable-libstdcxx     do not build libstdc++-v3 directory
   --enable-bootstrap      enable bootstrapping [yes if native build]
@@ -1599,6 +1607,8 @@ Optional Features:
                           Mostly useful for compiler development
   --enable-objc-gc        enable use of Boehm's garbage collector with the GNU
                           Objective-C runtime
+  --enable-algol68-gc     enable use of Boehm's garbage collector with the GNU
+                          Algol runtime
   --enable-vtable-verify  Enable vtable verification feature
   --enable-serial-[{host,target,build}-]configure
                           force sequential configuration of sub-packages for
@@ -1712,6 +1722,8 @@ Some influential environment variables:
               GCC for the target
   GFORTRAN_FOR_TARGET
               GFORTRAN for the target
+  GA68_FOR_TARGET
+              GA68 for the target
   GOC_FOR_TARGET
               GOC for the target
   GDC_FOR_TARGET
@@ -2916,6 +2928,7 @@ target_libraries="target-libgcc \
                target-libgcobol \
                target-libada \
                target-libgm2 \
+                target-libga68 \
                target-libgo \
                target-libgrust \
                target-libphobos \
@@ -3319,6 +3332,14 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then
   noconfigdirs="$noconfigdirs gm2tools"
 fi
 
+# Check whether --enable-libga68 was given.
+if test "${enable_libga68+set}" = set; then :
+  enableval=$enable_libga68; ENABLE_LIBGA68=$enableval
+else
+  ENABLE_LIBGA68=yes
+fi
+
+
 # Check whether --enable-libssp was given.
 if test "${enable_libssp+set}" = set; then :
   enableval=$enable_libssp; ENABLE_LIBSSP=$enableval
@@ -4301,6 +4322,7 @@ if test "${build}" != "${host}" ; then
   DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool}
   DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+  GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68}
   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
   GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
   GNATMAKE_FOR_BUILD=${GNATMAKE_FOR_BUILD-gnatmake}
@@ -4317,6 +4339,7 @@ else
   DLLTOOL_FOR_BUILD="\$(DLLTOOL)"
   DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
   GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
+  GA68_FOR_BUILD="\$(GA68)"
   GOC_FOR_BUILD="\$(GOC)"
   GDC_FOR_BUILD="\$(GDC)"
   GNATMAKE_FOR_BUILD="\$(GNATMAKE)"
@@ -5837,6 +5860,100 @@ fi
 
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ga68", so it can be a program 
name with args.
+set dummy ${ac_tool_prefix}ga68; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GA68+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GA68"; then
+  ac_cv_prog_GA68="$GA68" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GA68="${ac_tool_prefix}ga68"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GA68=$ac_cv_prog_GA68
+if test -n "$GA68"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68" >&5
+$as_echo "$GA68" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_GA68"; then
+  ac_ct_GA68=$GA68
+  # Extract the first word of "ga68", so it can be a program name with args.
+set dummy ga68; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GA68+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GA68"; then
+  ac_cv_prog_ac_ct_GA68="$ac_ct_GA68" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GA68="ga68"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GA68=$ac_cv_prog_ac_ct_GA68
+if test -n "$ac_ct_GA68"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GA68" >&5
+$as_echo "$ac_ct_GA68" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_GA68" = x; then
+    GA68="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not 
prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" 
>&2;}
+ac_tool_warned=yes ;;
+esac
+    GA68=$ac_ct_GA68
+  fi
+else
+  GA68="$ac_cv_prog_GA68"
+fi
+
+
+
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gdc", so it can be a program 
name with args.
 set dummy ${ac_tool_prefix}gdc; ac_word=$2
@@ -10383,6 +10500,11 @@ if test "${enable_objc_gc+set}" = set; then :
   enableval=$enable_objc_gc;
 fi
 
+# Check whether --enable-algol68-gc was given.
+if test "${enable_algol68_gc+set}" = set; then :
+  enableval=$enable_algol68_gc;
+fi
+
 
 # Check whether --with-target-bdw-gc was given.
 if test "${with_target_bdw_gc+set}" = set; then :
@@ -10402,22 +10524,23 @@ if test "${with_target_bdw_gc_lib+set}" = set; then :
 fi
 
 
-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" 
>&5
+case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in
+  *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage 
collector" >&5
 $as_echo_n "checking for bdw garbage collector... " >&6; }
-  if test 
"x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; 
then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in 
default locations" >&5
+    if test 
"x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; 
then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in 
default locations" >&5
 $as_echo "using bdw-gc in default locations" >&6; }
-  else
-        if test "x$with_target_bdw_gc_include" = x && test 
"x$with_target_bdw_gc_lib" != x; then
-      as_fn_error $? "found --with-target-bdw-gc-lib but 
--with-target-bdw-gc-include missing" "$LINENO" 5
-    elif test "x$with_target_bdw_gc_include" != x && test 
"x$with_target_bdw_gc_lib" = x; then
-      as_fn_error $? "found --with-target-bdw-gc-include but 
--with-target-bdw-gc-lib missing" "$LINENO" 5
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured 
with --with-target-bdw-gc options" >&5
+            if test "x$with_target_bdw_gc_include" = x && test 
"x$with_target_bdw_gc_lib" != x; then
+        as_fn_error $? "found --with-target-bdw-gc-lib but 
--with-target-bdw-gc-include missing" "$LINENO" 5
+      elif test "x$with_target_bdw_gc_include" != x && test 
"x$with_target_bdw_gc_lib" = x; then
+        as_fn_error $? "found --with-target-bdw-gc-include but 
--with-target-bdw-gc-lib missing" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths 
configured with --with-target-bdw-gc options" >&5
 $as_echo "using paths configured with --with-target-bdw-gc options" >&6; }
+      fi
     fi
-  fi
 esac
 
 # Disable libitm, libsanitizer, libvtv if we're not building C++
@@ -11746,6 +11869,7 @@ done
 
 
 
+
 
 
 # Generate default definitions for YACC, M4, LEX and other programs that run
@@ -14266,6 +14390,9 @@ fi
 
 
 
+GA68FLAGS=${GA68FLAGS-${CFLAGS}}
+
+
 GDCFLAGS=${GDCFLAGS-${CFLAGS}}
 
 
@@ -15594,6 +15721,167 @@ fi
 
 
 
+if test -n "$GA68_FOR_TARGET"; then
+  ac_cv_prog_GA68_FOR_TARGET=$GA68_FOR_TARGET
+elif test -n "$ac_cv_prog_GA68_FOR_TARGET"; then
+  GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET
+fi
+
+if test -n "$ac_cv_prog_GA68_FOR_TARGET"; then
+  for ncn_progname in ga68; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name 
with args.
+set dummy ${ncn_progname}; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GA68_FOR_TARGET"; then
+  ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the 
test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET
+if test -n "$GA68_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5
+$as_echo "$GA68_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test -n "$with_build_time_tools"; 
then
+  for ncn_progname in ga68; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in 
$with_build_time_tools" >&5
+$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/${ncn_progname}; then
+      ac_cv_prog_GA68_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_GA68_FOR_TARGET"; then
+  for ncn_progname in ga68; do
+    if test -n "$ncn_target_tool_prefix"; then
+      # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", 
so it can be a program name with args.
+set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GA68_FOR_TARGET"; then
+  ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the 
test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GA68_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET
+if test -n "$GA68_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5
+$as_echo "$GA68_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test $build = $target ; then
+      # Extract the first word of "${ncn_progname}", so it can be a program 
name with args.
+set dummy ${ncn_progname}; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GA68_FOR_TARGET"; then
+  ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the 
test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" 
>&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET
+if test -n "$GA68_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5
+$as_echo "$GA68_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    test -n "$ac_cv_prog_GA68_FOR_TARGET" && break
+  done
+fi
+
+if test -z "$ac_cv_prog_GA68_FOR_TARGET" ; then
+  set dummy ga68
+  if test $build = $target ; then
+    GA68_FOR_TARGET="$2"
+  else
+    GA68_FOR_TARGET="${ncn_target_tool_prefix}$2"
+  fi
+else
+  GA68_FOR_TARGET="$ac_cv_prog_GA68_FOR_TARGET"
+fi
+
+
+
 if test -n "$GOC_FOR_TARGET"; then
   ac_cv_prog_GOC_FOR_TARGET=$GOC_FOR_TARGET
 elif test -n "$ac_cv_prog_GOC_FOR_TARGET"; then
@@ -20060,6 +20348,51 @@ $as_echo "pre-installed" >&6; }
   fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target 
ga68" >&5
+$as_echo_n "checking where to find the target ga68... " >&6; }
+if test "x${build}" != "x${host}" ; then
+  if expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GA68_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" 
>&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  else
+    # Canadian cross, just use what we found
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+else
+  ok=yes
+  case " ${configdirs} " in
+    *" gcc "*) ;;
+    *) ok=no ;;
+  esac
+  case ,${enable_languages}, in
+    *,algol68,*) ;;
+    *) ok=no ;;
+  esac
+  if test $ok = yes; then
+    # An in-tree tool is available and we can use it
+    GA68_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5
+$as_echo "just compiled" >&6; }
+  elif expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GA68_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" 
>&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  elif test "x$target" = "x$host"; then
+    # We can use an host tool
+    GA68_FOR_TARGET='$(GA68)'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+$as_echo "host tool" >&6; }
+  else
+    # We need a cross tool
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target 
gdc" >&5
 $as_echo_n "checking where to find the target gdc... " >&6; }
 if test "x${build}" != "x${host}" ; then
diff --git a/configure.ac b/configure.ac
index 456a673b9bbe..2fb385961df6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,6 +166,7 @@ target_libraries="target-libgcc \
                target-libgcobol \
                target-libada \
                target-libgm2 \
+                target-libga68 \
                target-libgo \
                target-libgrust \
                target-libphobos \
@@ -514,6 +515,11 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then
   noconfigdirs="$noconfigdirs gm2tools"
 fi
 
+AC_ARG_ENABLE(libga68,
+[AS_HELP_STRING([--enable-libga68], [build libga68 directory])],
+ENABLE_LIBGA68=$enableval,
+ENABLE_LIBGA68=yes)
+
 AC_ARG_ENABLE(libssp,
 [AS_HELP_STRING([--enable-libssp], [build libssp directory])],
 ENABLE_LIBSSP=$enableval,
@@ -1451,6 +1457,7 @@ if test "${build}" != "${host}" ; then
   DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool}
   DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+  GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68}
   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
   GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
   GNATMAKE_FOR_BUILD=${GNATMAKE_FOR_BUILD-gnatmake}
@@ -1467,6 +1474,7 @@ else
   DLLTOOL_FOR_BUILD="\$(DLLTOOL)"
   DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
   GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
+  GA68_FOR_BUILD="\$(GA68)"
   GOC_FOR_BUILD="\$(GOC)"
   GDC_FOR_BUILD="\$(GDC)"
   GNATMAKE_FOR_BUILD="\$(GNATMAKE)"
@@ -1520,6 +1528,7 @@ int main() {}])],
 fi
 
 ACX_PROG_GNAT
+ACX_PROG_GA68
 ACX_PROG_GDC
 ACX_PROG_CARGO
 ACX_PROG_CMP_IGNORE_INITIAL
@@ -2644,6 +2653,10 @@ AC_ARG_ENABLE(objc-gc,
 [AS_HELP_STRING([--enable-objc-gc],
                [enable use of Boehm's garbage collector with the
                 GNU Objective-C runtime])])
+AC_ARG_ENABLE(algol68-gc,
+[AS_HELP_STRING([--enable-algol68-gc],
+                [enable use of Boehm's garbage collector with the
+                 GNU Algol runtime])])
 AC_ARG_WITH([target-bdw-gc],
 [AS_HELP_STRING([--with-target-bdw-gc=PATHLIST],
                [specify prefix directory for installed bdw-gc package.
@@ -2656,21 +2669,22 @@ AC_ARG_WITH([target-bdw-gc-lib],
 [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST],
                [specify directories for installed bdw-gc library])])
                  
-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto)
-  AC_MSG_CHECKING([for bdw garbage collector])
-  if test 
"x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; 
then
-    dnl no bdw-gw options, assume default locations
-    AC_MSG_RESULT([using bdw-gc in default locations])
-  else
-    dnl bdw-gw options, first error checking, complete checking in libobjc
-    if test "x$with_target_bdw_gc_include" = x && test 
"x$with_target_bdw_gc_lib" != x; then
-      AC_MSG_ERROR([found --with-target-bdw-gc-lib but 
--with-target-bdw-gc-include missing])
-    elif test "x$with_target_bdw_gc_include" != x && test 
"x$with_target_bdw_gc_lib" = x; then
-      AC_MSG_ERROR([found --with-target-bdw-gc-include but 
--with-target-bdw-gc-lib missing])
+case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in
+  *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto)
+    AC_MSG_CHECKING([for bdw garbage collector])
+    if test 
"x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; 
then
+      dnl no bdw-gw options, assume default locations
+      AC_MSG_RESULT([using bdw-gc in default locations])
     else
-      AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options])
+      dnl bdw-gw options, first error checking, complete checking in libobjc 
and libga68
+      if test "x$with_target_bdw_gc_include" = x && test 
"x$with_target_bdw_gc_lib" != x; then
+        AC_MSG_ERROR([found --with-target-bdw-gc-lib but 
--with-target-bdw-gc-include missing])
+      elif test "x$with_target_bdw_gc_include" != x && test 
"x$with_target_bdw_gc_lib" = x; then
+        AC_MSG_ERROR([found --with-target-bdw-gc-include but 
--with-target-bdw-gc-lib missing])
+      else
+        AC_MSG_RESULT([using paths configured with --with-target-bdw-gc 
options])
+      fi
     fi
-  fi
 esac
 
 # Disable libitm, libsanitizer, libvtv if we're not building C++
@@ -3917,6 +3931,7 @@ AC_SUBST(CXX_FOR_BUILD)
 AC_SUBST(DLLTOOL_FOR_BUILD)
 AC_SUBST(DSYMUTIL_FOR_BUILD)
 AC_SUBST(GFORTRAN_FOR_BUILD)
+AC_SUBST(GA68_FOR_BUILD)
 AC_SUBST(GOC_FOR_BUILD)
 AC_SUBST(GDC_FOR_BUILD)
 AC_SUBST(GNATMAKE_FOR_BUILD)
@@ -4012,6 +4027,9 @@ AC_SUBST(CC)
 AC_SUBST(CXX)
 AC_SUBST(CFLAGS)
 AC_SUBST(CXXFLAGS)
+AC_SUBST(GA68)
+AC_SUBST(GA68FLAGS)
+GA68FLAGS=${GA68FLAGS-${CFLAGS}}
 AC_SUBST(GDC)
 AC_SUBST(GDCFLAGS)
 GDCFLAGS=${GDCFLAGS-${CFLAGS}}
@@ -4060,6 +4078,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc)
 NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx)
 NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET})
 NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran)
+NCN_STRICT_CHECK_TARGET_TOOLS(GA68_FOR_TARGET, ga68)
 NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo)
 NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc)
 NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2)
@@ -4111,6 +4130,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN,
                [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran)
 GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC,
                [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go)
+GCC_TARGET_TOOL(ga68, GA68_FOR_TARGET, GA68,
+                [gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/], algol68)
 GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC,
                [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d)
 GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2,
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 02cc38ce57e0..2c3194e7d1e3 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3902,7 +3902,8 @@ $(build_htmldir)/gccinstall/index.html: 
$(TEXI_GCCINSTALL_FILES)
 .PHONY: regenerate-opt-urls
 OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \
        $(build_htmldir)/gdc/Option-Index.html \
-       $(build_htmldir)/gfortran/Option-Index.html
+       $(build_htmldir)/gfortran/Option-Index.html \
+       $(build_htmldir)/ga68/Option-Index.html
 $(OPT_URLS_HTML_DEPS): %/Option-Index.html: %/index.html
 
 regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS)
diff --git a/gcc/algol68/Make-lang.in b/gcc/algol68/Make-lang.in
new file mode 100644
index 000000000000..11756f772627
--- /dev/null
+++ b/gcc/algol68/Make-lang.in
@@ -0,0 +1,287 @@
+# Make-lang.in -- Top level -*- makefile -*- fragment for GCC Algol 68
+# frontend.
+
+# Copyright (C) 2025 Free Software Foundation, Inc.
+
+# This file is NOT part of GCC.
+
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# This file provides the language dependent support in the main Makefile.
+
+.PHONY: algol68
+
+# Installation name.
+
+A68_INSTALL_NAME = $(shell echo ga68|sed '$(program_transform_name)')
+A68_TARGET_INSTALL_NAME = $(target_noncanonical)-$(shell echo ga68|sed 
'$(program_transform_name)')
+
+# General hooks
+
+algol68: a681$(exeext)
+algol68.serial = a681$(exeext)
+
+.PHONY: algol68
+
+# Use maximal warnings for this front end.
+algol68-warn = $(STRICT_WARN)
+
+# First the driver, ga68.
+
+GA68_OBJS = \
+   $(GCC_OBJS) \
+   algol68/a68spec.o \
+   $(END)
+
+a68spec.o: $(srcdir)/algol68/a68spec.cc $(SYSTEM_H) coretypes.h $(TM_H) 
$(GCC_H) \
+     $(CONFIG_H) opts.h
+       $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \
+                $(INCLUDES) $(srcdir)/algol68/a68spec.cc
+
+ga68$(exeext): $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS)
+       +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
+         $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
+         $(EXTRA_GCC_LIBS) $(LIBS)
+
+# Now the compiler proper, a681.
+
+ALGOL68_OBJS = algol68/a68-lang.o \
+               algol68/a68-unistr.o \
+               algol68/a68-moids-diagnostics.o \
+               algol68/a68-moids-misc.o \
+               algol68/a68-moids-to-string.o \
+               algol68/a68-postulates.o \
+               algol68/a68-diagnostics.o \
+               algol68/a68-exports.o \
+               algol68/a68-imports.o \
+               algol68/a68-parser.o \
+               algol68/a68-parser-keywords.o \
+               algol68/a68-parser-bottom-up.o \
+               algol68/a68-parser-brackets.o \
+               algol68/a68-parser-debug.o \
+               algol68/a68-parser-extract.o \
+               algol68/a68-parser-modes.o \
+               algol68/a68-parser-moids-check.o \
+               algol68/a68-parser-moids-coerce.o \
+               algol68/a68-parser-moids-equivalence.o \
+               algol68/a68-parser-pragmat.o \
+               algol68/a68-parser-scanner.o \
+               algol68/a68-parser-scope.o \
+               algol68/a68-parser-serial-dsa.o \
+               algol68/a68-parser-taxes.o \
+               algol68/a68-parser-top-down.o \
+               algol68/a68-parser-victal.o \
+               algol68/a68-parser-prelude.o \
+               algol68/a68-low.o \
+               algol68/a68-low-builtins.o \
+               algol68/a68-low-clauses.o \
+               algol68/a68-low-coercions.o \
+               algol68/a68-low-decls.o \
+               algol68/a68-low-generator.o \
+               algol68/a68-low-misc.o \
+               algol68/a68-low-moids.o \
+               algol68/a68-low-multiples.o \
+               algol68/a68-low-refs.o \
+               algol68/a68-low-procs.o \
+               algol68/a68-low-structs.o \
+               algol68/a68-low-chars.o \
+               algol68/a68-low-strings.o \
+               algol68/a68-low-ints.o \
+               algol68/a68-low-bools.o \
+               algol68/a68-low-reals.o \
+               algol68/a68-low-complex.o \
+               algol68/a68-low-bits.o \
+               algol68/a68-low-posix.o \
+               algol68/a68-low-prelude.o \
+               algol68/a68-low-ranges.o \
+               algol68/a68-low-runtime.o \
+               algol68/a68-low-unions.o \
+               algol68/a68-low-units.o \
+               $(END)
+
+ALGOL68_ALL_OBJS = $(ALGOL68_OBJS)
+
+algol68_OBJS = $(ALGOL68_ALL_OBJS) algol68/a68spec.o
+
+a681$(exeext): $(ALGOL68_ALL_OBJS) attribs.o $(BACKEND) $(LIBDEPS) 
$(algol68.prev)
+       @$(call LINK_PROGRESS,$(INDEX.algol68),start)
+       +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
+             $(ALGOL68_OBJS) attribs.o $(BACKEND) $(LIBS) $(A681_LIBS) 
$(BACKENDLIBS)
+       @$(call LINK_PROGRESS,$(INDEX.algol68),end)
+
+algol68/tfspec.o: $(srcdir)/algol68/tfspec.c \
+                     $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CONFIG_H) 
$(TREE_H)
+
+# Documentation.
+
+A68_MANUAL_FILES =
+
+A68_MANUAL_FILES = \
+               algol68/ga68.texi \
+               $(gcc_docdir)/include/fdl.texi \
+               $(gcc_docdir)/include/gpl_v3.texi \
+               $(gcc_docdir)/include/gcc-common.texi \
+               gcc-vers.texi
+
+A68_INT_MANUAL_FILES = \
+               algol68/ga68-internals.texi \
+               $(gcc_docdir)/include/fdl.texi \
+               $(gcc_docdir)/include/gcc-common.texi \
+               gcc-vers.texi
+
+A68_TEXI_FILES = $(A68_MANUAL_FILES) $(A68_INT_MANUAL_FILES)
+
+doc/ga68.info: $(A68_MANUAL_FILES)
+       if test "x$(BUILD_INFO)" = xinfo; then \
+         rm -f doc/ga68.info*; \
+         $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
+               -I $(gcc_docdir)/include -o $@ $<; \
+       else true; fi
+
+doc/ga68-internals.info: $(A68_INT_MANUAL_FILES)
+       if test "x$(BUILD_INFO)" = xinfo; then \
+         rm -f doc/ga68-internals.info*; \
+         $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
+               -I $(gcc_docdir)/include -o $@ $<; \
+       else true; fi
+
+doc/ga68.dvi: $(A68_MANUAL_FILES)
+       $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $<
+
+doc/ga68-internals.dvi: $(A68_INT_MANUAL_FILES)
+       $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $<
+
+doc/ga68.pdf: $(A68_MANUAL_FILES)
+       $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $<
+
+doc/ga68-internals.pdf: $(A68_INT_MANUAL_FILES)
+       $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $<
+
+$(build_htmldir)/ga68/index.html: $(A68_MANUAL_FILES)
+       $(mkinstalldirs) $(@D)
+       rm -f $(@D)/*
+       $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \
+               -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $<
+
+$(build_htmldir)/ga68-internals/index.html: $(A68_INT_MANUAL_FILES)
+       $(mkinstalldirs) $(@D)
+       rm -f $(@D)/*
+       $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \
+               -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $<
+
+.INTERMEDIATE: ga68.pod
+
+ga68.pod: algol68/ga68.texi
+       -$(TEXI2POD) -D ga68 < $< > $@
+
+# Build hooks.
+
+algol68.srcextra:
+
+algol68.all.cross: ga68$(exeext)
+algol68.start.encap: ga68$(exeect)
+algol68.rest.encap:
+algol68.info: doc/ga68.info doc/ga68-internals.info
+algol68.dvi: doc/ga68.dvi doc/ga68-internals.dvi
+algol68.pdf: doc/ga68.pdf doc/ga68-internals.pdf
+algol68.install-pdf:
+algol68.html: $(build_htmldir)/ga68/index.html 
$(build_htmldir)/ga68-internals/index.html
+algol68.man: doc/ga68.1
+algol68.srcinfo: doc/ga68.info doc/ga68-internals.info
+       -cp -p $^ $(srcdir)/doc
+algol68.srcinfo:
+algol68.srcman:
+algol68.srcman: doc/ga68.1
+       -cp -p $^ $(srcdir)/doc
+algol68.install-plugin:
+
+algol68.tags: force
+       cd $(srcdir)/algol68; etags -o TAGS.sub *.c *.h; \
+       etags --include TAGS.sub --include ../TAGS.sub
+
+lang_checks += check-algol68
+lang_checks_parallelized += check-algol68
+check_algol68_parallelize = 10
+
+selftest-algol68:
+
+#
+# Install hooks:
+
+algol68.install-common: installdirs
+       -rm -f $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext)
+       $(INSTALL_PROGRAM) ga68$(exeext) 
$(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext)
+
+algol68.install-man: $(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext)
+
+$(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext): doc/ga68.1 installdirs
+       -rm -f $@
+       -$(INSTALL_DATA) $< $@
+       -chmod a-x $@
+
+$(DESTDIR)$(man7dir)/%.7algol: doc/%.7algol installdirs
+       -rm -f $@
+       -$(INSTALL_DATA) $< $@
+       -chmod a-x $@
+
+algol68.install-info: $(DESTDIR)$(infodir)/ga68.info 
$(DESTDIR)$(infodir)/ga68-internals.info
+
+algol68.install-html: $(build_htmldir)/ga68 $(build_htmldir)/ga68-internals
+       @$(NORMAL_INSTALL)
+       test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
+       @for p in $(build_htmldir)/ga68; do \
+         if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; 
fi; \
+         f=$(html__strip_dir) \
+         if test -d "$$d$$p"; then \
+           echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+           echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
+         else \
+           echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+           $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+         fi; \
+       done
+
+algol68.uninstall:
+#
+# Clean hooks:
+# A lot of the ancillary files are deleted by the main makefile.
+# We just have to delete files specific to us.
+algol68.mostlyclean:
+       -rm -f algol68/*$(objext) algol68/xforward algol68/fflags
+       -rm -f algol68/*$(coverageexts)
+algol68.clean: algol68.mostlyclean
+algol68.distclean:
+       -rm -f algol68/Makefile algol68/Make-host algol68/Make-target
+       -rm -f algol68/config.status algol68/config.cache
+algol68.maintainer-clean:
+       -rm -f $(gcc_docdir)/*.7algol
+
+#
+# Stage hooks:
+
+algol68.stage1: stage1-start
+       -mv algol68/*$(objext) stage1/algol68
+algol68.stage2: stage2-start
+       -mv algol68/*$(objext) stage2/algol68
+algol68.stage3: stage3-start
+       -mv algol68/*$(objext) stage3/algol68
+algol68.stage4: stage4-start
+       -mv algol68/*$(objext) stage4/algol68
+algol68.stageprofile: stageprofile-start
+       -mv algol68/*$(objext) stageprofile/algol68
+algol68.stagefeedback: stagefeedback-start
+       -mv algol68/*$(objext) stagefeedback/algol68
diff --git a/gcc/algol68/config-lang.in b/gcc/algol68/config-lang.in
new file mode 100644
index 000000000000..e3de063715de
--- /dev/null
+++ b/gcc/algol68/config-lang.in
@@ -0,0 +1,32 @@
+# config-lang.in -- Top level configure fragment for gcc Algol 68 frontend.
+
+# Copyright (C) 2025 Free Software Foundation, Inc.
+
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Configure looks for the existence of this file to auto-config each language.
+# We define several parameters used by configure:
+#
+# language     - name of language as it would appear in $(LANGUAGES)
+# compilers    - value to add to $(COMPILERS)
+
+language="algol68"
+compilers="a681\$(exeext)"
+gtfiles="\$(srcdir)/algol68/a68-types.h \$(srcdir)/algol68/a68.h 
\$(srcdir)/algol68/a68-lang.cc \$(srcdir)/algol68/a68-low-ranges.cc"
+
+target_libs="target-libga68"
+
+# Do not build by default.
+build_by_default="no"

Reply via email to