8/19 modula2 front end: libgm2 contents

Message ID E1ohukT-00Bm1G-6p@lancelot
State Accepted, archived
Headers
Series 8/19 modula2 front end: libgm2 contents |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Gaius Mulley Oct. 10, 2022, 3:31 p.m. UTC
  This patch set consists of the libgm2 makefile, autoconf sources
necessary to build the libm2pim, libm2iso, libm2min, libm2cor
and libm2log.

 
------8<----------8<----------8<----------8<----------8<----------8<----
  

Comments

Richard Biener Nov. 18, 2022, 10:26 a.m. UTC | #1
On Mon, Oct 10, 2022 at 5:35 PM Gaius Mulley via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
>
>
> This patch set consists of the libgm2 makefile, autoconf sources
> necessary to build the libm2pim, libm2iso, libm2min, libm2cor
> and libm2log.

This looks OK.  I suppose it was also tested building a cross-compiler?

Can we get some up-to-date status on the build and support status for the
list of primary and secondary platforms we list on
https://gcc.gnu.org/gcc-13/criteria.html?

Thanks,
Richard.

>
> ------8<----------8<----------8<----------8<----------8<----------8<----
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/ChangeLog
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/ChangeLog      2022-10-07 20:21:18.730097923 +0100
> @@ -0,0 +1,506 @@
> +2022-05-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Corrected dates on all source files.
> +       * libm2pim/Selective.c: Reformatted comments.
> +       * libm2pim/SysExceptions.c: Reformatted comments.
> +       * libm2pim/dtoa.c: Reformatted comments.
> +       * libm2pim/ldtoa.c: Reformatted comments.
> +       * libm2pim/sckt.c: Reformatted comments.
> +       * libm2pim/termios.c: Reformatted comments.
> +       * libm2pim/wrapc.c: Reformatted comments.
> +       * libm2pim/termios.c: Reformatted comments within enum.
> +       * libm2pim/Selective.c: Correct spelling.
> +       * libm2pim/termios.c: Use GNU comment formatting.
> +
> +2022-05-17  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Corrected dates on all source files.
> +
> +2022-03-02  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2pim/sckt.c (tcpServerEstablishPort): Corrected spelling.
> +       (tcpServerEstablish) Corrected spelling.
> +
> +2021-06-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.am: renamed getopt.c to cgetopt.c.
> +
> +2021-05-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.in: (rebuilt).
> +       * aclocal.m4: (rebuilt).
> +       * configure: (rebuilt).
> +       * configure.ac: tidied up messages.  Removed android
> +       from the list of supported hosts.  Corrected a comment
> +       * libm2pim/Makefile.am: Conditionally build.
> +       * libm2cor/Makefile.am: Conditionally build.
> +       * libm2log/Makefile.am: Conditionally build.
> +       * libm2iso/Makefile.am: Conditionally build.
> +       * libm2cor/Makefile.in: (Rebuilt).
> +       * libm2iso/Makefile.in: (Rebuilt).
> +       * libm2log/Makefile.in: (Rebuilt).
> +       * libm2min/Makefile.in: (Rebuilt).
> +       * libm2pim/Makefile.in: (Rebuilt).
> +
> +2021-05-28  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.in: (Rebuilt).
> +       * aclocal.m4: (Rebuilt).
> +       * configure: (Rebuilt).
> +       * configure.ac: Introduce checks for supported host
> +       operating system and also known detect target architectures
> +       which are currently restricted to minimal runtime libraries.
> +       * libm2cor/Makefile.in: (Rebuilt).
> +       * libm2iso/Makefile.in: (Rebuilt).
> +       * libm2log/Makefile.in: (Rebuilt).
> +       * libm2min/Makefile.in: (Rebuilt).
> +       * libm2pim/Makefile.in: (Rebuilt).
> +
> +2021-02-12  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2iso/RTco.c: (threadSem) new declaration
> +        and implmentation of thread semaphores used internally by
> +        the m2 runtime system.
> +
> +2021-01-13  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.am: Updated dates.
> +       * aclocal.m4: (Rebuilt).
> +       * autogen.sh: Updated dates.
> +       * configure: (Rebuilt).
> +       * configure.ac: Updated dates.
> +       * libm2cor/KeyBoardLEDs.c: Updated dates.
> +       * libm2cor/Makefile.am: Updated dates.
> +       * libm2iso/ChanConsts.h: Updated dates.
> +       * libm2iso/ErrnoCategory.c: Updated dates.
> +       * libm2iso/Makefile.am: Updated dates.
> +       * libm2iso/RTco.c: Updated dates.
> +       * libm2iso/wrapsock.c: Updated dates.
> +       * libm2iso/wraptime.c: Updated dates.
> +       * libm2log/Break.c: Updated dates.
> +       * libm2log/Makefile.am: Updated dates.
> +       * libm2min/Makefile.am: Updated dates.
> +       * libm2min/libc.c: Updated dates.
> +       * libm2pim/Makefile.am: Updated dates.
> +       * libm2pim/Selective.c: Updated dates.
> +       * libm2pim/SysExceptions.c: Updated dates.
> +       * libm2pim/UnixArgs.c: Updated dates.
> +       * libm2pim/dtoa.c: Updated dates.
> +       * libm2pim/errno.c: Updated dates.
> +       * libm2pim/getopt.c: Updated dates.
> +       * libm2pim/ldtoa.c: Updated dates.
> +       * libm2pim/sckt.c: Updated dates.
> +       * libm2pim/target.c: Updated dates.
> +       * libm2pim/termios.c: Updated dates.
> +       * libm2pim/wrapc.c: Updated dates.
> +
> +2020-11-20  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.in: (Rebuilt).
> +       * aclocal.m4: (Rebuilt).
> +       * configure: (Rebuilt).
> +       * configure.ac: (libtool_VERSION=17.0.0)
> +
> +2020-06-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.in: (Rebuilt).
> +       * aclocal.m4: (Rebuilt).
> +       * autogen.sh: Execute automake including dependencies.
> +       * configure: (Rebuilt).
> +       * libm2cor/Makefile.in: (Rebuilt).
> +       * libm2iso/Makefile.in: (Rebuilt).
> +       * libm2log/Makefile.am: SYSTEM.def is a dependency using
> +         BUILT_SOURCES.
> +       * libm2log/Makefile.in: (Rebuilt).
> +       * libm2min/Makefile.in: (Rebuilt).
> +       * libm2pim/Makefile.in: (Rebuilt).
> +
> +2020-06-15  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2pim/Makefile.am: Added SYSTEM.def as a dependency.
> +       * libm2log/Makefile.am: Added SYSTEM.def as a dependency.
> +
> +2020-06-11  Matthias Klose  <doko@ubuntu.com>
> +
> +       * Makefile.am: Reordered libraries.
> +       * Makefile.in: (Rebuilt).
> +       * libm2pim/Makefile.am: (libm2pim_la_LIBADD) Added
> +          definition.
> +       * libm2pim/Makefile.in: (Rebuilt).
> +
> +2020-05-01  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2cor/KeyBoardLEDs.c: Include sys/ioctl.h
> +          and stdio.h to fix implicit declarations of ioctl and
> +         perror.
> +       * libm2iso/RTco.c: Include <sys/select.h>.
> +       * libm2pim/SysExceptions.c: (HAVE_STDIO_H) Checked
> +         and stdio.h included to fix perror implicit declaration.
> +
> +2020-04-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2pim/wrapc.c: (HAVE_SYS_TYPES_H) checked to include
> +          sys/types.h.  (HAVE_TIME_H) checked to include time.h.
> +          Fixes missing prototype errors.  (HAVE_UNISTD_H) checked
> +         to include unistd.h to fix getuid missing prototype.
> +
> +2020-01-08  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2min/libc.c: (exit) noreturn added.
> +         (abort) noreturn added.
> +
> +2019-12-10  Matthias Klose  <doko@ubuntu.com>
> +
> +       * libm2cor/Makefile.am: (libsubdir) Corrected using
> +         target_alias.
> +       * libm2iso/Makefile.am: (libsubdir) Corrected using
> +         target_alias.
> +       * libm2log/Makefile.am: (libsubdir) Corrected using
> +         target_alias.
> +       * libm2min/Makefile.am: (libsubdir) Corrected using
> +         target_alias.
> +       * libm2pim/Makefile.am: (libsubdir) Corrected using
> +         target_alias.
> +       * libm2cor/Makefile.in: Regenerated.
> +       * libm2iso/Makefile.in: Regenerated.
> +       * libm2log/Makefile.in: Regenerated.
> +       * libm2min/Makefile.in: Regenerated.
> +       * libm2pim/Makefile.in: Regenerated.
> +
> +2019-12-10  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2iso/RTco.c: Corrected include files
> +          for target building.
> +
> +2019-12-09  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * configure.ac: Remove reference to config dir.
> +          (ACX_NONCANONICAL_TARGET) Removed.
> +       * libm2cor/Makefile.in: Regenerated.
> +       * libm2iso/Makefile.in: Regenerated.
> +       * libm2log/Makefile.in: Regenerated.
> +       * libm2min/Makefile.in: Regenerated.
> +       * libm2pim/Makefile.in: Regenerated.
> +       * configure.ac: (LT_INIT) Used instead of AM_PROG_LIBTOOL.
> +       * libm2cor/Makefile.in: Regenerated.
> +       * libm2iso/Makefile.in: Regenerated.
> +       * libm2log/Makefile.in: Regenerated.
> +       * libm2min/Makefile.in: Regenerated.
> +       * libm2pim/Makefile.in: Regenerated.
> +
> +2019-12-04  Matthias Klose  <doko@ubuntu.com>
> +
> +       * Makefile.in: Regenerated.
> +       * aclocal.m4: Regenerated from automake-1.15.1.
> +       * libm2cor/Makefile.am: Added -version-info.
> +       * libm2cor/Makefile.in: Regenerated.
> +       * libm2iso/Makefile.am: Added -version-info.
> +       * libm2iso/Makefile.in: Regenerated.
> +       * libm2log/Makefile.am: Added -version-info.
> +       * libm2log/Makefile.in: Regenerated.
> +       * libm2min/Makefile.am: Added -version-info.
> +       * libm2min/Makefile.in: Regenerated.
> +       * libm2pim/Makefile.am: Added -version-info.
> +       * libm2pim/Makefile.in: Regenerated.
> +
> +2019-12-03  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2min/Makefile.am: (M2LIBDIR) Corrected
> +          destination directory to m2/m2min.
> +
> +2019-11-19  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * multilib fixes
> +       * Makefile.am: (MULTIBUILDTOP) propagate.
> +       * Makefile.in: (Regenerated).
> +       * configure: (Regenerated).
> +       * configure.ac: (ACX_NONCANONICAL_TARGET) Removed.
> +       * libm2cor/Makefile.am: (MULTIBUILDTOP) Propagate.
> +       * libm2cor/Makefile.in: (Regenerated).
> +       * libm2iso/Makefile.am: (MULTIBUILDTOP) Propagate.
> +       * libm2iso/Makefile.in: (Regenerated).
> +       * libm2log/Makefile.am: (MULTIBUILDTOP) Propagate.
> +       * libm2log/Makefile.in: (Regenerated).
> +       * libm2min/Makefile.am: (MULTIBUILDTOP) Propagate.
> +       * libm2min/Makefile.in: (Regenerated).
> +       * libm2pim/Makefile.am: (MULTIBUILDTOP) Propagate.
> +       * libm2pim/Makefile.in: (Regenerated).
> +
> +2019-11-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * configure: (Regenerated).
> +       * configure.ac: (libtool_VERSION=15.0.0).
> +       Place AM_ENABLE_MULTILIB above GCC_NO_EXECUTABLES.
> +
> +2019-11-13  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2pim/Selective.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/SysExceptions.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/UnixArgs.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/dtoa.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/errno.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/getopt.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/ldtoa.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/sckt.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/target.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/termios.c: Changed to GPL3+ and fixed
> +         formatting.
> +       * libm2pim/wrapc.c: Changed to GPL3+ and fixed
> +         formatting.
> +
> +2019-11-12  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libm2cor/KeyBoardLEDs.c: GPLv3 and reformatted.
> +       * libm2iso/ChanConsts.h: GPLv3 and reformatted.
> +       * libm2iso/ErrnoCategory.c: GPLv3 and reformatted.
> +       * libm2iso/RTco.c: GPLv3 and reformatted.
> +       * libm2iso/wrapsock.c: GPLv3 and reformatted.
> +       * libm2iso/wraptime.c: GPLv3 and reformatted.
> +       * libm2cor/Makefile.am: GPLv3.
> +       * libm2iso/Makefile.am: GPLv3.
> +       * libm2log/Makefile.am: GPLv3.
> +       * libm2min/Makefile.am: GPLv3.
> +       * libm2pim/Makefile.am: GPLv3.
> +       * libm2log/Break.c: GPLv3 and reformatted.
> +       * libm2min/libc.c: GPLv3 and reformatted.
> +
> +2019-11-04  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libcor/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libiso/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libpim/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * liblog/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libmin/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libulm/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libpth/Makefile.am: (MULTIOSSUBDIR) quote test.
> +       * libcor/Makefile.in: Regenerated.
> +       * libiso/Makefile.in: Regenerated.
> +       * libpim/Makefile.in: Regenerated.
> +       * liblog/Makefile.in: Regenerated.
> +       * libmin/Makefile.in: Regenerated.
> +       * libulm/Makefile.in: Regenerated.
> +       * libpth/Makefile.in: Regenerated.
> +
> +2019-10-25  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libcor/Makefile.am: Added -fm2-g -g.
> +       * libiso/Makefile.am: Added -fm2-g -g and include
> +          path to include ../
> +       * libiso/RTco.c: Call HALT if the thread fails to
> +          find itself.  Place initialized inside critical region.
> +       * libpim/Makefile.am: Added -fm2-g -g.
> +
> +2019-09-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libulm: Removed.
> +       * Makefile.am: Removed Ulm libaraies.
> +       * configure.ac: Removed Ulm libaraies.
> +
> +2019-08-01  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libpim/Makefile.am: (M2MODS) added GetOpt.mod
> +          and OptLib.mod.  (M2DEFS) added GetOpt.def,
> +          OptLib.def and getopt.def.  (libgm2_la_SOURCES)
> +          added wrapc.c and getopt.c.
> +
> +2019-07-10  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libpth/Makefile.am: Use $(MAKE) rather than make.
> +       * libcor/KeyBoardLEDs.c: Reformatted to GNU coding
> +          standards.  Also added/corrected empty functions for non
> +         linux targets.  Fixed the GPL comment.
> +
> +2019-07-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
> +
> +       * Makefile.am: (multilib.am) Included.
> +
> +2019-04-03  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.in: Regenerated.
> +       * aclocal.m4: Regenerated.
> +       * autogen.sh: Removed version numbers.
> +       * config/libtool.m4: New version of the file
> +         taken from libgo/config.
> +       * configure: Regenerated.
> +       * configure.ac: Updated version numbers.
> +       * libcor/Makefile.in: Regenerated.
> +       * libiso/Makefile.in: Regenerated.
> +       * liblog/Makefile.in: Regenerated.
> +       * libmin/Makefile.in: Regenerated.
> +       * libpim/Makefile.in: Regenerated.
> +       * libulm/Makefile.in: Regenerated.
> +
> +2019-03-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * configure: Regenerated.
> +       * configure.ac: Implement --enable-libpth-m2
> +       * libpth/Makefile.am: Pass FLAGS_TO_PASS to make.
> +          move install rules into pth subdirectory.
> +       * libpth/pth/Makefile.am: Added install rules.
> +
> +2018-11-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * libpim/wrapc.c: Reformatted according to GNU
> +          coding standards.  Also defended against macro omissions.
> +       * libiso/wraptime.c: Fixed function declaration
> +         and erroneous return value.
> +
> +2018-04-16  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.am: Specify the libtool location.
> +       * Makefile.in: Regenerated.
> +       * aclocal.m4: Regenerated.
> +       * autogen.sh: Corrected script to regenerate
> +          using the correct macros and versions of autoconf tools.
> +       * configure: Regenerated.
> +       * configure.ac: Regenerated.
> +       * libcor/Makefile.in: Regenerated.
> +       * libiso/Makefile.in: Regenerated.
> +       * liblog/Makefile.in: Regenerated.
> +       * libmin/Makefile.in: Regenerated.
> +       * libpim/Makefile.in: Regenerated.
> +       * libulm/Makefile.in: Regenerated.
> +
> +2018-04-14  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
> +
> +       * Makefile.am: Changed to reference the config directory.
> +       * Makefile.in: Regenerated.
> +       * aclocal.m4: Regenerated.
> +       * autogen.sh: Added new script.
> +       * config.h.in: Regenerated.
> +       * configure: Regenerated.
> +       * configure.ac: Minor corrections.
> +       * libcor/Makefile.am: Use $(LIBTOOL).
> +       * libcor/Makefile.in: Regenerated.
> +       * libiso/Makefile.am: Use $(LIBTOOL).
> +       * libiso/Makefile.in: Regenerated.
> +       * liblog/Makefile.am: Use $(LIBTOOL).
> +       * liblog/Makefile.in: Regenerated.
> +       * libmin/Makefile.am: Use $(LIBTOOL).
> +       * libmin/Makefile.in: Regenerated.
> +       * libpim/Makefile.am: Use $(LIBTOOL).
> +       * libpim/Makefile.in: Regenerated.
> +       * libulm/Makefile.am: Use $(LIBTOOL).
> +       * libulm/Makefile.in: Regenerated.
> +
> +2018-04-10  Gaius Mulley  <gaius@gnu.org>
> +
> +       * configure.ac: Added test to AM_ENABLE_MULTILIB.
> +       * Makefile.in: Regenerated.
> +       * aclocal.m4: Regenerated.
> +       * autogen.sh: Updated.
> +       * config.h.in: Regenerated.
> +       * configure: Regenerated.
> +       * libcor/Makefile.in: Regenerated.
> +       * libiso/Makefile.in: Regenerated.
> +       * liblog/Makefile.in: Regenerated.
> +       * libmin/Makefile.am: Added -fno-m2-plugin
> +       * libmin/Makefile.in: Regenerated.
> +       * libpim/Makefile.in: Regenerated.
> +       * libulm/Makefile.in: Regenerated.
> +
> +2017-12-27  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libpim/wrapc.c: (wrapc_isfinite) New function.
> +
> +2016-06-09  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libpim/dtoa.c: Use memmove instead of memcpy.
> +
> +2016-03-14  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libpim/wrapc.c: Corrected spacing.
> +
> +2014-12-24  Gaius Mulley  <gaius@gnu.org>
> +
> +       * sckt.c: Added conditional import of
> +         stdio.h as reported by Christoph Schlegel.
> +
> +2014-12-23  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libulm/Makefile.am: Added pim libs to the
> +         path on the createUlmSys command.
> +
> +2014-12-22  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libulm/Makefile.am: Added rule to build
> +         SYSTEM.def as a built source.
> +
> +2014-12-06  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libcor/Makefile.in: Add .la to list of SUFFIXES.
> +         install .la archive.
> +       * libcor/Makefile.am: Install .la archive.
> +       * libiso/Makefile.in: Install .la archive.
> +       * libiso/Makefile.am: Install .la archive.
> +       * liblog/Makefile.am: Install .la archive.
> +       * liblog/Makefile.in: Install .la archive.
> +       * libmin/Makefile.am: Install .la archive.
> +       * libmin/Makefile.in: Install .la archive.
> +       * libpim/Makefile.am: Install .la archive.
> +       * libpim/Makefile.in: Install .la archive.
> +       * libulm/Makefile.am: Install .la archive.
> +       * libulm/Makefile.in: Install .la archive.
> +
> +2014-12-05  Gaius Mulley  <gaius@gnu.org>
> +
> +       * libmin/Makefile.am: Add .la to the list of SUFFIXES.
> +       * libulm/Makefile.am: Add .la to the list of SUFFIXES.
> +       * libpim/Makefile.am: Add .la to the list of SUFFIXES.
> +       * libcor/Makefile.am: Add .la to the list of SUFFIXES.
> +       * liblog/Makefile.am: Add .la to the list of SUFFIXES.
> +       * libiso/Makefile.am: Add .la to the list of SUFFIXES.
> +
> +2014-07-11  Gaius Mulley  <gaius@gnu.org>
> +
> +       * complete rewrite and restructuring of libgm2.
> +       * gcc-versionno/libgm2/aclocal.m4: (Rebuilt)
> +       * gcc-versionno/libgm2/autogen.sh: (Rebuilt)
> +       * gcc-versionno/libgm2/config.h.in: (New file)
> +       * gcc-versionno/libgm2/configure: (Rebuilt)
> +       * gcc-versionno/libgm2/configure.ac: (New file)
> +       * gcc-versionno/libgm2/libcor: (New directory)
> +       * gcc-versionno/libgm2/libiso: (New directory)
> +       * gcc-versionno/libgm2/liblog: (New directory)
> +       * gcc-versionno/libgm2/libmin: (New directory)
> +       * gcc-versionno/libgm2/libpim: (New directory)
> +       * gcc-versionno/libgm2/libulm: (New directory)
> +       * gcc-versionno/libgm2/Makefile.am: (New file)
> +       * gcc-versionno/libgm2/Makefile.in: (rebuilt)
> +       * gcc-versionno/libgm2/p2c: (New directory)
> +
> +2013-12-06  Gaius Mulley  <gaius@gnu.org>
> +
> +       * gcc-versionno/gcc/gm2/Make-lang.in: Changed flag to -fpim
> +       and changed path appropriately.
> +
> +2013-12-05  Gaius Mulley  <gaius@gnu.org>
> +
> +       * gm2/libgm2/Makefile.in: Build coroutine version of SYSTEM.def.
> +
> +2013-10-17  Gaius Mulley  <gaius@gnu.org>
> +
> +       * gm2/libgm2/Makefile.in: Corrected install of iso SYSTEM.def.
> +       Ensure that we copy form the object directory and avoid the
> +       template version in the source directory.
> +
> +2013-09-14  Gaius Mulley  <gaius@gnu.org>
> +
> +       * gm2/libgm2/Makefile.in: Many changes to allow more libraries
> +       to build and also build SYSTEM.def for the pim, iso and min
> +       libraries.
> +
> +2013-07-08  Gaius Mulley  <gaius@gnu.org>
> +
> +       * gm2/ChangeLog: (New file).
> +       * gm2/libgm2/Makefile.in: Added install rules.  Many of which
> +       were adapted from gcc/gm2/Make-file.in.
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/config.h.in
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/config.h.in    2022-10-07 20:21:18.734097972 +0100
> @@ -0,0 +1,313 @@
> +/* config.h.in.  Generated from configure.ac by autoheader.  */
> +
> +/* function access exists */
> +#undef HAVE_ACCESS
> +
> +/* function brk exists */
> +#undef HAVE_BRK
> +
> +/* function cfmakeraw exists */
> +#undef HAVE_CFMAKERAW
> +
> +/* function close exists */
> +#undef HAVE_CLOSE
> +
> +/* function creat exists */
> +#undef HAVE_CREAT
> +
> +/* function ctime exists */
> +#undef HAVE_CTIME
> +
> +/* Define to 1 if you have the <direct.h> header file. */
> +#undef HAVE_DIRECT_H
> +
> +/* Define to 1 if you have the <dirent.h> header file. */
> +#undef HAVE_DIRENT_H
> +
> +/* Define to 1 if you have the <dlfcn.h> header file. */
> +#undef HAVE_DLFCN_H
> +
> +/* function dup exists */
> +#undef HAVE_DUP
> +
> +/* Define to 1 if you have the <errno.h> header file. */
> +#undef HAVE_ERRNO_H
> +
> +/* function execve exists */
> +#undef HAVE_EXECVE
> +
> +/* function exit exists */
> +#undef HAVE_EXIT
> +
> +/* function fcntl exists */
> +#undef HAVE_FCNTL
> +
> +/* Define to 1 if you have the <fcntl.h> header file. */
> +#undef HAVE_FCNTL_H
> +
> +/* function fstat exists */
> +#undef HAVE_FSTAT
> +
> +/* function getdents exists */
> +#undef HAVE_GETDENTS
> +
> +/* function getgid exists */
> +#undef HAVE_GETGID
> +
> +/* function getpid exists */
> +#undef HAVE_GETPID
> +
> +/* function gettimeofday exists */
> +#undef HAVE_GETTIMEOFD
> +
> +/* function getuid exists */
> +#undef HAVE_GETUID
> +
> +/* Define to 1 if you have the <inttypes.h> header file. */
> +#undef HAVE_INTTYPES_H
> +
> +/* function ioctl exists */
> +#undef HAVE_IOCTL
> +
> +/* function kill exists */
> +#undef HAVE_KILL
> +
> +/* Define to 1 if you have the <langinfo.h> header file. */
> +#undef HAVE_LANGINFO_H
> +
> +/* Define to 1 if you have the <limits.h> header file. */
> +#undef HAVE_LIMITS_H
> +
> +/* function link exists */
> +#undef HAVE_LINK
> +
> +/* function lseek exists */
> +#undef HAVE_LSEEK
> +
> +/* Define to 1 if you have the <malloc.h> header file. */
> +#undef HAVE_MALLOC_H
> +
> +/* have math.h */
> +#undef HAVE_MATH_H
> +
> +/* Define to 1 if you have the <memory.h> header file. */
> +#undef HAVE_MEMORY_H
> +
> +/* Define to 1 if you have the <netdb.h> header file. */
> +#undef HAVE_NETDB_H
> +
> +/* Define to 1 if you have the <netinet/in.h> header file. */
> +#undef HAVE_NETINET_IN_H
> +
> +/* function open exists */
> +#undef HAVE_OPEN
> +
> +/* function pause exists */
> +#undef HAVE_PAUSE
> +
> +/* function pipe exists */
> +#undef HAVE_PIPE
> +
> +/* Define to 1 if you have the <pthread.h> header file. */
> +#undef HAVE_PTHREAD_H
> +
> +/* Define to 1 if you have the <pwd.h> header file. */
> +#undef HAVE_PWD_H
> +
> +/* function rand exists */
> +#undef HAVE_RAND
> +
> +/* function read exists */
> +#undef HAVE_READ
> +
> +/* function select exists */
> +#undef HAVE_SELECT
> +
> +/* function setgid exists */
> +#undef HAVE_SETGID
> +
> +/* function setitimer exists */
> +#undef HAVE_SETITIMER
> +
> +/* function setuid exists */
> +#undef HAVE_SETUID
> +
> +/* Define to 1 if you have the <signal.h> header file. */
> +#undef HAVE_SIGNAL_H
> +
> +/* function signbit exists */
> +#undef HAVE_SIGNBIT
> +
> +/* function signbitf exists */
> +#undef HAVE_SIGNBITF
> +
> +/* function signbitl exists */
> +#undef HAVE_SIGNBITL
> +
> +/* function stat exists */
> +#undef HAVE_STAT
> +
> +/* Define to 1 if you have the <stdarg.h> header file. */
> +#undef HAVE_STDARG_H
> +
> +/* Define to 1 if you have the <stddef.h> header file. */
> +#undef HAVE_STDDEF_H
> +
> +/* Define to 1 if you have the <stdint.h> header file. */
> +#undef HAVE_STDINT_H
> +
> +/* Define to 1 if you have the <stdio.h> header file. */
> +#undef HAVE_STDIO_H
> +
> +/* Define to 1 if you have the <stdlib.h> header file. */
> +#undef HAVE_STDLIB_H
> +
> +/* Define to 1 if you have the <strings.h> header file. */
> +#undef HAVE_STRINGS_H
> +
> +/* Define to 1 if you have the <string.h> header file. */
> +#undef HAVE_STRING_H
> +
> +/* function strsignal exists */
> +#undef HAVE_STRSIGNAL
> +
> +/* function strtod exists */
> +#undef HAVE_STRTOD
> +
> +/* function strtold exists */
> +#undef HAVE_STRTOLD
> +
> +/* Define to 1 if the system has the type `struct stat'. */
> +#undef HAVE_STRUCT_STAT
> +
> +/* Define to 1 if the system has the type `struct timeval'. */
> +#undef HAVE_STRUCT_TIMEVAL
> +
> +/* Define to 1 if the system has the type `struct timezone'. */
> +#undef HAVE_STRUCT_TIMEZONE
> +
> +/* Define to 1 if you have the <sys/errno.h> header file. */
> +#undef HAVE_SYS_ERRNO_H
> +
> +/* Define to 1 if you have the <sys/file.h> header file. */
> +#undef HAVE_SYS_FILE_H
> +
> +/* Define to 1 if you have the <sys/ioctl.h> header file. */
> +#undef HAVE_SYS_IOCTL_H
> +
> +/* Define to 1 if you have the <sys/mman.h> header file. */
> +#undef HAVE_SYS_MMAN_H
> +
> +/* Define to 1 if you have the <sys/param.h> header file. */
> +#undef HAVE_SYS_PARAM_H
> +
> +/* Define to 1 if you have the <sys/resource.h> header file. */
> +#undef HAVE_SYS_RESOURCE_H
> +
> +/* Define to 1 if you have the <sys/socket.h> header file. */
> +#undef HAVE_SYS_SOCKET_H
> +
> +/* Define to 1 if you have the <sys/stat.h> header file. */
> +#undef HAVE_SYS_STAT_H
> +
> +/* Define to 1 if you have the <sys/times.h> header file. */
> +#undef HAVE_SYS_TIMES_H
> +
> +/* Define to 1 if you have the <sys/time.h> header file. */
> +#undef HAVE_SYS_TIME_H
> +
> +/* Define to 1 if you have the <sys/types.h> header file. */
> +#undef HAVE_SYS_TYPES_H
> +
> +/* Define to 1 if you have the <sys/uio.h> header file. */
> +#undef HAVE_SYS_UIO_H
> +
> +/* Define to 1 if you have the <sys/wait.h> header file. */
> +#undef HAVE_SYS_WAIT_H
> +
> +/* Define to 1 if you have the <termios.h> header file. */
> +#undef HAVE_TERMIOS_H
> +
> +/* function times exists */
> +#undef HAVE_TIMES
> +
> +/* Define to 1 if you have the <time.h> header file. */
> +#undef HAVE_TIME_H
> +
> +/* Define to 1 if you have the <unistd.h> header file. */
> +#undef HAVE_UNISTD_H
> +
> +/* function unlink exists */
> +#undef HAVE_UNLINK
> +
> +/* function wait exists */
> +#undef HAVE_WAIT
> +
> +/* Define to 1 if you have the <wchar.h> header file. */
> +#undef HAVE_WCHAR_H
> +
> +/* function write exists */
> +#undef HAVE_WRITE
> +
> +/* Define to the sub-directory in which libtool stores uninstalled libraries.
> +   */
> +#undef LT_OBJDIR
> +
> +/* Name of package */
> +#undef PACKAGE
> +
> +/* Define to the address where bug reports for this package should be sent. */
> +#undef PACKAGE_BUGREPORT
> +
> +/* Define to the full name of this package. */
> +#undef PACKAGE_NAME
> +
> +/* Define to the full name and version of this package. */
> +#undef PACKAGE_STRING
> +
> +/* Define to the one symbol short name of this package. */
> +#undef PACKAGE_TARNAME
> +
> +/* Define to the home page for this package. */
> +#undef PACKAGE_URL
> +
> +/* Define to the version of this package. */
> +#undef PACKAGE_VERSION
> +
> +/* Define to 1 if you have the ANSI C header files. */
> +#undef STDC_HEADERS
> +
> +/* Enable extensions on AIX 3, Interix.  */
> +#ifndef _ALL_SOURCE
> +# undef _ALL_SOURCE
> +#endif
> +/* Enable GNU extensions on systems that have them.  */
> +#ifndef _GNU_SOURCE
> +# undef _GNU_SOURCE
> +#endif
> +/* Enable threading extensions on Solaris.  */
> +#ifndef _POSIX_PTHREAD_SEMANTICS
> +# undef _POSIX_PTHREAD_SEMANTICS
> +#endif
> +/* Enable extensions on HP NonStop.  */
> +#ifndef _TANDEM_SOURCE
> +# undef _TANDEM_SOURCE
> +#endif
> +/* Enable general extensions on Solaris.  */
> +#ifndef __EXTENSIONS__
> +# undef __EXTENSIONS__
> +#endif
> +
> +
> +/* Version number of package */
> +#undef VERSION
> +
> +/* Define to 1 if on MINIX. */
> +#undef _MINIX
> +
> +/* Define to 2 if the system does not provide POSIX.1 features except with
> +   this defined. */
> +#undef _POSIX_1_SOURCE
> +
> +/* Define to 1 if you need to in order for `stat' and other things to work. */
> +#undef _POSIX_SOURCE
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/Makefile.am
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/Makefile.am    2022-10-07 20:21:18.730097923 +0100
> @@ -0,0 +1,103 @@
> +# Makefile for libgm2.
> +#   Copyright 2013-2022  Free Software Foundation, Inc.
> +#
> +# This file 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 of the License, or
> +# (at your option) any later version.
> +#
> +# This program 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 this program; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +#
> +#
> +# if this file is changed then you need to run
> +#
> +# autoreconf2.64
> +#
> +# Modula-2 support.
> +AUTOMAKE_OPTIONS = 1.8 foreign
> +
> +SUFFIXES = .c .mod .def .o .obj .lo .a
> +
> +ACLOCAL_AMFLAGS = -I . -I .. -I ../config
> +
> +# Multilib support.
> +MAKEOVERRIDES=
> +
> +AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include
> +
> +gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
> +TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
> +
> +GCC_DIR = $(TOP_GCCDIR)/gcc
> +GM2_SRC = $(GCC_DIR)/m2
> +
> +toolexeclibdir=@toolexeclibdir@
> +toolexecdir=@toolexecdir@
> +GM2_FOR_TARGET=@GM2_FOR_TARGET@
> +
> +SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim
> +GM2_BUILDDIR := $(shell pwd)
> +gm2_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
> +
> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
> +# values defined in terms of make variables, as is the case for CC and
> +# friends when we are called from the top level Makefile.
> +AM_MAKEFLAGS = \
> +        "GCC_DIR=$(GCC_DIR)" \
> +        "GM2_SRC=$(GM2_SRC)" \
> +       "AR_FLAGS=$(AR_FLAGS)" \
> +       "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> +       "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
> +       "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
> +       "CFLAGS=$(CFLAGS)" \
> +       "CXXFLAGS=$(CXXFLAGS)" \
> +       "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> +       "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
> +       "INSTALL=$(INSTALL)" \
> +       "INSTALL_DATA=$(INSTALL_DATA)" \
> +       "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
> +       "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
> +       "LDFLAGS=$(LDFLAGS)" \
> +       "LIBCFLAGS=$(LIBCFLAGS)" \
> +       "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
> +       "MAKE=$(MAKE)" \
> +       "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
> +        "MULTIBUILDTOP=$(MULTIBUILDTOP)" \
> +        "MULTISUBDIR=$(MULTISUBDIR)" \
> +        "MULTIOSDIR=$(MULTIDIR)" \
> +        "MULTIFLAGS=$(MULTIFLAGS)" \
> +       "PICFLAG=$(PICFLAG)" \
> +       "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
> +       "SHELL=$(SHELL)" \
> +       "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
> +       "exec_prefix=$(exec_prefix)" \
> +       "infodir=$(infodir)" \
> +       "libdir=$(libdir)" \
> +       "includedir=$(includedir)" \
> +       "prefix=$(prefix)" \
> +       "tooldir=$(tooldir)" \
> +       "gxx_include_dir=$(gxx_include_dir)" \
> +       "AR=$(AR)" \
> +       "AS=$(AS)" \
> +       "LD=$(LD)" \
> +       "RANLIB=$(RANLIB)" \
> +       "NM=$(NM)" \
> +       "NM_FOR_BUILD=$(NM_FOR_BUILD)" \
> +       "NM_FOR_TARGET=$(NM_FOR_TARGET)" \
> +       "DESTDIR=$(DESTDIR)" \
> +       "WERROR=$(WERROR)" \
> +        "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
> +        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
> +       "LIBTOOL=$(GM2_BUILDDIR)/libtool"
> +
> +# Subdir rules rely on $(FLAGS_TO_PASS)
> +FLAGS_TO_PASS = $(AM_MAKEFLAGS)
> +
> +include $(top_srcdir)/../multilib.am
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/configure.ac
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/configure.ac   2022-10-07 20:21:18.738098020 +0100
> @@ -0,0 +1,376 @@
> +# Configure script for libgm2.
> +# Copyright (C) 2013-2022 Free Software Foundation, Inc.
> +
> +# This file is 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/>.
> +
> +# Configure looks for the existence of this file to auto-config each language.
> +# We define several parameters used by configure:
> +
> +# Process this file with autoreconf to produce a configure script.
> +
> +AC_INIT(package-unused, version-unused,,libgm2)
> +AC_CONFIG_SRCDIR(Makefile.am)
> +# AC_CONFIG_MACRO_DIR([config])
> +AC_CONFIG_HEADER(config.h)
> +
> +libtool_VERSION=17:0:0
> +AC_SUBST(libtool_VERSION)
> +
> +AM_ENABLE_MULTILIB(, ..)
> +
> +GCC_NO_EXECUTABLES
> +
> +AC_USE_SYSTEM_EXTENSIONS
> +
> +# Do not delete or change the following two lines.  For why, see
> +# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
> +AC_CANONICAL_SYSTEM
> +target_alias=${target_alias-$host_alias}
> +AC_SUBST(target_alias)
> +
> +AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dist -Wall -Wno-portability])
> +
> +AH_TEMPLATE(PACKAGE, [Name of package])
> +AH_TEMPLATE(VERSION, [Version number of package])
> +
> +AC_ARG_WITH(cross-host,
> +[  --with-cross-host=HOST           Configuring with a cross compiler])
> +
> +# Checks for header files.
> +AC_HEADER_STDC
> +AC_HEADER_SYS_WAIT
> +AC_CHECK_HEADER([math.h],
> +              [AC_DEFINE([HAVE_MATH_H], [1], [have math.h])])
> +
> +AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h \
> +                 time.h \
> +                fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
> +                sys/resource.h sys/param.h sys/times.h sys/stat.h \
> +                 sys/socket.h \
> +                 sys/wait.h sys/ioctl.h errno.h sys/errno.h \
> +                pwd.h direct.h dirent.h signal.h malloc.h langinfo.h \
> +                 pthread.h stdarg.h stdio.h sys/types.h termios.h \
> +                 netinet/in.h netdb.h sys/uio.h sys/stat.h wchar.h)
> +
> +
> +AC_CANONICAL_HOST
> +ACX_NONCANONICAL_HOST
> +ACX_NONCANONICAL_TARGET
> +GCC_TOPLEV_SUBDIRS
> +
> +AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
> +AC_ARG_ENABLE(version-specific-runtime-libs,
> +[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
> +[case "$enableval" in
> + yes) version_specific_libs=yes ;;
> + no)  version_specific_libs=no ;;
> + *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
> + esac],
> +[version_specific_libs=no])
> +AC_MSG_RESULT($version_specific_libs)
> +
> +AC_ARG_WITH(slibdir,
> +[  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
> +slibdir="$with_slibdir",
> +if test "${version_specific_libs}" = yes; then
> +  slibdir='$(libsubdir)'
> +elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
> +  slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
> +else
> +  slibdir='$(libdir)'
> +fi)
> +AC_SUBST(slibdir)
> +
> +# Command-line options.
> +# Very limited version of AC_MAINTAINER_MODE.
> +AC_ARG_ENABLE([maintainer-mode],
> +  [AC_HELP_STRING([--enable-maintainer-mode],
> +                 [enable make rules and dependencies not useful (and
> +                  sometimes confusing) to the casual installer])],
> +  [case ${enable_maintainer_mode} in
> +     yes) MAINT='' ;;
> +     no) MAINT='#' ;;
> +     *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
> +   esac
> +   maintainer_mode=${enableval}],
> +  [MAINT='#'])
> +AC_SUBST([MAINT])dnl
> +
> +toolexecdir=no
> +toolexeclibdir=no
> +
> +# Calculate toolexeclibdir
> +# Also toolexecdir, though it's only used in toolexeclibdir
> +case ${version_specific_libs} in
> +  yes)
> +    # Need the gcc compiler version to know where to install libraries
> +    # and header files if --enable-version-specific-runtime-libs option
> +    # is selected.
> +    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
> +    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
> +    ;;
> +  no)
> +    if test -n "$with_cross_host" &&
> +       test x"$with_cross_host" != x"no"; then
> +      # Install a library built with a cross compiler in tooldir, not libdir.
> +      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
> +      toolexeclibdir='$(toolexecdir)/lib'
> +    else
> +      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
> +      toolexeclibdir='$(libdir)'
> +    fi
> +    multi_os_directory=`$CC -print-multi-os-directory`
> +    case $multi_os_directory in
> +      .) ;; # Avoid trailing /.
> +      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
> +    esac
> +    ;;
> +esac
> +
> +AC_SUBST(toolexecdir)
> +AC_SUBST(toolexeclibdir)
> +
> +AH_TEMPLATE(PACKAGE, [Name of package])
> +AH_TEMPLATE(VERSION, [Version number of package])
> +
> +AM_MAINTAINER_MODE
> +
> +# Check the compiler.
> +# The same as in boehm-gc and libstdc++. Have to borrow it from there.
> +# We must force CC to /not/ be precious variables; otherwise
> +# the wrong, non-multilib-adjusted value will be used in multilibs.
> +# As a side effect, we have to subst CFLAGS ourselves.
> +
> +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
> +m4_define([_AC_ARG_VAR_PRECIOUS],[])
> +AC_PROG_CC
> +AC_PROG_CXX
> +AM_PROG_AS
> +m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
> +
> +AC_SUBST(CFLAGS)
> +
> +# In order to override CFLAGS_FOR_TARGET, all of our special flags go
> +# in XCFLAGS.  But we need them in CFLAGS during configury.  So put them
> +# in both places for now and restore CFLAGS at the end of config.
> +save_CFLAGS="$CFLAGS"
> +
> +# Find other programs we need.
> +AC_CHECK_TOOL(AR, ar)
> +AC_CHECK_TOOL(NM, nm)
> +AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
> +AC_PATH_PROG(PERL, perl, perl-not-found-in-path-error)
> +AC_PROG_MAKE_SET
> +AC_PROG_INSTALL
> +
> +LT_INIT
> +AC_LIBTOOL_DLOPEN
> +# AM_PROG_LIBTOOL
> +AC_SUBST(enable_shared)
> +AC_SUBST(enable_static)
> +
> +AC_CHECK_TYPES([struct timezone, struct stat, struct timeval])
> +
> +AC_LANG_C
> +# Check the compiler.
> +# The same as in boehm-gc and libstdc++. Have to borrow it from there.
> +# We must force CC to /not/ be precious variables; otherwise
> +# the wrong, non-multilib-adjusted value will be used in multilibs.
> +# As a side effect, we have to subst CFLAGS ourselves.
> +
> +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
> +m4_define([_AC_ARG_VAR_PRECIOUS],[])
> +AC_PROG_CC
> +m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
> +
> +AC_SUBST(CFLAGS)
> +
> +AC_DEFUN([GM2_UNDEF],[
> +  $as_echo "#undef HAVE_$1" >>confdefs.h
> +])
> +
> +AC_DEFUN([GM2_CHECK_LIB],[
> +  AC_MSG_CHECKING([m2 front end checking $1 library for $2])
> +  if test x$gcc_no_link != xyes; then
> +    AC_CHECK_LIB([$1],[$2],[AC_DEFINE([HAVE_$3],[1],[found $2])],[GM2_UNDEF([$3],[$2])])
> +  else
> +    if test "x$[ac_cv_lib_$1_$2]" = xyes; then
> +      AC_DEFINE([HAVE_$3],[1],[lib$1 includes $2])
> +    elif test "x$[ac_cv_func_$2]" = xyes; then
> +      AC_DEFINE([HAVE_$3],[1],[function $2 exists])
> +    else
> +      GM2_UNDEF([$3],[$2])
> +    fi
> +  fi
> +])
> +
> +GM2_CHECK_LIB([c],[access],[ACCESS])
> +GM2_CHECK_LIB([c],[brk],[BRK])
> +GM2_CHECK_LIB([c],[cfmakeraw],[CFMAKERAW])
> +GM2_CHECK_LIB([c],[close],[CLOSE])
> +GM2_CHECK_LIB([c],[ctime],[CTIME])
> +GM2_CHECK_LIB([c],[creat],[CREAT])
> +GM2_CHECK_LIB([c],[dup],[DUP])
> +GM2_CHECK_LIB([c],[execve],[EXECVE])
> +GM2_CHECK_LIB([c],[exit],[EXIT])
> +GM2_CHECK_LIB([c],[fcntl],[FCNTL])
> +GM2_CHECK_LIB([c],[fstat],[FSTAT])
> +GM2_CHECK_LIB([c],[getdents],[GETDENTS])
> +GM2_CHECK_LIB([c],[getgid],[GETGID])
> +GM2_CHECK_LIB([c],[getpid],[GETPID])
> +GM2_CHECK_LIB([c],[gettimeofday],[GETTIMEOFD])
> +GM2_CHECK_LIB([c],[getuid],[GETUID])
> +GM2_CHECK_LIB([c],[ioctl],[IOCTL])
> +GM2_CHECK_LIB([c],[kill],[KILL])
> +GM2_CHECK_LIB([c],[link],[LINK])
> +GM2_CHECK_LIB([c],[lseek],[LSEEK])
> +GM2_CHECK_LIB([c],[open],[OPEN])
> +GM2_CHECK_LIB([c],[pause],[PAUSE])
> +GM2_CHECK_LIB([c],[pipe],[PIPE])
> +GM2_CHECK_LIB([c],[rand],[RAND])
> +GM2_CHECK_LIB([c],[read],[READ])
> +GM2_CHECK_LIB([c],[select],[SELECT])
> +GM2_CHECK_LIB([c],[setitimer],[SETITIMER])
> +GM2_CHECK_LIB([c],[setgid],[SETGID])
> +GM2_CHECK_LIB([c],[setuid],[SETUID])
> +GM2_CHECK_LIB([c],[stat],[STAT])
> +GM2_CHECK_LIB([c],[strsignal],[STRSIGNAL])
> +GM2_CHECK_LIB([c],[strtod],[STRTOD])
> +GM2_CHECK_LIB([c],[strtold],[STRTOLD])
> +GM2_CHECK_LIB([c],[times],[TIMES])
> +GM2_CHECK_LIB([c],[unlink],[UNLINK])
> +GM2_CHECK_LIB([c],[wait],[WAIT])
> +GM2_CHECK_LIB([c],[write],[WRITE])
> +
> +GM2_CHECK_LIB([m],[signbit],[SIGNBIT])
> +GM2_CHECK_LIB([m],[signbitf],[SIGNBITF])
> +GM2_CHECK_LIB([m],[signbitl],[SIGNBITL])
> +
> +AC_MSG_NOTICE([libgm2 has finished checking target libc and libm contents.])
> +
> +# We test the host here and later on check the target.
> +
> +# All known M2_HOST_OS values.  This is the union of all host operating systems
> +# supported by gm2.
> +
> +M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows"
> +
> +M2_HOST_OS=unknown
> +
> +case ${host} in
> +  *-*-darwin*)   M2_HOST_OS=darwin ;;
> +  *-*-freebsd*)  M2_HOST_OS=freebsd ;;
> +  *-*-linux*)    M2_HOST_OS=linux ;;
> +  *-*-netbsd*)  M2_HOST_OS=netbsd ;;
> +  *-*-openbsd*)  M2_HOST_OS=openbsd ;;
> +  *-*-solaris2*) M2_HOST_OS=solaris ;;
> +  *-*-aix*)      M2_HOST_OS=aix ;;
> +  *-*-gnu*)      M2_HOST_OS=hurd ;;
> +esac
> +
> +# M2_HOST_OS=unknown
> +if test x${M2_HOST_OS} = xunknown; then
> +   AC_MSG_NOTICE([unsupported host, will build a minimal m2 library])
> +   BUILD_PIMLIB=false
> +   BUILD_ISOLIB=false
> +   BUILD_CORLIB=false
> +   BUILD_LOGLIB=false
> +else
> +   AC_MSG_NOTICE([m2 library will be built on ${M2_HOST_OS}])
> +   BUILD_PIMLIB=true
> +   BUILD_ISOLIB=true
> +   BUILD_CORLIB=true
> +   BUILD_LOGLIB=true
> +fi
> +
> +CC_FOR_BUILD=${CC_FOR_BUILD:-gcc}
> +AC_SUBST(CC_FOR_BUILD)
> +
> +# Propagate GM2_FOR_TARGET into Makefiles
> +GM2_FOR_TARGET=${GM2_FOR_TARGET:-gcc}
> +AC_SUBST(GM2_FOR_TARGET)
> +
> +# Now we check the target as long as it is a supported host.
> +# For some embedded targets we choose minimal runtime system which is
> +# just enough to satisfy the linker targetting raw metal.
> +if test x${M2_HOST_OS} != xunknown; then
> +AC_MSG_NOTICE([m2 library building for target ${target}])
> +case "$target" in
> +
> +  avr25*-*-* | avr31*-*-* | avr35*-*-* | avr4*-*-* | avr5*-*-* | avr51*-*-* | avr6*-*-*)
> +  BUILD_PIMLIB=false
> +  BUILD_ISOLIB=false
> +  BUILD_CORLIB=false
> +  BUILD_LOGLIB=false
> +  ;;
> +
> +  avrxmega2*-*-* | avrxmega4*-*-* | avrxmega5*-*-* | avrxmega6*-*-* | avrxmega7*-*-*)
> +  BUILD_PIMLIB=false
> +  BUILD_ISOLIB=false
> +  BUILD_CORLIB=false
> +  BUILD_LOGLIB=false
> +  ;;
> +
> +  avr3-*-*)
> +  BUILD_PIMLIB=true
> +  BUILD_ISOLIB=true
> +  BUILD_CORLIB=true
> +  BUILD_LOGLIB=true
> +  ;;
> +  esp32-*-*)
> +  BUILD_PIMLIB=false
> +  BUILD_ISOLIB=false
> +  BUILD_CORLIB=false
> +  BUILD_LOGLIB=false
> +  ;;
> +
> +esac
> +fi
> +
> +# GM2_MSG_RESULT issue a query message from the first parameter and a boolean result
> +# in the second parameter is printed as a "yes" or "no".
> +
> +AC_DEFUN([GM2_MSG_RESULT],[
> +   AC_MSG_CHECKING([$1])
> +   if test x${$2} = xtrue; then
> +      AC_MSG_RESULT([yes])
> +   else
> +      AC_MSG_RESULT([no])
> +   fi
> +])
> +
> +if test x${M2_HOST_OS} = xunknown; then
> +   AC_MSG_NOTICE([m2 front end will only build minimal Modula-2 runtime library on this host])
> +else
> +   GM2_MSG_RESULT([m2 front end will build PIM libraries:],[BUILD_PIMLIB])
> +   GM2_MSG_RESULT([m2 front end will build ISO libraries:],[BUILD_ISOLIB])
> +   GM2_MSG_RESULT([m2 front end will build coroutine libraries:],[BUILD_CORLIB])
> +   GM2_MSG_RESULT([m2 front end will build Logitech compatability libraries:],[BUILD_LOGLIB])
> +fi
> +
> +AM_CONDITIONAL([BUILD_PIMLIB], [test x$BUILD_PIMLIB = xtrue])
> +AM_CONDITIONAL([BUILD_ISOLIB], [test x$BUILD_ISOLIB = xtrue])
> +AM_CONDITIONAL([BUILD_CORLIB], [test x$BUILD_CORLIB = xtrue])
> +AM_CONDITIONAL([BUILD_LOGLIB], [test x$BUILD_LOGLIB = xtrue])
> +
> +AC_CONFIG_SRCDIR([Makefile.am])
> +AC_CONFIG_FILES([Makefile libm2min/Makefile libm2pim/Makefile libm2iso/Makefile
> +                 libm2cor/Makefile libm2log/Makefile])
> +
> +AC_MSG_NOTICE([libgm2 has been configured.])
> +
> +AC_OUTPUT
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/autogen.sh
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/autogen.sh     2022-10-07 20:21:18.734097972 +0100
> @@ -0,0 +1,31 @@
> +#!/bin/sh
> +
> +# autogen.sh regenerate the autoconf files.
> +#   Copyright 2013-2022  Free Software Foundation, Inc.
> +#
> +# This file 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 of the License, or
> +# (at your option) any later version.
> +#
> +# This program 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 this program; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +rm -rf autom4te.cache
> +
> +# libtoolize
> +rm -f aclocal.m4
> +# aclocal -I . -I config -I ../config
> +aclocal -I . -I ../config
> +autoreconf -I . -I ../config
> +automake --include-deps
> +
> +rm -rf autom4te.cache
> +
> +exit 0
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/libm2cor/Makefile.am
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/libm2cor/Makefile.am   2022-10-07 20:21:18.738098020 +0100
> @@ -0,0 +1,156 @@
> +# Makefile for libm2cor.
> +#   Copyright 2013-2022  Free Software Foundation, Inc.
> +#
> +# This file 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 of the License, or
> +# (at your option) any later version.
> +#
> +# This program 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 this program; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +SUFFIXES = .c .cc .mod .def .o .obj .lo .a .la
> +
> +ACLOCAL_AMFLAGS = -I . -I .. -I ../config
> +
> +VPATH = . @srcdir@ @srcdir@/../../gcc/m2/gm2-libs-coroutines
> +
> +# Multilib support.
> +MAKEOVERRIDES=
> +
> +version := $(shell $(CC) -dumpversion)
> +
> +# Directory in which the compiler finds libraries etc.
> +libsubdir = $(libdir)/gcc/$(target_alias)/$(version)
> +# Used to install the shared libgcc.
> +slibdir = @slibdir@
> +
> +toolexeclibdir=@toolexeclibdir@
> +toolexecdir=@toolexecdir@
> +GM2_FOR_TARGET=@GM2_FOR_TARGET@
> +
> +MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
> +MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
> +
> +MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
> +inst_libdir = $(libsubdir)$(MULTISUBDIR)
> +inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
> +
> +
> +# Work around what appears to be a GNU make bug handling MAKEFLAGS
> +# values defined in terms of make variables, as is the case for CC and
> +# friends when we are called from the top level Makefile.
> +AM_MAKEFLAGS = \
> +        "GCC_DIR=$(GCC_DIR)" \
> +        "GM2_SRC=$(GM2_SRC)" \
> +       "AR_FLAGS=$(AR_FLAGS)" \
> +       "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> +       "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
> +       "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
> +       "CFLAGS=$(CFLAGS)" \
> +       "CXXFLAGS=$(CXXFLAGS)" \
> +       "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> +       "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
> +       "INSTALL=$(INSTALL)" \
> +       "INSTALL_DATA=$(INSTALL_DATA)" \
> +       "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
> +       "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
> +       "LDFLAGS=$(LDFLAGS)" \
> +       "LIBCFLAGS=$(LIBCFLAGS)" \
> +       "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
> +       "MAKE=$(MAKE)" \
> +       "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
> +        "MULTIBUILDTOP=$(MULTIBUILDTOP)" \
> +        "MULTISUBDIR=$(MULTISUBDIR)" \
> +        "MULTIOSDIR=$(MULTIOSDIR)" \
> +        "MULTIFLAGS=$(MULTIFLAGS)" \
> +       "PICFLAG=$(PICFLAG)" \
> +       "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
> +       "SHELL=$(SHELL)" \
> +       "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
> +       "exec_prefix=$(exec_prefix)" \
> +       "infodir=$(infodir)" \
> +       "libdir=$(libdir)" \
> +       "includedir=$(includedir)" \
> +       "prefix=$(prefix)" \
> +       "tooldir=$(tooldir)" \
> +       "gxx_include_dir=$(gxx_include_dir)" \
> +       "AR=$(AR)" \
> +       "AS=$(AS)" \
> +       "LD=$(LD)" \
> +       "RANLIB=$(RANLIB)" \
> +       "NM=$(NM)" \
> +       "NM_FOR_BUILD=$(NM_FOR_BUILD)" \
> +       "NM_FOR_TARGET=$(NM_FOR_TARGET)" \
> +       "DESTDIR=$(DESTDIR)" \
> +       "WERROR=$(WERROR)" \
> +        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
> +
> +# Subdir rules rely on $(FLAGS_TO_PASS)
> +FLAGS_TO_PASS = $(AM_MAKEFLAGS)
> +
> +
> +if BUILD_CORLIB
> +M2DEFS = Debug.def  Executive.def \
> +         KeyBoardLEDs.def  SYSTEM.def \
> +         TimerHandler.def
> +
> +M2MODS = Debug.mod  Executive.mod \
> +         SYSTEM.mod  TimerHandler.mod
> +
> +toolexeclib_LTLIBRARIES = libm2cor.la
> +
> +libm2cor_la_SOURCES = $(M2MODS) KeyBoardLEDs.cc
> +
> +nodist_EXTRA_libm2cor_la_SOURCES = dummy.c  ## forces automake to generate the LINK definition
> +
> +libm2cordir = libm2cor
> +libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
> +libm2cor_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
> +libm2cor_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
> +libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION)
> +BUILT_SOURCES = SYSTEM.def
> +CLEANFILES = SYSTEM.def
> +
> +M2LIBDIR = /m2/m2cor/
> +
> +SYSTEM.def: Makefile
> +       bash $(GM2_SRC)/tools-src/makeSystem -fpim \
> +             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.def \
> +             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.mod \
> +             -I$(GM2_SRC)/gm2-libs-coroutines:$(GM2_SRC)/gm2-libs:$(GM2_SRC)/gm2-libs-iso \
> +             "$(GM2_FOR_TARGET)" $@
> +
> +.mod.lo:
> +       $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(GM2_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2cor_la_M2FLAGS) $< -o $@
> +
> +.cc.lo:
> +       $(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@
> +
> +install-data-local: force
> +       mkdir -p $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
> +       $(INSTALL_DATA) .libs/libm2cor.la $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
> +       chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.la
> +       $(INSTALL_DATA) .libs/libm2cor.a $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
> +       chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.a
> +       $(RANLIB) $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.a
> +       for i in $(M2DEFS) $(M2MODS) ; do \
> +           if [ -f $$i ] ; then \
> +              $(INSTALL_DATA) $$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \
> +           elif [ -f @srcdir@/../../gcc/m2/gm2-libs-coroutines/$$i ] ; then \
> +              $(INSTALL_DATA) @srcdir@/../../gcc/m2/gm2-libs-coroutines/$$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \
> +           else \
> +              echo "cannot find $$i" ; exit 1 ; \
> +           fi ; \
> +           chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)$$i ; \
> +       done
> +
> +force:
> +
> +endif
> diff -ruw /dev/null gcc-git-devel-modula2/libgm2/libm2cor/KeyBoardLEDs.cc
> --- /dev/null   2022-08-24 16:22:16.888000070 +0100
> +++ gcc-git-devel-modula2/libgm2/libm2cor/KeyBoardLEDs.cc       2022-10-07 20:21:18.738098020 +0100
> @@ -0,0 +1,157 @@
> +/* KeyBoardLEDs.c provide access to the keyboard LEDs.
> +
> +Copyright (C) 2005-2022 Free Software Foundation, Inc.
> +Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
> +
> +This file is part of GNU Modula-2.
> +
> +GNU Modula-2 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.
> +
> +GNU Modula-2 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.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
> +
> +You should have received a copy of the GNU General Public License and
> +a copy of the GCC Runtime Library Exception along with this program;
> +see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
> +<http://www.gnu.org/licenses/>.  */
> +
> +#include <config.h>
> +#include <m2rts.h>
> +
> +#if defined(linux)
> +
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <fcntl.h>
> +#include <linux/kd.h>
> +#include <sys/ioctl.h>
> +#include <stdio.h>
> +
> +#if !defined(TRUE)
> +#   define TRUE (1==1)
> +#endif
> +#if !defined(FALSE)
> +#   define FALSE (1==0)
> +#endif
> +
> +#include <stdlib.h>
> +
> +static int fd;
> +static int initialized = FALSE;
> +
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchScroll (int scrolllock)
> +{
> +  unsigned char leds;
> +  int r = ioctl (fd, KDGETLED, &leds);
> +  if (scrolllock)
> +    leds = leds | LED_SCR;
> +  else
> +    leds = leds & (~ LED_SCR);
> +  r = ioctl (fd, KDSETLED, leds);
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchNum (int numlock)
> +{
> +  unsigned char leds;
> +  int r = ioctl (fd, KDGETLED, &leds);
> +  if (numlock)
> +    leds = leds | LED_NUM;
> +  else
> +    leds = leds & (~ LED_NUM);
> +  r = ioctl (fd, KDSETLED, leds);
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchCaps (int capslock)
> +{
> +  unsigned char leds;
> +  int r = ioctl (fd, KDGETLED, &leds);
> +  if (capslock)
> +    leds = leds | LED_CAP;
> +  else
> +    leds = leds & (~ LED_CAP);
> +  r = ioctl (fd, KDSETLED, leds);
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock)
> +{
> +  KeyBoardLEDs_SwitchScroll (scrolllock);
> +  KeyBoardLEDs_SwitchNum (numlock);
> +  KeyBoardLEDs_SwitchCaps (capslock);
> +}
> +
> +extern "C" void
> +_M2_KeyBoardLEDs_init (int, char **, char **)
> +{
> +  if (! initialized)
> +    {
> +      initialized = TRUE;
> +      fd = open ("/dev/tty", O_RDONLY);
> +      if (fd == -1)
> +       {
> +         perror ("unable to open /dev/tty");
> +         exit (1);
> +       }
> +    }
> +}
> +
> +#else
> +extern "C" void
> +KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock)
> +{
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchScroll (int scrolllock)
> +{
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchNum (int numlock)
> +{
> +}
> +
> +extern "C" void
> +KeyBoardLEDs_SwitchCaps (int capslock)
> +{
> +}
> +
> +extern "C" void
> +_M2_KeyBoardLEDs_init (int, char **, char **)
> +{
> +}
> +
> +#endif
> +
> +/* GNU Modula-2 linking hooks.  */
> +
> +extern "C" void
> +_M2_KeyBoardLEDs_finish (int, char **, char **)
> +{
> +}
> +
> +extern "C" void
> +_M2_KeyBoardLEDs_dep (void)
> +{
> +}
> +
> +struct _M2_KeyBoardLEDs_ctor { _M2_KeyBoardLEDs_ctor (); } _M2_KeyBoardLEDs_ctor;
> +
> +_M2_KeyBoardLEDs_ctor::_M2_KeyBoardLEDs_ctor (void)
> +{
> +  M2RTS_RegisterModule ("KeyBoardLEDs", _M2_KeyBoardLEDs_init, _M2_KeyBoardLEDs_finish,
> +                       _M2_KeyBoardLEDs_dep);
> +}
  
Gaius Mulley Nov. 22, 2022, 2:43 p.m. UTC | #2
Richard Biener <richard.guenther@gmail.com> writes:

> On Mon, Oct 10, 2022 at 5:35 PM Gaius Mulley via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>>
>>
>> This patch set consists of the libgm2 makefile, autoconf sources
>> necessary to build the libm2pim, libm2iso, libm2min, libm2cor
>> and libm2log.
>
> This looks OK.

Thanks!

> I suppose it was also tested building a cross-compiler?

yes it builds a cross compiler tool chain targetting aarch64, hosted and
built on amd64 gnu linux.

> Can we get some up-to-date status on the build and support status for the
> list of primary and secondary platforms we list on
> https://gcc.gnu.org/gcc-13/criteria.html?

Primary platform summary
========================

aarch64-none-linux-gnu              bootstrapped 6 reg failures
arm-linux-gnueabi                   (still building)
i686-pc-linux-gnu                   bootstrapped 7 reg failures
powerpc64-unknown-linux-gnu         bootstrapped 12 reg failures
powerpc64le-unknown-linux-gnu       bootstrapped 18 reg failures
sparc-sun-solaris2.11               (still building)
x86_64-pc-linux-gnu                 bootstrapped 6 reg failures
                                    (tumbleweed and bullseye)


there are six regression tests failures common to all platforms (one
test failing with 6 option permutations and with a reasonably obvious
fix will be purged soon)


i586-unknown-freebsd                fails at:

ctype_members.cc:137:3: error: redefinition of ‘bool std::ctype<wchar_t>::do_is(std::ctype_base::mask, char_type) const’
  137 |   ctype<wchar_t>::
      |   ^~~~~~~~~~~~~~
In file included from /home/gaius/GM2/graft-combine/build-devel-modula2-enabled/i586-unknown-freebsd13.0/libstdc++-v3/include/bits/locale_facets.h:1546,
                 from /home/gaius/GM2/graft-combine/build-devel-modula2-enabled/i586-unknown-freebsd13.0/libstdc++-v3/include/locale:42,
                 from ctype_members.cc:31:


regards,
Gaius
  
Gaius Mulley Nov. 24, 2022, 10:02 a.m. UTC | #3
Richard Biener <richard.guenther@gmail.com> writes:

> On Mon, Oct 10, 2022 at 5:35 PM Gaius Mulley via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>>
>>
>> This patch set consists of the libgm2 makefile, autoconf sources
>> necessary to build the libm2pim, libm2iso, libm2min, libm2cor
>> and libm2log.
>
> This looks OK.  I suppose it was also tested building a cross-compiler?
>
> Can we get some up-to-date status on the build and support status for the
> list of primary and secondary platforms we list on
> https://gcc.gnu.org/gcc-13/criteria.html?

sure, here is a summary of the primary/secondary platforms, added at the
end of the page:

https://splendidisolation.ddns.net/public/modula2/patchsummary.html

regards,
Gaius
  

Patch

diff -ruw /dev/null gcc-git-devel-modula2/libgm2/ChangeLog
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/ChangeLog	2022-10-07 20:21:18.730097923 +0100
@@ -0,0 +1,506 @@ 
+2022-05-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Corrected dates on all source files.
+	* libm2pim/Selective.c: Reformatted comments.
+	* libm2pim/SysExceptions.c: Reformatted comments.
+	* libm2pim/dtoa.c: Reformatted comments.
+	* libm2pim/ldtoa.c: Reformatted comments.
+	* libm2pim/sckt.c: Reformatted comments.
+	* libm2pim/termios.c: Reformatted comments.
+	* libm2pim/wrapc.c: Reformatted comments.
+	* libm2pim/termios.c: Reformatted comments within enum.
+	* libm2pim/Selective.c: Correct spelling.
+	* libm2pim/termios.c: Use GNU comment formatting.
+
+2022-05-17  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Corrected dates on all source files.
+
+2022-03-02  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2pim/sckt.c (tcpServerEstablishPort): Corrected spelling.
+	(tcpServerEstablish) Corrected spelling.
+
+2021-06-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.am: renamed getopt.c to cgetopt.c.
+
+2021-05-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.in: (rebuilt).
+	* aclocal.m4: (rebuilt).
+	* configure: (rebuilt).
+	* configure.ac: tidied up messages.  Removed android
+	from the list of supported hosts.  Corrected a comment
+	* libm2pim/Makefile.am: Conditionally build.
+	* libm2cor/Makefile.am: Conditionally build.
+	* libm2log/Makefile.am: Conditionally build.
+	* libm2iso/Makefile.am: Conditionally build.
+	* libm2cor/Makefile.in: (Rebuilt).
+	* libm2iso/Makefile.in: (Rebuilt).
+	* libm2log/Makefile.in: (Rebuilt).
+	* libm2min/Makefile.in: (Rebuilt).
+	* libm2pim/Makefile.in: (Rebuilt).
+
+2021-05-28  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.in: (Rebuilt).
+	* aclocal.m4: (Rebuilt).
+	* configure: (Rebuilt).
+	* configure.ac: Introduce checks for supported host
+	operating system and also known detect target architectures
+	which are currently restricted to minimal runtime libraries.
+	* libm2cor/Makefile.in: (Rebuilt).
+	* libm2iso/Makefile.in: (Rebuilt).
+	* libm2log/Makefile.in: (Rebuilt).
+	* libm2min/Makefile.in: (Rebuilt).
+	* libm2pim/Makefile.in: (Rebuilt).
+
+2021-02-12  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2iso/RTco.c: (threadSem) new declaration
+        and implmentation of thread semaphores used internally by
+        the m2 runtime system.
+
+2021-01-13  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.am: Updated dates.
+	* aclocal.m4: (Rebuilt).
+	* autogen.sh: Updated dates.
+	* configure: (Rebuilt).
+	* configure.ac: Updated dates.
+	* libm2cor/KeyBoardLEDs.c: Updated dates.
+	* libm2cor/Makefile.am: Updated dates.
+	* libm2iso/ChanConsts.h: Updated dates.
+	* libm2iso/ErrnoCategory.c: Updated dates.
+	* libm2iso/Makefile.am: Updated dates.
+	* libm2iso/RTco.c: Updated dates.
+	* libm2iso/wrapsock.c: Updated dates.
+	* libm2iso/wraptime.c: Updated dates.
+	* libm2log/Break.c: Updated dates.
+	* libm2log/Makefile.am: Updated dates.
+	* libm2min/Makefile.am: Updated dates.
+	* libm2min/libc.c: Updated dates.
+	* libm2pim/Makefile.am: Updated dates.
+	* libm2pim/Selective.c: Updated dates.
+	* libm2pim/SysExceptions.c: Updated dates.
+	* libm2pim/UnixArgs.c: Updated dates.
+	* libm2pim/dtoa.c: Updated dates.
+	* libm2pim/errno.c: Updated dates.
+	* libm2pim/getopt.c: Updated dates.
+	* libm2pim/ldtoa.c: Updated dates.
+	* libm2pim/sckt.c: Updated dates.
+	* libm2pim/target.c: Updated dates.
+	* libm2pim/termios.c: Updated dates.
+	* libm2pim/wrapc.c: Updated dates.
+
+2020-11-20  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.in: (Rebuilt).
+	* aclocal.m4: (Rebuilt).
+	* configure: (Rebuilt).
+	* configure.ac: (libtool_VERSION=17.0.0)
+
+2020-06-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.in: (Rebuilt).
+	* aclocal.m4: (Rebuilt).
+	* autogen.sh: Execute automake including dependencies.
+	* configure: (Rebuilt).
+	* libm2cor/Makefile.in: (Rebuilt).
+	* libm2iso/Makefile.in: (Rebuilt).
+	* libm2log/Makefile.am: SYSTEM.def is a dependency using
+	  BUILT_SOURCES.
+	* libm2log/Makefile.in: (Rebuilt).
+	* libm2min/Makefile.in: (Rebuilt).
+	* libm2pim/Makefile.in: (Rebuilt).
+
+2020-06-15  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2pim/Makefile.am: Added SYSTEM.def as a dependency.
+	* libm2log/Makefile.am: Added SYSTEM.def as a dependency.
+
+2020-06-11  Matthias Klose  <doko@ubuntu.com>
+
+	* Makefile.am: Reordered libraries.
+	* Makefile.in: (Rebuilt).
+	* libm2pim/Makefile.am: (libm2pim_la_LIBADD) Added
+          definition.
+	* libm2pim/Makefile.in: (Rebuilt).
+
+2020-05-01  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2cor/KeyBoardLEDs.c: Include sys/ioctl.h
+          and stdio.h to fix implicit declarations of ioctl and
+	  perror.
+	* libm2iso/RTco.c: Include <sys/select.h>.
+	* libm2pim/SysExceptions.c: (HAVE_STDIO_H) Checked
+	  and stdio.h included to fix perror implicit declaration.
+
+2020-04-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2pim/wrapc.c: (HAVE_SYS_TYPES_H) checked to include
+          sys/types.h.  (HAVE_TIME_H) checked to include time.h.
+          Fixes missing prototype errors.  (HAVE_UNISTD_H) checked
+	  to include unistd.h to fix getuid missing prototype.
+
+2020-01-08  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2min/libc.c: (exit) noreturn added.
+	  (abort) noreturn added.
+
+2019-12-10  Matthias Klose  <doko@ubuntu.com>
+
+	* libm2cor/Makefile.am: (libsubdir) Corrected using
+	  target_alias.
+	* libm2iso/Makefile.am: (libsubdir) Corrected using
+	  target_alias.
+	* libm2log/Makefile.am: (libsubdir) Corrected using
+	  target_alias.
+	* libm2min/Makefile.am: (libsubdir) Corrected using
+	  target_alias.
+	* libm2pim/Makefile.am: (libsubdir) Corrected using
+	  target_alias.
+	* libm2cor/Makefile.in: Regenerated.
+	* libm2iso/Makefile.in: Regenerated.
+	* libm2log/Makefile.in: Regenerated.
+	* libm2min/Makefile.in: Regenerated.
+	* libm2pim/Makefile.in: Regenerated.
+
+2019-12-10  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2iso/RTco.c: Corrected include files
+          for target building.
+
+2019-12-09  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* configure.ac: Remove reference to config dir.
+          (ACX_NONCANONICAL_TARGET) Removed.
+	* libm2cor/Makefile.in: Regenerated.
+	* libm2iso/Makefile.in: Regenerated.
+	* libm2log/Makefile.in: Regenerated.
+	* libm2min/Makefile.in: Regenerated.
+	* libm2pim/Makefile.in: Regenerated.
+	* configure.ac: (LT_INIT) Used instead of AM_PROG_LIBTOOL.
+	* libm2cor/Makefile.in: Regenerated.
+	* libm2iso/Makefile.in: Regenerated.
+	* libm2log/Makefile.in: Regenerated.
+	* libm2min/Makefile.in: Regenerated.
+	* libm2pim/Makefile.in: Regenerated.
+
+2019-12-04  Matthias Klose  <doko@ubuntu.com>
+
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated from automake-1.15.1.
+	* libm2cor/Makefile.am: Added -version-info.
+	* libm2cor/Makefile.in: Regenerated.
+	* libm2iso/Makefile.am: Added -version-info.
+	* libm2iso/Makefile.in: Regenerated.
+	* libm2log/Makefile.am: Added -version-info.
+	* libm2log/Makefile.in: Regenerated.
+	* libm2min/Makefile.am: Added -version-info.
+	* libm2min/Makefile.in: Regenerated.
+	* libm2pim/Makefile.am: Added -version-info.
+	* libm2pim/Makefile.in: Regenerated.
+
+2019-12-03  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2min/Makefile.am: (M2LIBDIR) Corrected
+          destination directory to m2/m2min.
+
+2019-11-19  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* multilib fixes
+	* Makefile.am: (MULTIBUILDTOP) propagate.
+	* Makefile.in: (Regenerated).
+	* configure: (Regenerated).
+	* configure.ac: (ACX_NONCANONICAL_TARGET) Removed.
+	* libm2cor/Makefile.am: (MULTIBUILDTOP) Propagate.
+	* libm2cor/Makefile.in: (Regenerated).
+	* libm2iso/Makefile.am: (MULTIBUILDTOP) Propagate.
+	* libm2iso/Makefile.in: (Regenerated).
+	* libm2log/Makefile.am: (MULTIBUILDTOP) Propagate.
+	* libm2log/Makefile.in: (Regenerated).
+	* libm2min/Makefile.am: (MULTIBUILDTOP) Propagate.
+	* libm2min/Makefile.in: (Regenerated).
+	* libm2pim/Makefile.am: (MULTIBUILDTOP) Propagate.
+	* libm2pim/Makefile.in: (Regenerated).
+
+2019-11-18  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* configure: (Regenerated).
+	* configure.ac: (libtool_VERSION=15.0.0).
+	Place AM_ENABLE_MULTILIB above GCC_NO_EXECUTABLES.
+
+2019-11-13  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2pim/Selective.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/SysExceptions.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/UnixArgs.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/dtoa.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/errno.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/getopt.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/ldtoa.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/sckt.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/target.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/termios.c: Changed to GPL3+ and fixed
+	  formatting.
+	* libm2pim/wrapc.c: Changed to GPL3+ and fixed
+	  formatting.
+
+2019-11-12  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libm2cor/KeyBoardLEDs.c: GPLv3 and reformatted.
+	* libm2iso/ChanConsts.h: GPLv3 and reformatted.
+	* libm2iso/ErrnoCategory.c: GPLv3 and reformatted.
+	* libm2iso/RTco.c: GPLv3 and reformatted.
+	* libm2iso/wrapsock.c: GPLv3 and reformatted.
+	* libm2iso/wraptime.c: GPLv3 and reformatted.
+	* libm2cor/Makefile.am: GPLv3.
+	* libm2iso/Makefile.am: GPLv3.
+	* libm2log/Makefile.am: GPLv3.
+	* libm2min/Makefile.am: GPLv3.
+	* libm2pim/Makefile.am: GPLv3.
+	* libm2log/Break.c: GPLv3 and reformatted.
+	* libm2min/libc.c: GPLv3 and reformatted.
+
+2019-11-04  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libcor/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libiso/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libpim/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* liblog/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libmin/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libulm/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libpth/Makefile.am: (MULTIOSSUBDIR) quote test.
+	* libcor/Makefile.in: Regenerated.
+	* libiso/Makefile.in: Regenerated.
+	* libpim/Makefile.in: Regenerated.
+	* liblog/Makefile.in: Regenerated.
+	* libmin/Makefile.in: Regenerated.
+	* libulm/Makefile.in: Regenerated.
+	* libpth/Makefile.in: Regenerated.
+
+2019-10-25  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libcor/Makefile.am: Added -fm2-g -g.
+	* libiso/Makefile.am: Added -fm2-g -g and include
+          path to include ../
+	* libiso/RTco.c: Call HALT if the thread fails to
+          find itself.  Place initialized inside critical region.
+	* libpim/Makefile.am: Added -fm2-g -g.
+
+2019-09-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libulm: Removed.
+	* Makefile.am: Removed Ulm libaraies.
+	* configure.ac: Removed Ulm libaraies.
+
+2019-08-01  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libpim/Makefile.am: (M2MODS) added GetOpt.mod
+          and OptLib.mod.  (M2DEFS) added GetOpt.def,
+          OptLib.def and getopt.def.  (libgm2_la_SOURCES)
+          added wrapc.c and getopt.c.
+
+2019-07-10  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libpth/Makefile.am: Use $(MAKE) rather than make.
+	* libcor/KeyBoardLEDs.c: Reformatted to GNU coding
+          standards.  Also added/corrected empty functions for non
+	  linux targets.  Fixed the GPL comment.
+
+2019-07-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* Makefile.am: (multilib.am) Included.
+
+2019-04-03  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated.
+	* autogen.sh: Removed version numbers.
+	* config/libtool.m4: New version of the file
+	  taken from libgo/config.
+	* configure: Regenerated.
+	* configure.ac: Updated version numbers.
+	* libcor/Makefile.in: Regenerated.
+	* libiso/Makefile.in: Regenerated.
+	* liblog/Makefile.in: Regenerated.
+	* libmin/Makefile.in: Regenerated.
+	* libpim/Makefile.in: Regenerated.
+	* libulm/Makefile.in: Regenerated.
+
+2019-03-29  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* configure: Regenerated.
+	* configure.ac: Implement --enable-libpth-m2
+	* libpth/Makefile.am: Pass FLAGS_TO_PASS to make.
+          move install rules into pth subdirectory.
+	* libpth/pth/Makefile.am: Added install rules.
+
+2018-11-27  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* libpim/wrapc.c: Reformatted according to GNU
+          coding standards.  Also defended against macro omissions.
+	* libiso/wraptime.c: Fixed function declaration
+	  and erroneous return value.
+
+2018-04-16  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.am: Specify the libtool location.
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated.
+	* autogen.sh: Corrected script to regenerate
+          using the correct macros and versions of autoconf tools.
+	* configure: Regenerated.
+	* configure.ac: Regenerated.
+	* libcor/Makefile.in: Regenerated.
+	* libiso/Makefile.in: Regenerated.
+	* liblog/Makefile.in: Regenerated.
+	* libmin/Makefile.in: Regenerated.
+	* libpim/Makefile.in: Regenerated.
+	* libulm/Makefile.in: Regenerated.
+
+2018-04-14  Gaius Mulley  <gaius.mulley@southwales.ac.uk>
+
+	* Makefile.am: Changed to reference the config directory.
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated.
+	* autogen.sh: Added new script.
+	* config.h.in: Regenerated.
+	* configure: Regenerated.
+	* configure.ac: Minor corrections.
+	* libcor/Makefile.am: Use $(LIBTOOL).
+	* libcor/Makefile.in: Regenerated.
+	* libiso/Makefile.am: Use $(LIBTOOL).
+	* libiso/Makefile.in: Regenerated.
+	* liblog/Makefile.am: Use $(LIBTOOL).
+	* liblog/Makefile.in: Regenerated.
+	* libmin/Makefile.am: Use $(LIBTOOL).
+	* libmin/Makefile.in: Regenerated.
+	* libpim/Makefile.am: Use $(LIBTOOL).
+	* libpim/Makefile.in: Regenerated.
+	* libulm/Makefile.am: Use $(LIBTOOL).
+	* libulm/Makefile.in: Regenerated.
+
+2018-04-10  Gaius Mulley  <gaius@gnu.org>
+
+	* configure.ac: Added test to AM_ENABLE_MULTILIB.
+	* Makefile.in: Regenerated.
+	* aclocal.m4: Regenerated.
+	* autogen.sh: Updated.
+	* config.h.in: Regenerated.
+	* configure: Regenerated.
+	* libcor/Makefile.in: Regenerated.
+	* libiso/Makefile.in: Regenerated.
+	* liblog/Makefile.in: Regenerated.
+	* libmin/Makefile.am: Added -fno-m2-plugin
+	* libmin/Makefile.in: Regenerated.
+	* libpim/Makefile.in: Regenerated.
+	* libulm/Makefile.in: Regenerated.
+
+2017-12-27  Gaius Mulley  <gaius@gnu.org>
+
+	* libpim/wrapc.c: (wrapc_isfinite) New function.
+
+2016-06-09  Gaius Mulley  <gaius@gnu.org>
+
+	* libpim/dtoa.c: Use memmove instead of memcpy.
+
+2016-03-14  Gaius Mulley  <gaius@gnu.org>
+
+	* libpim/wrapc.c: Corrected spacing.
+
+2014-12-24  Gaius Mulley  <gaius@gnu.org>
+
+	* sckt.c: Added conditional import of
+	  stdio.h as reported by Christoph Schlegel.
+
+2014-12-23  Gaius Mulley  <gaius@gnu.org>
+
+	* libulm/Makefile.am: Added pim libs to the
+	  path on the createUlmSys command.
+
+2014-12-22  Gaius Mulley  <gaius@gnu.org>
+
+	* libulm/Makefile.am: Added rule to build
+	  SYSTEM.def as a built source.
+
+2014-12-06  Gaius Mulley  <gaius@gnu.org>
+
+	* libcor/Makefile.in: Add .la to list of SUFFIXES.
+	  install .la archive.
+	* libcor/Makefile.am: Install .la archive.
+	* libiso/Makefile.in: Install .la archive.
+	* libiso/Makefile.am: Install .la archive.
+	* liblog/Makefile.am: Install .la archive.
+	* liblog/Makefile.in: Install .la archive.
+	* libmin/Makefile.am: Install .la archive.
+	* libmin/Makefile.in: Install .la archive.
+	* libpim/Makefile.am: Install .la archive.
+	* libpim/Makefile.in: Install .la archive.
+	* libulm/Makefile.am: Install .la archive.
+	* libulm/Makefile.in: Install .la archive.
+
+2014-12-05  Gaius Mulley  <gaius@gnu.org>
+
+	* libmin/Makefile.am: Add .la to the list of SUFFIXES.
+	* libulm/Makefile.am: Add .la to the list of SUFFIXES.
+	* libpim/Makefile.am: Add .la to the list of SUFFIXES.
+	* libcor/Makefile.am: Add .la to the list of SUFFIXES.
+	* liblog/Makefile.am: Add .la to the list of SUFFIXES.
+	* libiso/Makefile.am: Add .la to the list of SUFFIXES.
+
+2014-07-11  Gaius Mulley  <gaius@gnu.org>
+
+	* complete rewrite and restructuring of libgm2.
+	* gcc-versionno/libgm2/aclocal.m4: (Rebuilt)
+	* gcc-versionno/libgm2/autogen.sh: (Rebuilt)
+	* gcc-versionno/libgm2/config.h.in: (New file)
+	* gcc-versionno/libgm2/configure: (Rebuilt)
+	* gcc-versionno/libgm2/configure.ac: (New file)
+	* gcc-versionno/libgm2/libcor: (New directory)
+	* gcc-versionno/libgm2/libiso: (New directory)
+	* gcc-versionno/libgm2/liblog: (New directory)
+	* gcc-versionno/libgm2/libmin: (New directory)
+	* gcc-versionno/libgm2/libpim: (New directory)
+	* gcc-versionno/libgm2/libulm: (New directory)
+	* gcc-versionno/libgm2/Makefile.am: (New file)
+	* gcc-versionno/libgm2/Makefile.in: (rebuilt)
+	* gcc-versionno/libgm2/p2c: (New directory)
+
+2013-12-06  Gaius Mulley  <gaius@gnu.org>
+
+	* gcc-versionno/gcc/gm2/Make-lang.in: Changed flag to -fpim
+	and changed path appropriately.
+
+2013-12-05  Gaius Mulley  <gaius@gnu.org>
+
+	* gm2/libgm2/Makefile.in: Build coroutine version of SYSTEM.def.
+
+2013-10-17  Gaius Mulley  <gaius@gnu.org>
+
+	* gm2/libgm2/Makefile.in: Corrected install of iso SYSTEM.def.
+	Ensure that we copy form the object directory and avoid the
+	template version in the source directory.
+
+2013-09-14  Gaius Mulley  <gaius@gnu.org>
+
+	* gm2/libgm2/Makefile.in: Many changes to allow more libraries
+	to build and also build SYSTEM.def for the pim, iso and min
+	libraries.
+
+2013-07-08  Gaius Mulley  <gaius@gnu.org>
+
+	* gm2/ChangeLog: (New file).
+	* gm2/libgm2/Makefile.in: Added install rules.  Many of which
+	were adapted from gcc/gm2/Make-file.in.
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/config.h.in
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/config.h.in	2022-10-07 20:21:18.734097972 +0100
@@ -0,0 +1,313 @@ 
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* function access exists */
+#undef HAVE_ACCESS
+
+/* function brk exists */
+#undef HAVE_BRK
+
+/* function cfmakeraw exists */
+#undef HAVE_CFMAKERAW
+
+/* function close exists */
+#undef HAVE_CLOSE
+
+/* function creat exists */
+#undef HAVE_CREAT
+
+/* function ctime exists */
+#undef HAVE_CTIME
+
+/* Define to 1 if you have the <direct.h> header file. */
+#undef HAVE_DIRECT_H
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* function dup exists */
+#undef HAVE_DUP
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* function execve exists */
+#undef HAVE_EXECVE
+
+/* function exit exists */
+#undef HAVE_EXIT
+
+/* function fcntl exists */
+#undef HAVE_FCNTL
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* function fstat exists */
+#undef HAVE_FSTAT
+
+/* function getdents exists */
+#undef HAVE_GETDENTS
+
+/* function getgid exists */
+#undef HAVE_GETGID
+
+/* function getpid exists */
+#undef HAVE_GETPID
+
+/* function gettimeofday exists */
+#undef HAVE_GETTIMEOFD
+
+/* function getuid exists */
+#undef HAVE_GETUID
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* function ioctl exists */
+#undef HAVE_IOCTL
+
+/* function kill exists */
+#undef HAVE_KILL
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* function link exists */
+#undef HAVE_LINK
+
+/* function lseek exists */
+#undef HAVE_LSEEK
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* have math.h */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* function open exists */
+#undef HAVE_OPEN
+
+/* function pause exists */
+#undef HAVE_PAUSE
+
+/* function pipe exists */
+#undef HAVE_PIPE
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* function rand exists */
+#undef HAVE_RAND
+
+/* function read exists */
+#undef HAVE_READ
+
+/* function select exists */
+#undef HAVE_SELECT
+
+/* function setgid exists */
+#undef HAVE_SETGID
+
+/* function setitimer exists */
+#undef HAVE_SETITIMER
+
+/* function setuid exists */
+#undef HAVE_SETUID
+
+/* Define to 1 if you have the <signal.h> header file. */
+#undef HAVE_SIGNAL_H
+
+/* function signbit exists */
+#undef HAVE_SIGNBIT
+
+/* function signbitf exists */
+#undef HAVE_SIGNBITF
+
+/* function signbitl exists */
+#undef HAVE_SIGNBITL
+
+/* function stat exists */
+#undef HAVE_STAT
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* function strsignal exists */
+#undef HAVE_STRSIGNAL
+
+/* function strtod exists */
+#undef HAVE_STRTOD
+
+/* function strtold exists */
+#undef HAVE_STRTOLD
+
+/* Define to 1 if the system has the type `struct stat'. */
+#undef HAVE_STRUCT_STAT
+
+/* Define to 1 if the system has the type `struct timeval'. */
+#undef HAVE_STRUCT_TIMEVAL
+
+/* Define to 1 if the system has the type `struct timezone'. */
+#undef HAVE_STRUCT_TIMEZONE
+
+/* Define to 1 if you have the <sys/errno.h> header file. */
+#undef HAVE_SYS_ERRNO_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#undef HAVE_SYS_TIMES_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#undef HAVE_SYS_UIO_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* function times exists */
+#undef HAVE_TIMES
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* function unlink exists */
+#undef HAVE_UNLINK
+
+/* function wait exists */
+#undef HAVE_WAIT
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* function write exists */
+#undef HAVE_WRITE
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/Makefile.am
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/Makefile.am	2022-10-07 20:21:18.730097923 +0100
@@ -0,0 +1,103 @@ 
+# Makefile for libgm2.
+#   Copyright 2013-2022  Free Software Foundation, Inc.
+#
+# This file 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+#
+#
+# if this file is changed then you need to run
+#
+# autoreconf2.64
+#
+# Modula-2 support.
+AUTOMAKE_OPTIONS = 1.8 foreign
+
+SUFFIXES = .c .mod .def .o .obj .lo .a
+
+ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+
+# Multilib support.
+MAKEOVERRIDES=
+
+AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include
+
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
+
+GCC_DIR = $(TOP_GCCDIR)/gcc
+GM2_SRC = $(GCC_DIR)/m2
+
+toolexeclibdir=@toolexeclibdir@
+toolexecdir=@toolexecdir@
+GM2_FOR_TARGET=@GM2_FOR_TARGET@
+
+SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim
+GM2_BUILDDIR := $(shell pwd)
+gm2_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
+
+# Work around what appears to be a GNU make bug handling MAKEFLAGS
+# values defined in terms of make variables, as is the case for CC and
+# friends when we are called from the top level Makefile.
+AM_MAKEFLAGS = \
+        "GCC_DIR=$(GCC_DIR)" \
+        "GM2_SRC=$(GM2_SRC)" \
+	"AR_FLAGS=$(AR_FLAGS)" \
+	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
+	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+	"CFLAGS=$(CFLAGS)" \
+	"CXXFLAGS=$(CXXFLAGS)" \
+	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+	"INSTALL=$(INSTALL)" \
+	"INSTALL_DATA=$(INSTALL_DATA)" \
+	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+	"LDFLAGS=$(LDFLAGS)" \
+	"LIBCFLAGS=$(LIBCFLAGS)" \
+	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+	"MAKE=$(MAKE)" \
+	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+        "MULTIBUILDTOP=$(MULTIBUILDTOP)" \
+        "MULTISUBDIR=$(MULTISUBDIR)" \
+        "MULTIOSDIR=$(MULTIDIR)" \
+        "MULTIFLAGS=$(MULTIFLAGS)" \
+	"PICFLAG=$(PICFLAG)" \
+	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+	"SHELL=$(SHELL)" \
+	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+	"exec_prefix=$(exec_prefix)" \
+	"infodir=$(infodir)" \
+	"libdir=$(libdir)" \
+	"includedir=$(includedir)" \
+	"prefix=$(prefix)" \
+	"tooldir=$(tooldir)" \
+	"gxx_include_dir=$(gxx_include_dir)" \
+	"AR=$(AR)" \
+	"AS=$(AS)" \
+	"LD=$(LD)" \
+	"RANLIB=$(RANLIB)" \
+	"NM=$(NM)" \
+	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
+	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
+	"WERROR=$(WERROR)" \
+        "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
+	"LIBTOOL=$(GM2_BUILDDIR)/libtool"
+
+# Subdir rules rely on $(FLAGS_TO_PASS)
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+
+include $(top_srcdir)/../multilib.am
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/configure.ac
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/configure.ac	2022-10-07 20:21:18.738098020 +0100
@@ -0,0 +1,376 @@ 
+# Configure script for libgm2.
+# Copyright (C) 2013-2022 Free Software Foundation, Inc.
+
+# This file is 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/>.
+
+# Configure looks for the existence of this file to auto-config each language.
+# We define several parameters used by configure:
+
+# Process this file with autoreconf to produce a configure script.
+
+AC_INIT(package-unused, version-unused,,libgm2)
+AC_CONFIG_SRCDIR(Makefile.am)
+# AC_CONFIG_MACRO_DIR([config])
+AC_CONFIG_HEADER(config.h)
+
+libtool_VERSION=17:0:0
+AC_SUBST(libtool_VERSION)
+
+AM_ENABLE_MULTILIB(, ..)
+
+GCC_NO_EXECUTABLES
+
+AC_USE_SYSTEM_EXTENSIONS
+
+# Do not delete or change the following two lines.  For why, see
+# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html
+AC_CANONICAL_SYSTEM
+target_alias=${target_alias-$host_alias}
+AC_SUBST(target_alias)
+
+AM_INIT_AUTOMAKE([1.9.3 no-define foreign no-dist -Wall -Wno-portability])
+
+AH_TEMPLATE(PACKAGE, [Name of package])
+AH_TEMPLATE(VERSION, [Version number of package])
+
+AC_ARG_WITH(cross-host,
+[  --with-cross-host=HOST           Configuring with a cross compiler])
+
+# Checks for header files.
+AC_HEADER_STDC
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADER([math.h],
+	       [AC_DEFINE([HAVE_MATH_H], [1], [have math.h])])
+
+AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h \
+                 time.h \
+		 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
+		 sys/resource.h sys/param.h sys/times.h sys/stat.h \
+                 sys/socket.h \
+                 sys/wait.h sys/ioctl.h errno.h sys/errno.h \
+		 pwd.h direct.h dirent.h signal.h malloc.h langinfo.h \
+                 pthread.h stdarg.h stdio.h sys/types.h termios.h \
+                 netinet/in.h netdb.h sys/uio.h sys/stat.h wchar.h)
+
+
+AC_CANONICAL_HOST
+ACX_NONCANONICAL_HOST
+ACX_NONCANONICAL_TARGET
+GCC_TOPLEV_SUBDIRS
+
+AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+AC_ARG_ENABLE(version-specific-runtime-libs,
+[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
+[case "$enableval" in
+ yes) version_specific_libs=yes ;;
+ no)  version_specific_libs=no ;;
+ *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+[version_specific_libs=no])
+AC_MSG_RESULT($version_specific_libs)
+
+AC_ARG_WITH(slibdir,
+[  --with-slibdir=DIR      shared libraries in DIR [LIBDIR]],
+slibdir="$with_slibdir",
+if test "${version_specific_libs}" = yes; then
+  slibdir='$(libsubdir)'
+elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
+  slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
+else
+  slibdir='$(libdir)'
+fi)
+AC_SUBST(slibdir)
+
+# Command-line options.
+# Very limited version of AC_MAINTAINER_MODE.
+AC_ARG_ENABLE([maintainer-mode],
+  [AC_HELP_STRING([--enable-maintainer-mode],
+                 [enable make rules and dependencies not useful (and
+                  sometimes confusing) to the casual installer])],
+  [case ${enable_maintainer_mode} in
+     yes) MAINT='' ;;
+     no) MAINT='#' ;;
+     *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
+   esac
+   maintainer_mode=${enableval}],
+  [MAINT='#'])
+AC_SUBST([MAINT])dnl
+
+toolexecdir=no
+toolexeclibdir=no
+
+# Calculate toolexeclibdir
+# Also toolexecdir, though it's only used in toolexeclibdir
+case ${version_specific_libs} in
+  yes)
+    # Need the gcc compiler version to know where to install libraries
+    # and header files if --enable-version-specific-runtime-libs option
+    # is selected.
+    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
+    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+    ;;
+  no)
+    if test -n "$with_cross_host" &&
+       test x"$with_cross_host" != x"no"; then
+      # Install a library built with a cross compiler in tooldir, not libdir.
+      toolexecdir='$(exec_prefix)/$(target_noncanonical)'
+      toolexeclibdir='$(toolexecdir)/lib'
+    else
+      toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
+      toolexeclibdir='$(libdir)'
+    fi
+    multi_os_directory=`$CC -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
+    esac
+    ;;
+esac
+
+AC_SUBST(toolexecdir)
+AC_SUBST(toolexeclibdir)
+
+AH_TEMPLATE(PACKAGE, [Name of package])
+AH_TEMPLATE(VERSION, [Version number of package])
+
+AM_MAINTAINER_MODE
+
+# Check the compiler.
+# The same as in boehm-gc and libstdc++. Have to borrow it from there.
+# We must force CC to /not/ be precious variables; otherwise
+# the wrong, non-multilib-adjusted value will be used in multilibs.
+# As a side effect, we have to subst CFLAGS ourselves.
+
+m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+m4_define([_AC_ARG_VAR_PRECIOUS],[])
+AC_PROG_CC
+AC_PROG_CXX
+AM_PROG_AS
+m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+AC_SUBST(CFLAGS)
+
+# In order to override CFLAGS_FOR_TARGET, all of our special flags go
+# in XCFLAGS.  But we need them in CFLAGS during configury.  So put them
+# in both places for now and restore CFLAGS at the end of config.
+save_CFLAGS="$CFLAGS"
+
+# Find other programs we need.
+AC_CHECK_TOOL(AR, ar)
+AC_CHECK_TOOL(NM, nm)
+AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
+AC_PATH_PROG(PERL, perl, perl-not-found-in-path-error)
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+LT_INIT
+AC_LIBTOOL_DLOPEN
+# AM_PROG_LIBTOOL
+AC_SUBST(enable_shared)
+AC_SUBST(enable_static)
+
+AC_CHECK_TYPES([struct timezone, struct stat, struct timeval])
+
+AC_LANG_C
+# Check the compiler.
+# The same as in boehm-gc and libstdc++. Have to borrow it from there.
+# We must force CC to /not/ be precious variables; otherwise
+# the wrong, non-multilib-adjusted value will be used in multilibs.
+# As a side effect, we have to subst CFLAGS ourselves.
+
+m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+m4_define([_AC_ARG_VAR_PRECIOUS],[])
+AC_PROG_CC
+m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+AC_SUBST(CFLAGS)
+
+AC_DEFUN([GM2_UNDEF],[
+  $as_echo "#undef HAVE_$1" >>confdefs.h
+])
+
+AC_DEFUN([GM2_CHECK_LIB],[
+  AC_MSG_CHECKING([m2 front end checking $1 library for $2])
+  if test x$gcc_no_link != xyes; then
+    AC_CHECK_LIB([$1],[$2],[AC_DEFINE([HAVE_$3],[1],[found $2])],[GM2_UNDEF([$3],[$2])])
+  else
+    if test "x$[ac_cv_lib_$1_$2]" = xyes; then
+      AC_DEFINE([HAVE_$3],[1],[lib$1 includes $2])
+    elif test "x$[ac_cv_func_$2]" = xyes; then
+      AC_DEFINE([HAVE_$3],[1],[function $2 exists])
+    else
+      GM2_UNDEF([$3],[$2])
+    fi
+  fi
+])
+
+GM2_CHECK_LIB([c],[access],[ACCESS])
+GM2_CHECK_LIB([c],[brk],[BRK])
+GM2_CHECK_LIB([c],[cfmakeraw],[CFMAKERAW])
+GM2_CHECK_LIB([c],[close],[CLOSE])
+GM2_CHECK_LIB([c],[ctime],[CTIME])
+GM2_CHECK_LIB([c],[creat],[CREAT])
+GM2_CHECK_LIB([c],[dup],[DUP])
+GM2_CHECK_LIB([c],[execve],[EXECVE])
+GM2_CHECK_LIB([c],[exit],[EXIT])
+GM2_CHECK_LIB([c],[fcntl],[FCNTL])
+GM2_CHECK_LIB([c],[fstat],[FSTAT])
+GM2_CHECK_LIB([c],[getdents],[GETDENTS])
+GM2_CHECK_LIB([c],[getgid],[GETGID])
+GM2_CHECK_LIB([c],[getpid],[GETPID])
+GM2_CHECK_LIB([c],[gettimeofday],[GETTIMEOFD])
+GM2_CHECK_LIB([c],[getuid],[GETUID])
+GM2_CHECK_LIB([c],[ioctl],[IOCTL])
+GM2_CHECK_LIB([c],[kill],[KILL])
+GM2_CHECK_LIB([c],[link],[LINK])
+GM2_CHECK_LIB([c],[lseek],[LSEEK])
+GM2_CHECK_LIB([c],[open],[OPEN])
+GM2_CHECK_LIB([c],[pause],[PAUSE])
+GM2_CHECK_LIB([c],[pipe],[PIPE])
+GM2_CHECK_LIB([c],[rand],[RAND])
+GM2_CHECK_LIB([c],[read],[READ])
+GM2_CHECK_LIB([c],[select],[SELECT])
+GM2_CHECK_LIB([c],[setitimer],[SETITIMER])
+GM2_CHECK_LIB([c],[setgid],[SETGID])
+GM2_CHECK_LIB([c],[setuid],[SETUID])
+GM2_CHECK_LIB([c],[stat],[STAT])
+GM2_CHECK_LIB([c],[strsignal],[STRSIGNAL])
+GM2_CHECK_LIB([c],[strtod],[STRTOD])
+GM2_CHECK_LIB([c],[strtold],[STRTOLD])
+GM2_CHECK_LIB([c],[times],[TIMES])
+GM2_CHECK_LIB([c],[unlink],[UNLINK])
+GM2_CHECK_LIB([c],[wait],[WAIT])
+GM2_CHECK_LIB([c],[write],[WRITE])
+
+GM2_CHECK_LIB([m],[signbit],[SIGNBIT])
+GM2_CHECK_LIB([m],[signbitf],[SIGNBITF])
+GM2_CHECK_LIB([m],[signbitl],[SIGNBITL])
+
+AC_MSG_NOTICE([libgm2 has finished checking target libc and libm contents.])
+
+# We test the host here and later on check the target.
+
+# All known M2_HOST_OS values.  This is the union of all host operating systems
+# supported by gm2.
+
+M2_SUPPORTED_HOST_OS="aix freebsd hurd linux netbsd openbsd solaris windows"
+
+M2_HOST_OS=unknown
+
+case ${host} in
+  *-*-darwin*)   M2_HOST_OS=darwin ;;
+  *-*-freebsd*)  M2_HOST_OS=freebsd ;;
+  *-*-linux*)    M2_HOST_OS=linux ;;
+  *-*-netbsd*)	 M2_HOST_OS=netbsd ;;
+  *-*-openbsd*)  M2_HOST_OS=openbsd ;;
+  *-*-solaris2*) M2_HOST_OS=solaris ;;
+  *-*-aix*)      M2_HOST_OS=aix ;;
+  *-*-gnu*)      M2_HOST_OS=hurd ;;
+esac
+
+# M2_HOST_OS=unknown
+if test x${M2_HOST_OS} = xunknown; then
+   AC_MSG_NOTICE([unsupported host, will build a minimal m2 library])
+   BUILD_PIMLIB=false
+   BUILD_ISOLIB=false
+   BUILD_CORLIB=false
+   BUILD_LOGLIB=false
+else
+   AC_MSG_NOTICE([m2 library will be built on ${M2_HOST_OS}])
+   BUILD_PIMLIB=true
+   BUILD_ISOLIB=true
+   BUILD_CORLIB=true
+   BUILD_LOGLIB=true
+fi
+
+CC_FOR_BUILD=${CC_FOR_BUILD:-gcc}
+AC_SUBST(CC_FOR_BUILD)
+
+# Propagate GM2_FOR_TARGET into Makefiles
+GM2_FOR_TARGET=${GM2_FOR_TARGET:-gcc}
+AC_SUBST(GM2_FOR_TARGET)
+
+# Now we check the target as long as it is a supported host.
+# For some embedded targets we choose minimal runtime system which is
+# just enough to satisfy the linker targetting raw metal.
+if test x${M2_HOST_OS} != xunknown; then
+AC_MSG_NOTICE([m2 library building for target ${target}])
+case "$target" in
+
+  avr25*-*-* | avr31*-*-* | avr35*-*-* | avr4*-*-* | avr5*-*-* | avr51*-*-* | avr6*-*-*)
+  BUILD_PIMLIB=false
+  BUILD_ISOLIB=false
+  BUILD_CORLIB=false
+  BUILD_LOGLIB=false
+  ;;
+
+  avrxmega2*-*-* | avrxmega4*-*-* | avrxmega5*-*-* | avrxmega6*-*-* | avrxmega7*-*-*)
+  BUILD_PIMLIB=false
+  BUILD_ISOLIB=false
+  BUILD_CORLIB=false
+  BUILD_LOGLIB=false
+  ;;
+
+  avr3-*-*)
+  BUILD_PIMLIB=true
+  BUILD_ISOLIB=true
+  BUILD_CORLIB=true
+  BUILD_LOGLIB=true
+  ;;
+  esp32-*-*)
+  BUILD_PIMLIB=false
+  BUILD_ISOLIB=false
+  BUILD_CORLIB=false
+  BUILD_LOGLIB=false
+  ;;
+
+esac
+fi
+
+# GM2_MSG_RESULT issue a query message from the first parameter and a boolean result
+# in the second parameter is printed as a "yes" or "no".
+
+AC_DEFUN([GM2_MSG_RESULT],[
+   AC_MSG_CHECKING([$1])
+   if test x${$2} = xtrue; then
+      AC_MSG_RESULT([yes])
+   else
+      AC_MSG_RESULT([no])
+   fi
+])
+
+if test x${M2_HOST_OS} = xunknown; then
+   AC_MSG_NOTICE([m2 front end will only build minimal Modula-2 runtime library on this host])
+else
+   GM2_MSG_RESULT([m2 front end will build PIM libraries:],[BUILD_PIMLIB])
+   GM2_MSG_RESULT([m2 front end will build ISO libraries:],[BUILD_ISOLIB])
+   GM2_MSG_RESULT([m2 front end will build coroutine libraries:],[BUILD_CORLIB])
+   GM2_MSG_RESULT([m2 front end will build Logitech compatability libraries:],[BUILD_LOGLIB])
+fi
+
+AM_CONDITIONAL([BUILD_PIMLIB], [test x$BUILD_PIMLIB = xtrue])
+AM_CONDITIONAL([BUILD_ISOLIB], [test x$BUILD_ISOLIB = xtrue])
+AM_CONDITIONAL([BUILD_CORLIB], [test x$BUILD_CORLIB = xtrue])
+AM_CONDITIONAL([BUILD_LOGLIB], [test x$BUILD_LOGLIB = xtrue])
+
+AC_CONFIG_SRCDIR([Makefile.am])
+AC_CONFIG_FILES([Makefile libm2min/Makefile libm2pim/Makefile libm2iso/Makefile
+                 libm2cor/Makefile libm2log/Makefile])
+
+AC_MSG_NOTICE([libgm2 has been configured.])
+
+AC_OUTPUT
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/autogen.sh
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/autogen.sh	2022-10-07 20:21:18.734097972 +0100
@@ -0,0 +1,31 @@ 
+#!/bin/sh
+
+# autogen.sh regenerate the autoconf files.
+#   Copyright 2013-2022  Free Software Foundation, Inc.
+#
+# This file 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+rm -rf autom4te.cache
+
+# libtoolize
+rm -f aclocal.m4
+# aclocal -I . -I config -I ../config
+aclocal -I . -I ../config
+autoreconf -I . -I ../config
+automake --include-deps
+
+rm -rf autom4te.cache
+
+exit 0
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/libm2cor/Makefile.am
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/libm2cor/Makefile.am	2022-10-07 20:21:18.738098020 +0100
@@ -0,0 +1,156 @@ 
+# Makefile for libm2cor.
+#   Copyright 2013-2022  Free Software Foundation, Inc.
+#
+# This file 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+SUFFIXES = .c .cc .mod .def .o .obj .lo .a .la
+
+ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+
+VPATH = . @srcdir@ @srcdir@/../../gcc/m2/gm2-libs-coroutines
+
+# Multilib support.
+MAKEOVERRIDES=
+
+version := $(shell $(CC) -dumpversion)
+
+# Directory in which the compiler finds libraries etc.
+libsubdir = $(libdir)/gcc/$(target_alias)/$(version)
+# Used to install the shared libgcc.
+slibdir = @slibdir@
+
+toolexeclibdir=@toolexeclibdir@
+toolexecdir=@toolexecdir@
+GM2_FOR_TARGET=@GM2_FOR_TARGET@
+
+MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+inst_libdir = $(libsubdir)$(MULTISUBDIR)
+inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+
+# Work around what appears to be a GNU make bug handling MAKEFLAGS
+# values defined in terms of make variables, as is the case for CC and
+# friends when we are called from the top level Makefile.
+AM_MAKEFLAGS = \
+        "GCC_DIR=$(GCC_DIR)" \
+        "GM2_SRC=$(GM2_SRC)" \
+	"AR_FLAGS=$(AR_FLAGS)" \
+	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
+	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+	"CFLAGS=$(CFLAGS)" \
+	"CXXFLAGS=$(CXXFLAGS)" \
+	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+	"INSTALL=$(INSTALL)" \
+	"INSTALL_DATA=$(INSTALL_DATA)" \
+	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+	"LDFLAGS=$(LDFLAGS)" \
+	"LIBCFLAGS=$(LIBCFLAGS)" \
+	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+	"MAKE=$(MAKE)" \
+	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+        "MULTIBUILDTOP=$(MULTIBUILDTOP)" \
+        "MULTISUBDIR=$(MULTISUBDIR)" \
+        "MULTIOSDIR=$(MULTIOSDIR)" \
+        "MULTIFLAGS=$(MULTIFLAGS)" \
+	"PICFLAG=$(PICFLAG)" \
+	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+	"SHELL=$(SHELL)" \
+	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+	"exec_prefix=$(exec_prefix)" \
+	"infodir=$(infodir)" \
+	"libdir=$(libdir)" \
+	"includedir=$(includedir)" \
+	"prefix=$(prefix)" \
+	"tooldir=$(tooldir)" \
+	"gxx_include_dir=$(gxx_include_dir)" \
+	"AR=$(AR)" \
+	"AS=$(AS)" \
+	"LD=$(LD)" \
+	"RANLIB=$(RANLIB)" \
+	"NM=$(NM)" \
+	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
+	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
+	"WERROR=$(WERROR)" \
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
+
+# Subdir rules rely on $(FLAGS_TO_PASS)
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+
+
+if BUILD_CORLIB
+M2DEFS = Debug.def  Executive.def \
+         KeyBoardLEDs.def  SYSTEM.def \
+         TimerHandler.def
+
+M2MODS = Debug.mod  Executive.mod \
+         SYSTEM.mod  TimerHandler.mod
+
+toolexeclib_LTLIBRARIES = libm2cor.la
+
+libm2cor_la_SOURCES = $(M2MODS) KeyBoardLEDs.cc
+
+nodist_EXTRA_libm2cor_la_SOURCES = dummy.c  ## forces automake to generate the LINK definition
+
+libm2cordir = libm2cor
+libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
+libm2cor_la_CFLAGS = -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
+libm2cor_la_M2FLAGS = -I. -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso -fm2-g -g
+libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION)
+BUILT_SOURCES = SYSTEM.def
+CLEANFILES = SYSTEM.def
+
+M2LIBDIR = /m2/m2cor/
+
+SYSTEM.def: Makefile
+	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
+             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.def \
+             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.mod \
+             -I$(GM2_SRC)/gm2-libs-coroutines:$(GM2_SRC)/gm2-libs:$(GM2_SRC)/gm2-libs-iso \
+             "$(GM2_FOR_TARGET)" $@
+
+.mod.lo:
+	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(GM2_FOR_TARGET) -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2cor_la_M2FLAGS) $< -o $@
+
+.cc.lo:
+	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@
+
+install-data-local: force
+	mkdir -p $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
+	$(INSTALL_DATA) .libs/libm2cor.la $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
+	chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.la
+	$(INSTALL_DATA) .libs/libm2cor.a $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)
+	chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.a
+	$(RANLIB) $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)libm2cor.a
+	for i in $(M2DEFS) $(M2MODS) ; do \
+           if [ -f $$i ] ; then \
+              $(INSTALL_DATA) $$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \
+           elif [ -f @srcdir@/../../gcc/m2/gm2-libs-coroutines/$$i ] ; then \
+              $(INSTALL_DATA) @srcdir@/../../gcc/m2/gm2-libs-coroutines/$$i '$(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)'; \
+           else \
+              echo "cannot find $$i" ; exit 1 ; \
+           fi ; \
+           chmod 644 $(DESTDIR)$(inst_libdir)/$(MULTIDIR)$(M2LIBDIR)$$i ; \
+	done
+
+force:
+
+endif
diff -ruw /dev/null gcc-git-devel-modula2/libgm2/libm2cor/KeyBoardLEDs.cc
--- /dev/null	2022-08-24 16:22:16.888000070 +0100
+++ gcc-git-devel-modula2/libgm2/libm2cor/KeyBoardLEDs.cc	2022-10-07 20:21:18.738098020 +0100
@@ -0,0 +1,157 @@ 
+/* KeyBoardLEDs.c provide access to the keyboard LEDs.
+
+Copyright (C) 2005-2022 Free Software Foundation, Inc.
+Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
+
+This file is part of GNU Modula-2.
+
+GNU Modula-2 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.
+
+GNU Modula-2 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.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <m2rts.h>
+
+#if defined(linux)
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <linux/kd.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+
+#if !defined(TRUE)
+#   define TRUE (1==1)
+#endif
+#if !defined(FALSE)
+#   define FALSE (1==0)
+#endif
+
+#include <stdlib.h>
+
+static int fd;
+static int initialized = FALSE;
+
+
+extern "C" void
+KeyBoardLEDs_SwitchScroll (int scrolllock)
+{
+  unsigned char leds;
+  int r = ioctl (fd, KDGETLED, &leds);
+  if (scrolllock)
+    leds = leds | LED_SCR;
+  else
+    leds = leds & (~ LED_SCR);
+  r = ioctl (fd, KDSETLED, leds);
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchNum (int numlock)
+{
+  unsigned char leds;
+  int r = ioctl (fd, KDGETLED, &leds);
+  if (numlock)
+    leds = leds | LED_NUM;
+  else
+    leds = leds & (~ LED_NUM);
+  r = ioctl (fd, KDSETLED, leds);
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchCaps (int capslock)
+{
+  unsigned char leds;
+  int r = ioctl (fd, KDGETLED, &leds);
+  if (capslock)
+    leds = leds | LED_CAP;
+  else
+    leds = leds & (~ LED_CAP);
+  r = ioctl (fd, KDSETLED, leds);
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock)
+{
+  KeyBoardLEDs_SwitchScroll (scrolllock);
+  KeyBoardLEDs_SwitchNum (numlock);
+  KeyBoardLEDs_SwitchCaps (capslock);
+}
+
+extern "C" void
+_M2_KeyBoardLEDs_init (int, char **, char **)
+{
+  if (! initialized)
+    {
+      initialized = TRUE;
+      fd = open ("/dev/tty", O_RDONLY);
+      if (fd == -1)
+	{
+	  perror ("unable to open /dev/tty");
+	  exit (1);
+	}
+    }
+}
+
+#else
+extern "C" void
+KeyBoardLEDs_SwitchLeds (int numlock, int capslock, int scrolllock)
+{
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchScroll (int scrolllock)
+{
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchNum (int numlock)
+{
+}
+
+extern "C" void
+KeyBoardLEDs_SwitchCaps (int capslock)
+{
+}
+
+extern "C" void
+_M2_KeyBoardLEDs_init (int, char **, char **)
+{
+}
+
+#endif
+
+/* GNU Modula-2 linking hooks.  */
+
+extern "C" void
+_M2_KeyBoardLEDs_finish (int, char **, char **)
+{
+}
+
+extern "C" void
+_M2_KeyBoardLEDs_dep (void)
+{
+}
+
+struct _M2_KeyBoardLEDs_ctor { _M2_KeyBoardLEDs_ctor (); } _M2_KeyBoardLEDs_ctor;
+
+_M2_KeyBoardLEDs_ctor::_M2_KeyBoardLEDs_ctor (void)
+{
+  M2RTS_RegisterModule ("KeyBoardLEDs", _M2_KeyBoardLEDs_init, _M2_KeyBoardLEDs_finish,
+			_M2_KeyBoardLEDs_dep);
+}