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"
