[pushed]PR modula2/125129: Many tests fail to link on FreeBSD

Gaius Mulley <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
Not all targets have csin[l], ccos[l] and ctan[l].  On such systems
the ISO libraries should be pruned thus allowing compile time failures
for source which explicitly requests these intrinsics rather than universally
fail on linking.  This patch introduces a new tool mktargetsrc which
will generate target versions of the Modula-2 libraries.  The patch also
introduces -fdump-builtins which is used by mktargetsrc.  mktargetsrc
replaces makeSystem and mktargetsrc improves the formatting of the
autogenerated SYSTEM.def files.
Bootstrapped on x86_64 Debian, FreeBSD15 and ppc64le GNU/Linux.

gcc/ChangeLog:

	PR modula2/125129
	* doc/gm2.texi (-fdump-builtins): New switch.

gcc/m2/ChangeLog:

	PR modula2/125129
	* Make-lang.in (escape_path): New define.
	(GM2_FOR_TARGET_ESC): New define.
	(RSTSRC): Remove.
	(gm2-libs.texi-check): Rewrite without $(objdir).
	(m2/gm2-libs.rst): Remove.
	(gm2-ebnf.rst): Ditto.
	(gm2-ebnf.rst-check): Ditto.
	(SYSTEM-pim-texi-check): Ditto.
	(m2/SYSTEM-pim.rst): Ditto.
	(m2/SYSTEM-iso.texi): Rewrite without $(objdir).
	(Builtins.texi-check): Rewrite specifying $(srcdir).
	(m2/Builtins.rst): Remove.
	(MC_ARGS): Add -I$(srcdir)/m2/gm2-libs-pim-common
	and -I$(srcdir)/m2/mc-boot-ch.
	(m2/mc-boot/$(SRC_PREFIX)%.o): Add -I$(srcdir)/m2/mc-boot-ch.
	(m2/mc-boot-ch/$(SRC_PREFIX)%.o): Ditto.
	(MC_BOOT_INCLUDES): New define.
	(m2/gm2-libs-boot/UnixArgs.o): Add MC_BOOT_INCLUDES.
	(m2/gm2-libs-boot/choosetemp.o): Ditto.
	(m2/gm2-libs-boot/errno.o): Ditto.
	(m2/gm2-libs-boot/dtoa.o): Ditto.
	(m2/gm2-libs-boot/ldtoa.o): Ditto.
	(m2/gm2-libs-boot/termios.o): Ditto.
	(m2/gm2-libs-boot/SysExceptions.o): Ditto.
	(m2/gm2-libs-boot/SysStorage.o): Ditto.
	(m2/gm2-libs/Builtins.def): Rewrite.
	(m2/gm2-libs/Builtins.mod): Ditto.
	(m2/gm2-libs/SYSTEM.def): Ditto.
	(m2/gm2-libs-iso/SYSTEM.def): Ditto.
	(m2/gm2-libs-coroutines/SYSTEM.def): Ditto.
	(m2/gm2-libs/%.o): Ditto.
	* gm2-compiler/M2Options.def (SetDumpBuiltins): New procedure.
	(GetDumpBuiltins): New procedure function.
	* gm2-compiler/M2Options.mod (DumpBuiltinsFlag): New variable.
	(SetDumpBuiltins): Implement new procedure.
	(GetDumpBuiltins): Implement new procedure function.
	* gm2-compiler/M2Quads.mod (BuildComponentValue): Removed unused
	variable virtpos.
	* gm2-gcc/m2builtins.cc (GM2_BUG_REPORT): Reformat.
	(ASSERT): Ditto.
	(ERROR): Ditto.
	(dump_available): New funmction.
	(define_builtin): Call dump_available if GetDumpBuiltins is set.
	(dump_builtin): New function.
	(m2builtins_init): Call dump_builtin.
	* gm2-gcc/m2options.h (M2Options_SetDumpBuiltins): New prototype.
	(M2Options_GetDumpBuiltins): Ditto.
	* gm2-lang.cc (gm2_langhook_handle_option): Add OPT_fdump_builtins
	case.
	* gm2-libs-coroutines/SYSTEM.def: Move to...
	* gm2-libs-cor-common/SYSTEM.def: ...here.
	* gm2-libs-coroutines/SYSTEM.mod: Move to...
	* gm2-libs-cor-common/SYSTEM.mod: ...here.
	* gm2-libs-iso/ComplexMath.def: Move to...
	* gm2-libs-iso-common/ComplexMath.def: ...here.
	Add tags.
	* gm2-libs-iso/ComplexMath.mod: Move to...
	* gm2-libs-iso-common/ComplexMath.mod: ...here.
	Add tags.
	* gm2-libs-iso/LongComplexMath.def: Move to...
	* gm2-libs-iso-common/LongComplexMath.def: ...here.
	Add tags.
	* gm2-libs-iso/LongComplexMath.mod: Move to...
	* gm2-libs-iso-common/LongComplexMath.mod: ...here.
	Add tags.
	* gm2-libs-iso/SYSTEM.def: Move to...
	* gm2-libs-iso-common/SYSTEM.def: ...here.
	Add tags.
	* gm2-libs-iso/SYSTEM.mod: Move to...
	* gm2-libs-iso-common/SYSTEM.mod: ...here.
	Add tags.
	* gm2-libs-iso/ShortComplexMath.def: Move to...
	* gm2-libs-iso-common/ShortComplexMath.def: ...here.
	Add tags.
	* gm2-libs-iso/ShortComplexMath.mod: Move to...
	* gm2-libs-iso-common/ShortComplexMath.mod: ...here.
	Add tags.
	* gm2-libs/Builtins.def: Move to...
	* gm2-libs-pim-common/Builtins.def: ...here.
	Add tags.
	* gm2-libs/Builtins.mod: Move to...
	* gm2-libs-pim-common/Builtins.mod: ...here.
	Add tags.
	* gm2-libs/SYSTEM.def: Move to...
	* gm2-libs-pim-common/SYSTEM.def: ...here.
	Add tags.
	* gm2-libs/SYSTEM.mod: Move to...
	* gm2-libs-pim-common/SYSTEM.mod: ...here.
	Add tags.
	* gm2-libs/cbuiltin.def: Move to...
	* gm2-libs-pim-common/cbuiltin.def: ...here.
	Add tags.
	* lang.opt (fdump-builtins): Add.
	* tools-src/def2doc.py: Modified to process tags.
	* tools-src/makeSystem: Modified to reflect new tags.
	* tools-src/mktargetsrc.py: New file.

libgm2/ChangeLog:

	PR modula2/125129
	* Makefile.am (GM2_FOR_TARGET_ESC): New define.
	(AM_MAKEFLAGS): Add GM2_FOR_TARGET_ESC.
	Add HAVE_PYTHON_INTERPRETER.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Call AC_PYTHON_DEVEL.
	Call GCC_PICFLAG.
	* libm2cor/Makefile.am (libm2cor_la_M2FLAGS): Add
	gm2-libs-cor-common and pathname.
	(SYSTEM.def): Rewrite rule.
	(SYSTEM.mod): Copy common file.
	* libm2cor/Makefile.in: Regenerate.
	* libm2iso/Makefile.am (AM_MAKEFLAGS): Add GM2_FOR_TARGET_ESC.
	Add HAVE_PYTHON_INTERPRETER.
	(libm2iso_la_CFLAGS): Add m2pim pathname and ../libm2pim to
	include path.
	* libm2log/Makefile.am: Rewrite to handle HAVE_PYTHON_INTERPRETER.
	Falling back to the common versions of target sources if
	HAVE_PYTHON_INTERPRETER is false.
	* libm2min/Makefile.am: Ditto.
	* libm2pim/Makefile.am:	Ditto.
	* libm2iso/Makefile.in: Regenerate.
	* libm2log/Makefile.in: Regenerate.
	* libm2min/Makefile.in: Regenerate.
	* libm2pim/Makefile.in: Regenerate.
	* ax_python_devel.m4: New file.

gcc/testsuite/ChangeLog:

	PR modula2/125129
	* gm2/exceptions/run/pass/exceptions-run-pass.exp: Use
	gm2_target_compiler rather than target_compile.
	* lib/gm2.exp (gm2_target_compile_default): Check
	check_effective_target_pie and append -fPIE if necessary.

Signed-off-by: Gaius Mulley <[email protected]>
---
 gcc/doc/gm2.texi                              |   4 +
 gcc/m2/Make-lang.in                           | 246 +++---
 gcc/m2/gm2-compiler/M2Options.def             |  14 +
 gcc/m2/gm2-compiler/M2Options.mod             |  22 +
 gcc/m2/gm2-compiler/M2Quads.mod               |   3 +-
 gcc/m2/gm2-gcc/m2builtins.cc                  |  58 +-
 gcc/m2/gm2-gcc/m2options.h                    |   2 +
 gcc/m2/gm2-lang.cc                            |   3 +
 gcc/m2/gm2-libs-coroutines/SYSTEM.def         | 192 ----
 gcc/m2/gm2-libs-coroutines/SYSTEM.mod         | 251 ------
 gcc/m2/gm2-libs-iso/ComplexMath.def           |  73 --
 gcc/m2/gm2-libs-iso/ComplexMath.mod           | 164 ----
 gcc/m2/gm2-libs-iso/LongComplexMath.def       |  73 --
 gcc/m2/gm2-libs-iso/LongComplexMath.mod       | 164 ----
 gcc/m2/gm2-libs-iso/SYSTEM.def                | 155 ----
 gcc/m2/gm2-libs-iso/SYSTEM.mod                |  29 -
 gcc/m2/gm2-libs-iso/ShortComplexMath.def      |  88 --
 gcc/m2/gm2-libs-iso/ShortComplexMath.mod      | 164 ----
 gcc/m2/gm2-libs-min/SYSTEM.def                |   7 +-
 gcc/m2/gm2-libs/Builtins.def                  | 276 ------
 gcc/m2/gm2-libs/Builtins.mod                  | 828 ------------------
 gcc/m2/gm2-libs/SYSTEM.def                    | 114 ---
 gcc/m2/gm2-libs/SYSTEM.mod                    |  29 -
 gcc/m2/gm2-libs/cbuiltin.def                  | 217 -----
 gcc/m2/lang.opt                               |   4 +
 gcc/m2/tools-src/def2doc.py                   | 139 ++-
 gcc/m2/tools-src/makeSystem                   |  12 +-
 gcc/m2/tools-src/mktargetsrc.py               | 417 +++++++++
 .../run/pass/exceptions-run-pass.exp          |   4 +-
 gcc/testsuite/lib/gm2.exp                     |   6 +-
 libgm2/Makefile.am                            |   9 +-
 libgm2/Makefile.in                            |  30 +-
 libgm2/aclocal.m4                             |   2 +
 libgm2/ax_python_devel.m4                     | 522 +++++++++++
 libgm2/config.h.in                            |   3 +
 libgm2/configure                              | 683 ++++++++++++++-
 libgm2/configure.ac                           |   5 +-
 libgm2/libm2cor/Makefile.am                   |  29 +-
 libgm2/libm2cor/Makefile.in                   |  54 +-
 libgm2/libm2iso/Makefile.am                   | 152 +++-
 libgm2/libm2iso/Makefile.in                   | 159 +++-
 libgm2/libm2log/Makefile.am                   |  45 +-
 libgm2/libm2log/Makefile.in                   |  79 +-
 libgm2/libm2min/Makefile.am                   |  14 +-
 libgm2/libm2min/Makefile.in                   |  43 +-
 libgm2/libm2pim/Makefile.am                   |  92 +-
 libgm2/libm2pim/Makefile.in                   | 120 ++-
 47 files changed, 2689 insertions(+), 3110 deletions(-)
 delete mode 100644 gcc/m2/gm2-libs-coroutines/SYSTEM.def
 delete mode 100644 gcc/m2/gm2-libs-coroutines/SYSTEM.mod
 delete mode 100644 gcc/m2/gm2-libs-iso/ComplexMath.def
 delete mode 100644 gcc/m2/gm2-libs-iso/ComplexMath.mod
 delete mode 100644 gcc/m2/gm2-libs-iso/LongComplexMath.def
 delete mode 100644 gcc/m2/gm2-libs-iso/LongComplexMath.mod
 delete mode 100644 gcc/m2/gm2-libs-iso/SYSTEM.def
 delete mode 100644 gcc/m2/gm2-libs-iso/SYSTEM.mod
 delete mode 100644 gcc/m2/gm2-libs-iso/ShortComplexMath.def
 delete mode 100644 gcc/m2/gm2-libs-iso/ShortComplexMath.mod
 delete mode 100644 gcc/m2/gm2-libs/Builtins.def
 delete mode 100644 gcc/m2/gm2-libs/Builtins.mod
 delete mode 100644 gcc/m2/gm2-libs/SYSTEM.def
 delete mode 100644 gcc/m2/gm2-libs/SYSTEM.mod
 delete mode 100644 gcc/m2/gm2-libs/cbuiltin.def
 create mode 100644 gcc/m2/tools-src/mktargetsrc.py
 create mode 100644 libgm2/ax_python_devel.m4

diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi
index 6e14ffe64d3..b4ecef2c5a0 100644
--- a/gcc/doc/gm2.texi
+++ b/gcc/doc/gm2.texi
@@ -406,6 +406,10 @@ The default implementation and module filename suffix is @file{.def}.
 If this option is used GNU Modula-2 will still fall back to this
 default if a requested definition module is not found.
 
+@item -fdump-builtins
+Display all builtin procedure functions.
+This is an internal command line option.
+
 @item -fdump-system-exports
 display all inbuilt system items.
 This is an internal command-line option.
diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in
index 11079927eb8..dd4d6e688d6 100644
--- a/gcc/m2/Make-lang.in
+++ b/gcc/m2/Make-lang.in
@@ -38,6 +38,13 @@ GM2_1 = ./gm2 -B./m2/stage1 -g -fm2-g $(CM2DEP)
 
 GM2_FOR_TARGET = $(STAGE_CC_WRAPPER) ./gm2 -B./ -B$(build_tooldir)/bin/ -L$(objdir)/../ld $(TFLAGS)
 
+define escape_path
+$(shell echo "$(1)" | sed 's/ /\\ /g')
+endef
+
+GM2_FOR_TARGET_ESC := $(call escape_path,$(GM2_FOR_TARGET))
+
+
 # FIXME: Get from gcc-plugin.m4 instead of hardcoding.
 ifeq (,$(findstring darwin,$(host)))
   soext=.so
@@ -57,13 +64,6 @@ TEXISRC = $(srcdir)/doc/gm2.texi \
           m2/Builtins.texi \
           m2/gpl_v3_without_node.texi
 
-RSTSRC =  $(srcdir)/doc/gm2.texi \
-          m2/gm2-libs.rst \
-          m2/gm2-ebnf.rst \
-          m2/SYSTEM-pim.rst \
-          m2/SYSTEM-iso.rst \
-          m2/Builtins.rst
-
 # Define the names for selecting modula-2 in LANGUAGES.
 m2 modula-2 modula2: gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) $(GCC_PASSES)
 m2.serial = cc1gm2$(exeext)
@@ -242,31 +242,17 @@ m2/gm2-libs.texi: gm2-libs.texi-check; @true
 
 ifeq ($(HAVE_PYTHON),yes)
 gm2-libs.texi-check: m2/SYSTEM-pim.texi m2/SYSTEM-iso.texi m2/Builtins.texi \
-                     $(objdir)/m2/gm2-libs-coroutines/SYSTEM.def
+                     m2/gm2-libs-coroutines/SYSTEM.def
 	-test -d m2/gm2-libs-log || $(mkinstalldirs) m2/gm2-libs-log
 	-test -d m2/gm2-libs-iso || $(mkinstalldirs) m2/gm2-libs-iso
 	-test -d m2/gm2-libs || $(mkinstalldirs) m2/gm2-libs
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o $(objdir)/m2/gm2-libs.texi
+	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o m2/gm2-libs.texi
 else
 gm2-libs.texi-check:
-	cp $(srcdir)/m2/target-independent/m2/gm2-libs.texi $(objdir)/m2/gm2-libs.texi
+	cp $(srcdir)/m2/target-independent/m2/gm2-libs.texi m2/gm2-libs.texi
 endif
 	$(STAMP) gm2-libs.texi-check
 
-# gm2-libs.rst
-
-m2/gm2-libs.rst: gm2-libs.rst-check; @true
-
-ifeq ($(HAVE_PYTHON),yes)
-gm2-libs.rst-check: m2/SYSTEM-pim.texi m2/SYSTEM-iso.texi m2/Builtins.texi \
-                     $(objdir)/m2/gm2-libs-coroutines/SYSTEM.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -uLibraries -s$(srcdir)/m2 -b$(objdir)/m2 -o $(objdir)/m2/gm2-libs.rst
-else
-gm2-libs.rst-check:
-	cp $(srcdir)/m2/target-independent/m2/gm2-libs.rst $(objdir)/m2/gm2-libs.rst
-endif
-	$(STAMP) gm2-libs.rst-check
-
 # gm2-ebnf.texi
 
 m2/gm2-ebnf.texi: gm2-ebnf.texi-check; @true
@@ -275,93 +261,45 @@ gm2-ebnf.texi-check: $(PGE) $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf
 	$(PGE) -c -p -t -f $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf -o m2/gm2-ebnf.texi
 	$(STAMP) gm2-ebnf.texi-check
 
-# gm2-ebnf.rst
-
-m2/gm2-ebnf.rst: gm2-ebnf.rst-check; @true
-
-gm2-ebnf.rst-check: $(PGE) $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf
-	$(PGE) -c -p -t -f $(srcdir)/m2/gm2-compiler/P0SyntaxCheck.bnf -o m2/gm2-ebnf.rst
-	$(STAMP) gm2-ebnf.rst-check
-
 # SYSTEM-pim.texi
 
 m2/SYSTEM-pim.texi: SYSTEM-pim-texi-check; @true
 
 ifeq ($(HAVE_PYTHON),yes)
-SYSTEM-pim-texi-check: $(objdir)/m2/gm2-libs/SYSTEM.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs/SYSTEM.def -o $(objdir)/m2/SYSTEM-pim.texi
+SYSTEM-pim-texi-check: m2/gm2-libs-pim-common/SYSTEM.def
+	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-pim-common/SYSTEM.def -o m2/SYSTEM-pim.texi
 else
-SYSTEM-pim-texi-check: $(objdir)/m2/gm2-libs/SYSTEM.def
-	cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.texi $(objdir)/m2/SYSTEM-pim.texi
+SYSTEM-pim-texi-check: m2/gm2-libs-pim-common/SYSTEM.def
+	cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.texi m2/SYSTEM-pim.texi
 endif
 	$(STAMP) SYSTEM-pim-texi-check
 
-# SYSTEM-pim.rst
-
-m2/SYSTEM-pim.rst: SYSTEM-pim-rst-check; @true
-
-ifeq ($(HAVE_PYTHON),yes)
-SYSTEM-pim-rst-check: $(objdir)/m2/gm2-libs/SYSTEM.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs/SYSTEM.def -o $(objdir)/m2/SYSTEM-pim.rst
-else
-SYSTEM-pim-rst-check: $(objdir)/m2/gm2-libs/SYSTEM.def
-	cp $(srcdir)/m2/target-independent/m2/SYSTEM-pim.rst $(objdir)/m2/SYSTEM-pim.rst
-endif
-	$(STAMP) SYSTEM-pim-rst-check
-
-# SYSTEM-pim.texi
+# SYSTEM-iso.texi
 
 m2/SYSTEM-iso.texi:  SYSTEM-iso.texi-check; @true
 
 ifeq ($(HAVE_PYTHON),yes)
-SYSTEM-iso.texi-check:  $(objdir)/m2/gm2-libs-iso/SYSTEM.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs-iso/SYSTEM.def -o $(objdir)/m2/SYSTEM-iso.texi
+SYSTEM-iso.texi-check:  m2/gm2-libs-iso-common/SYSTEM.def
+	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-iso-common/SYSTEM.def -o m2/SYSTEM-iso.texi
 else
-SYSTEM-iso.texi-check:  $(objdir)/m2/gm2-libs-iso/SYSTEM.def
-	cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.texi $(objdir)/m2/SYSTEM-iso.texi
+SYSTEM-iso.texi-check:  m2/gm2-libs-iso-common/SYSTEM.def
+	cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.texi m2/SYSTEM-iso.texi
 endif
 	$(STAMP) SYSTEM-iso.texi-check
 
-# SYSTEM-pim.rst
-
-m2/SYSTEM-iso.rst:  SYSTEM-iso.rst-check; @true
-
-ifeq ($(HAVE_PYTHON),yes)
-SYSTEM-iso.rst-check:  $(objdir)/m2/gm2-libs-iso/SYSTEM.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b$(objdir)/m2 -f$(objdir)/m2/gm2-libs-iso/SYSTEM.def -o $(objdir)/m2/SYSTEM-iso.rst
-else
-SYSTEM-iso.rst-check:  $(objdir)/m2/gm2-libs-iso/SYSTEM.def
-	cp $(srcdir)/m2/target-independent/m2/SYSTEM-iso.rst $(objdir)/m2/SYSTEM-iso.rst
-endif
-	$(STAMP) SYSTEM-iso.rst-check
-
-
 # m2/Builtins.texi
 
 m2/Builtins.texi:  Builtins.texi-check; @true
 
 ifeq ($(HAVE_PYTHON),yes)
-Builtins.texi-check:  m2/gm2-libs/Builtins.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -b./ -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(objdir)/m2/Builtins.texi
+Builtins.texi-check:  m2/gm2-libs-pim-common/Builtins.def
+	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -t -s$(srcdir) -fm2/gm2-libs-pim-common/Builtins.def -o m2/Builtins.texi
 else
-Builtins.texi-check:  m2/gm2-libs/Builtins.def
-	cp $(srcdir)/m2/target-independent/m2/Builtins.texi $(objdir)/m2/Builtins.texi
+Builtins.texi-check:  m2/gm2-libs-pim-common/Builtins.def
+	cp $(srcdir)/m2/target-independent/m2/Builtins.texi m2/Builtins.texi
 endif
 	$(STAMP) Builtins.texi-check
 
-# m2/Builtins.rst
-
-m2/Builtins.rst:  Builtins.rst-check; @true
-
-ifeq ($(HAVE_PYTHON),yes)
-Builtins.rst-check:  m2/gm2-libs/Builtins.def
-	$(PYTHON) $(srcdir)/m2/tools-src/def2doc.py -x -b./ -f$(srcdir)/m2/gm2-libs/Builtins.def -o $(objdir)/m2/Builtins.rst
-else
-Builtins.rst-check:  m2/gm2-libs/Builtins.def
-	cp $(srcdir)/m2/target-independent/m2/Builtins.rst $(objdir)/m2/Builtins.rst
-endif
-	$(STAMP) Builtins.rst-check
-
 m2/gpl_v3_without_node.texi: doc/include/gpl_v3.texi
 	grep -v "^@node" $< > $@
 
@@ -496,6 +434,7 @@ MC_COPYRIGHT=
 
 MC_ARGS= --olang=c++ \
  --h-file-prefix=$(SRC_PREFIX) \
+ -I$(srcdir)/m2/gm2-libs-pim-common \
  -I$(srcdir)/m2/gm2-libs \
  -I$(srcdir)/m2/gm2-compiler \
  -I$(srcdir)/m2/gm2-libiberty \
@@ -1458,7 +1397,8 @@ GM2_BOOT_INCLUDES=-I. \
   -Im2/gm2-compiler-boot \
   -I$(srcdir)m2/gm2-gcc \
   -Im2/gm2-libiberty \
-  -I$(srcdir)/m2/gm2-libiberty
+  -I$(srcdir)/m2/gm2-libiberty \
+  -I$(srcdir)/m2/mc-boot-ch
 
 GCC_COLOR=m2/gm2-gcc/m2color.o diagnostic-color.o
 
@@ -1470,12 +1410,17 @@ m2/boot-bin/mc$(exeext): $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) \
 
 m2/mc-boot/$(SRC_PREFIX)%.o: m2/mc-boot/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -g -c -I. -I$(srcdir)/m2/mc-boot-ch -I$(srcdir)/m2/mc-boot -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \
+         -g -c -I. -I$(srcdir)/m2/mc-boot-ch -I$(srcdir)/m2/mc-boot \
+         -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) \
+         -I$(srcdir)/m2/mc-boot-ch $< -o $@
 	$(POSTCOMPILE)
 
 m2/mc-boot-ch/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.c m2/gm2-libs/gm2-libs-host.h
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -DHAVE_CONFIG_H -g -c -I. -Im2/gm2-libs -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) -Im2/gm2-libs $< -o $@
+	$(CXX) $(CM2DEP) $(CXXFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -DHAVE_CONFIG_H \
+         -g -c -I. -Im2/gm2-libs -I$(srcdir)/../include -I$(srcdir) $(INCLUDES) \
+         -I$(srcdir)/m2/mc-boot-ch -Im2/gm2-libs $< -o $@
 	$(POSTCOMPILE)
 
 m2/mc-boot-ch/$(SRC_PREFIX)%.o: m2/mc-boot-ch/$(SRC_PREFIX)%.cc m2/gm2-libs/gm2-libs-host.h
@@ -1536,47 +1481,56 @@ m2/gm2-libs-boot/wrapc.o: $(srcdir)/m2/gm2-libs-ch/wrapc.c m2/gm2-libs-boot/$(SR
 	$(CXX) $(CM2DEP) -c -DHAVE_CONFIG_H $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libs $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
+MC_BOOT_INCLUDES = -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -I$(srcdir)/m2/mc-boot-ch
+
 m2/gm2-libs-boot/UnixArgs.o: $(srcdir)/m2/gm2-libs-ch/UnixArgs.cc m2/gm2-libs-boot/$(SRC_PREFIX)UnixArgs.h $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c -DIN_GCC $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c -DIN_GCC $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \
+         $(MC_BOOT_INCLUDES) $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/choosetemp.o: m2/gm2-libs-ch/choosetemp.c m2/gm2-libiberty/Gchoosetemp.h $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot -Im2/gm2-libiberty -I$(srcdir)/m2/gm2-libiberty/ $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \
+         -Im2/gm2-libiberty -I$(srcdir)/m2/gm2-libiberty/ $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/errno.o: $(srcdir)/m2/gm2-libs-ch/errno.c m2/gm2-libs-boot/$(SRC_PREFIX)errno.h $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \
+         $(MC_BOOT_INCLUDES) $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/dtoa.o: $(srcdir)/m2/gm2-libs-ch/dtoa.cc $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs-boot -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \
+          $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/ldtoa.o: $(srcdir)/m2/gm2-libs-ch/ldtoa.cc $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs-boot -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \
+          $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/termios.o: $(srcdir)/m2/gm2-libs-ch/termios.c $(BUILD-LIBS-BOOT-H) $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \
+          $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/SysExceptions.o: $(srcdir)/m2/gm2-libs-ch/SysExceptions.c \
                                   m2/gm2-libs-boot/$(SRC_PREFIX)SysExceptions.h $(GM2-LIBS-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) $(MC_BOOT_INCLUDES) \
+          $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs-boot/SysStorage.o: $(srcdir)/m2/gm2-libs/SysStorage.mod $(MCDEPS) $(BUILD-BOOT-H)
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
 	$(MC) -o=m2/gm2-libs-boot/SysStorage.c $(srcdir)/m2/gm2-libs/SysStorage.mod
 	$(COMPILER) $(CM2DEP) -DIN_GCC -c $(CFLAGS) $(GM2_PICFLAGS) $(MC_SRC_FLAGS) \
-          -I$(srcdir)/m2 -Im2 -I. -Im2/gm2-libs-boot $(MCINCLUDES) $(INCLUDES) \
+          $(MC_BOOT_INCLUDES) $(MCINCLUDES) $(INCLUDES) \
           m2/gm2-libs-boot/SysStorage.c -o m2/gm2-libs-boot/SysStorage.o
 	$(POSTCOMPILE)
 
@@ -1761,39 +1715,96 @@ m2/gm2config.aci:
                 --target=$(target) --program-suffix=$(exeext)' ; \
         fi
 
-$(objdir)/m2/gm2-libs-min/SYSTEM.def: $(GM2_PROG_DEP)
+ifeq ($(HAVE_PYTHON),yes)
+m2/gm2-libs/Builtins.def: $(GM2_PROG_DEP)
 	-test -d $(@D) || $(mkinstalldirs) $(@D)
-	$(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \
-             $(srcdir)/m2/gm2-libs-min/SYSTEM.def \
-             $(srcdir)/m2/gm2-libs-min/SYSTEM.mod \
-             -I$(srcdir)/m2/gm2-libs-min -I$(srcdir)/m2/gm2-libs \
-             "$(GM2_FOR_TARGET)" $@
+	$(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \
+             -D=$(srcdir)/m2/gm2-libs-pim-common/Builtins.def \
+             -M=$(srcdir)/m2/gm2-libs-pim-common/Builtins.mod \
+             -I=$(srcdir)/m2/gm2-libs \
+             -I=$(srcdir)/m2/gm2-libs-pim-common \
+             -C=$(GM2_FOR_TARGET_ESC) -o $@
+else
+m2/gm2-libs/Builtins.def: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	-cp -p $(srcdir)/m2/gm2-libs-common/Builtins.def $@
+endif
 
-$(objdir)/m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP)
+ifeq ($(HAVE_PYTHON),yes)
+m2/gm2-libs/Builtins.mod: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	$(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \
+             -M=$(srcdir)/m2/gm2-libs-pim-common/Builtins.mod \
+             -I=$(srcdir)/m2/gm2-libs \
+             -I=$(srcdir)/m2/gm2-libs-pim-common \
+             -C=$(GM2_FOR_TARGET_ESC) -o $@
+else
+m2/gm2-libs/Builtins.mod: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	-cp -p $(srcdir)/m2/gm2-libs-common/Builtins.mod $@
+endif
+
+ifeq ($(HAVE_PYTHON),yes)
+m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	$(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \
+	    -D=$(srcdir)/m2/gm2-libs-pim-common/SYSTEM.def \
+	    -M=$(srcdir)/m2/gm2-libs-pim-common/SYSTEM.mod \
+	    -I=$(srcdir)/m2/gm2-libs \
+	    -I=$(srcdir)/m2/gm2-libs-pim-common \
+	    -C=$(GM2_FOR_TARGET_ESC) -o $@
+else
+m2/gm2-libs/SYSTEM.def: $(GM2_PROG_DEP)
 	-test -d $(@D) || $(mkinstalldirs) $(@D)
-	echo "GM2_FOR_TARGET $(GM2_FOR_TARGET)"
-	echo "GCC_FOR_TARGET $(GCC_FOR_TARGET)"
 	$(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \
-             $(srcdir)/m2/gm2-libs/SYSTEM.def \
-             $(srcdir)/m2/gm2-libs/SYSTEM.mod \
+             $(srcdir)/m2/gm2-libs-pim-common/SYSTEM.def \
+             $(srcdir)/m2/gm2-libs-pim-common/SYSTEM.mod \
              -I$(srcdir)/m2/gm2-libs \
+             -I$(srcdir)/m2/gm2-libs-pim-common \
              "$(GM2_FOR_TARGET)" $@
+endif
 
-$(objdir)/m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP)
+ifeq ($(HAVE_PYTHON),yes)
+m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	$(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \
+	    -D=$(srcdir)/m2/gm2-libs-iso-common/SYSTEM.def \
+	    -M=$(srcdir)/m2/gm2-libs-iso-common/SYSTEM.mod \
+	    -I=$(srcdir)/m2/gm2-libs \
+            -I=$(srcdir)/m2/gm2-libs-iso-common \
+	    -C=$(GM2_FOR_TARGET_ESC) -o $@
+else
+m2/gm2-libs-iso/SYSTEM.def: $(GM2_PROG_DEP)
 	-test -d $(@D) || $(mkinstalldirs) $(@D)
-	$(SHELL) $(srcdir)/m2/tools-src/makeSystem -fiso \
-             $(srcdir)/m2/gm2-libs-iso/SYSTEM.def \
-             $(srcdir)/m2/gm2-libs-iso/SYSTEM.mod \
-             -I$(srcdir)/m2/gm2-libs-iso -I$(srcdir)/m2/gm2-libs \
+	$(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \
+             $(srcdir)/m2/gm2-libs-iso-common/SYSTEM.def \
+             $(srcdir)/m2/gm2-libs-iso-common/SYSTEM.mod \
+             -I$(srcdir)/m2/gm2-libs \
+             -I$(srcdir)/m2/gm2-libs-iso-common \
              "$(GM2_FOR_TARGET)" $@
+endif
 
-$(objdir)/m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP)
+ifeq ($(HAVE_PYTHON),yes)
+m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP)
+	-test -d $(@D) || $(mkinstalldirs) $(@D)
+	$(PYTHON) $(srcdir)/m2/tools-src/mktargetsrc.py --fpim \
+	    -D=$(srcdir)/m2/gm2-libs-cor-common/SYSTEM.def \
+	    -M=$(srcdir)/m2/gm2-libs-cor-common/SYSTEM.mod \
+	    -I=$(srcdir)/m2/gm2-libs \
+	    -I=$(srcdir)/m2/gm2-libs-cor-common \
+	    -I=$(srcdir)/m2/gm2-libs-iso \
+	    -C=$(GM2_FOR_TARGET_ESC) -o $@
+else
+m2/gm2-libs-coroutines/SYSTEM.def: $(GM2_PROG_DEP)
 	-test -d $(@D) || $(mkinstalldirs) $(@D)
 	$(SHELL) $(srcdir)/m2/tools-src/makeSystem -fpim \
-             $(srcdir)/m2/gm2-libs-coroutines/SYSTEM.def \
-             $(srcdir)/m2/gm2-libs-coroutines/SYSTEM.mod \
-             -I$(srcdir)/m2/gm2-libs-coroutines -I$(srcdir)/m2/gm2-libs-iso -I$(srcdir)/m2/gm2-libs \
+             $(srcdir)/m2/gm2-libs-cor-common/SYSTEM.def \
+             $(srcdir)/m2/gm2-libs-cor-common/SYSTEM.mod \
+             -I$(srcdir)/m2/gm2-libs \
+             -I$(srcdir)/m2/gm2-libs-cor-common \
+	     -I$(srcdir)/m2/gm2-libs-iso \
              "$(GM2_FOR_TARGET)" $@
+endif
 
 build-compiler: $(GM2-COMP-MODS:%.mod=m2/gm2-compiler/%.o) \
                 $(GM2-AUTO-MODS:%.mod=m2/gm2-compiler/%.o) \
@@ -1819,7 +1830,8 @@ m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H)
 
 m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.c m2/gm2-libs/gm2-libs-host.h
 	-test -d $(@D)/$(DEPDIR) || $(mkinstalldirs) $(@D)/$(DEPDIR)
-	$(CXX) $(CM2DEP) -DBUILD_GM2_LIBS -c $(CFLAGS) $(GM2_PICFLAGS) -Im2/gm2-libs -I$(srcdir)/m2 -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
+	$(CXX) $(CM2DEP) -DBUILD_GM2_LIBS -c $(CFLAGS) $(GM2_PICFLAGS) \
+          -Im2/gm2-libs -I$(srcdir)/m2 -Im2/gm2-libs-boot $(INCLUDES) $< -o $@
 	$(POSTCOMPILE)
 
 m2/gm2-libs/%.o: $(srcdir)/m2/gm2-libs-ch/%.cc m2/gm2-libs/gm2-libs-host.h
diff --git a/gcc/m2/gm2-compiler/M2Options.def b/gcc/m2/gm2-compiler/M2Options.def
index c603b52ec3f..64eb9529e0d 100644
--- a/gcc/m2/gm2-compiler/M2Options.def
+++ b/gcc/m2/gm2-compiler/M2Options.def
@@ -708,6 +708,20 @@ PROCEDURE SetSources (value: BOOLEAN) ;
 PROCEDURE SetDumpSystemExports (value: BOOLEAN) ;
 
 
+(*
+   SetDumpBuiltins - set by -fdump_builtins.
+*)
+
+PROCEDURE SetDumpBuiltins (value: BOOLEAN) ;
+
+
+(*
+   GetDumpBuiltins - return the value of -fdump_builtins.
+*)
+
+PROCEDURE GetDumpBuiltins () : BOOLEAN ;
+
+
 (*
    SetSwig -
 *)
diff --git a/gcc/m2/gm2-compiler/M2Options.mod b/gcc/m2/gm2-compiler/M2Options.mod
index 4842d7a960c..5c05d53af3c 100644
--- a/gcc/m2/gm2-compiler/M2Options.mod
+++ b/gcc/m2/gm2-compiler/M2Options.mod
@@ -78,6 +78,7 @@ VAR
    UselistFilename,
    RuntimeModuleOverride,
    CppArgs              : String ;
+   DumpBuiltinsFlag,
    EnableForward,
    DebugFunctionLineNumbers,
    DebugTraceQuad,   (* -fm2-debug-trace=quad.  *)
@@ -1270,6 +1271,26 @@ BEGIN
 END SetDumpSystemExports ;
 
 
+(*
+   SetDumpBuiltins - set the value of -fdump-builtins.
+*)
+
+PROCEDURE SetDumpBuiltins (value: BOOLEAN) ;
+BEGIN
+   DumpBuiltinsFlag := value
+END SetDumpBuiltins ;
+
+
+(*
+   GetDumpBuiltins - return the value of -fdump-builtins.
+*)
+
+PROCEDURE GetDumpBuiltins () : BOOLEAN ;
+BEGIN
+   RETURN DumpBuiltinsFlag
+END GetDumpBuiltins ;
+
+
 (*
    SetSearchPath -
 *)
@@ -2219,4 +2240,5 @@ BEGIN
    EnableForward                     := TRUE ;
    OffTBits                          := 0 ;  (* Default to CSSIZE_T.  *)
    WidesetFlag                       := TRUE ;
+   DumpBuiltinsFlag                  := FALSE ;
 END M2Options.
diff --git a/gcc/m2/gm2-compiler/M2Quads.mod b/gcc/m2/gm2-compiler/M2Quads.mod
index 14e0f4b3e19..dd8eb95ffe7 100644
--- a/gcc/m2/gm2-compiler/M2Quads.mod
+++ b/gcc/m2/gm2-compiler/M2Quads.mod
@@ -12807,8 +12807,7 @@ PROCEDURE BuildComponentValue ;
 VAR
    e1tok,
    e2tok,
-   consttok,
-   virtpos  : CARDINAL ;
+   consttok : CARDINAL ;
    const,
    e1, e2   : CARDINAL ;
    nuldotdot,
diff --git a/gcc/m2/gm2-gcc/m2builtins.cc b/gcc/m2/gm2-gcc/m2builtins.cc
index a494ff7b107..01d429abc91 100644
--- a/gcc/m2/gm2-gcc/m2builtins.cc
+++ b/gcc/m2/gm2-gcc/m2builtins.cc
@@ -30,26 +30,27 @@ along with GNU Modula-2; see the file COPYING3.  If not see
 #include "m2treelib.h"
 #include "m2type.h"
 #include "m2configure.h"
+#include "m2options.h"
 
 #undef DEBUGGING
 
 #define GM2
-#define GM2_BUG_REPORT                                                        \
-  "Please report this crash to the GNU Modula-2 mailing list "                \
+#define GM2_BUG_REPORT \
+  "Please report this crash to the GNU Modula-2 mailing list " \
   "<[email protected]>\n"
 
-#define ASSERT(X, Y)                                                          \
-  {                                                                           \
-    if (!(X))                                                                 \
-      {                                                                       \
-        debug_tree (Y);                                                       \
-        internal_error ("%s:%d:assertion of condition %qs failed", __FILE__, __LINE__,  \
-                        #X);                                                  \
-      }                                                                       \
+#define ASSERT(X, Y) \
+  { \
+    if (!(X)) \
+      { \
+        debug_tree (Y); \
+        internal_error ("%s:%d:assertion of condition %qs failed", \
+			__FILE__, __LINE__, #X); \
+      } \
   }
-#define ERROR(X)                                                              \
-  {                                                                           \
-    internal_error ("%s:%d:%s", __FILE__, __LINE__, X);                     \
+#define ERROR(X) \
+  { \
+    internal_error ("%s:%d:%s", __FILE__, __LINE__, X); \
   }
 
 typedef enum {
@@ -1447,6 +1448,15 @@ set_decl_function_code (tree decl, built_in_function f)
   fndecl.function_code = f;
 }
 
+/* dump_available issue a printf containing builtin procedure name.  */
+
+static
+void
+dump_available (const char *name)
+{
+  printf ("builtin procedure function: %s\n", name);
+}
+
 /* Define a single builtin.  */
 
 static void
@@ -1471,6 +1481,8 @@ define_builtin (enum built_in_function val, const char *name, tree prototype,
   bmd.function_node = decl;
   bmd.return_node = TREE_TYPE (prototype);
   vec_safe_push (builtin_macros, bmd);
+  if (M2Options_GetDumpBuiltins ())
+    dump_available (libname);
 }
 
 /* Define a math type variant of the builtin function.  */
@@ -1526,6 +1538,19 @@ define_builtin_gcc (void)
 		  "__builtin_ctzll", ECF_CONST | ECF_NOTHROW | ECF_LEAF);
 }
 
+/* dump_builtin check the availability of name and dump
+   a message to stdout if -fdump-builtins was set.  */
+
+static
+void
+dump_builtin (struct builtin_function_entry *fe)
+{
+  if (M2Options_GetDumpBuiltins () && do_target_support_exists (fe))
+    dump_available (fe->name);
+}
+
+/* m2builtins_init declare function prototypes matching the available GCC builtins.  */
+
 void
 m2builtins_init (location_t location)
 {
@@ -1572,7 +1597,10 @@ m2builtins_init (location_t location)
       integer_type_node, tree_cons (NULL_TREE, long_long_unsigned_type_node, endlink));
 
   for (i = 0; list_of_builtins[i].name != NULL; i++)
-    create_function_prototype (location, &list_of_builtins[i]);
+    {
+      create_function_prototype (location, &list_of_builtins[i]);
+      dump_builtin (&list_of_builtins[i]);
+    }
 
   define_builtin (BUILT_IN_TRAP, "__builtin_trap",
                   build_function_type_list (void_type_node, NULL_TREE),
@@ -1601,7 +1629,7 @@ m2builtins_init (location_t location)
   gm2_alloca_node = find_builtin_tree ("__builtin_alloca");
   gm2_memcpy_node = find_builtin_tree ("__builtin_memcpy");
   gm2_memset_node = find_builtin_tree ("__builtin_memset");
-  gm2_strncpy_node = find_builtin_tree ("__builtin_strncpy");  
+  gm2_strncpy_node = find_builtin_tree ("__builtin_strncpy");
   gm2_huge_valf_node = find_builtin_tree ("__builtin_huge_valf");
   gm2_huge_val_node = find_builtin_tree ("__builtin_huge_val");
   gm2_huge_vall_node = find_builtin_tree ("__builtin_huge_vall");
diff --git a/gcc/m2/gm2-gcc/m2options.h b/gcc/m2/gm2-gcc/m2options.h
index 893fa41fcfd..fcec4a9105e 100644
--- a/gcc/m2/gm2-gcc/m2options.h
+++ b/gcc/m2/gm2-gcc/m2options.h
@@ -91,6 +91,8 @@ EXTERN bool M2Options_GetDebugFunctionLineNumbers (void);
 EXTERN void M2Options_SetSources (bool value);
 EXTERN bool M2Options_SetUnboundedByReference (bool value);
 EXTERN void M2Options_SetDumpSystemExports (bool value);
+EXTERN void M2Options_SetDumpBuiltins (bool value);
+EXTERN bool M2Options_GetDumpBuiltins (void);
 EXTERN void M2Options_SetOptimizing (unsigned int value);
 EXTERN bool M2Options_SetQuiet (bool value);
 EXTERN void M2Options_SetCC1Quiet (bool value);
diff --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc
index c34e8c1da19..6ebaaa77751 100644
--- a/gcc/m2/gm2-lang.cc
+++ b/gcc/m2/gm2-lang.cc
@@ -864,6 +864,9 @@ gm2_langhook_handle_option (
     case OPT_fmod_:
       M2Options_setmodextension (arg);
       return 1;
+    case OPT_fdump_builtins:
+      M2Options_SetDumpBuiltins (value);
+      return 1;
     case OPT_fdump_system_exports:
       M2Options_SetDumpSystemExports (value);
       return 1;
diff --git a/gcc/m2/gm2-libs-coroutines/SYSTEM.def b/gcc/m2/gm2-libs-coroutines/SYSTEM.def
deleted file mode 100644
index c5e23235d02..00000000000
--- a/gcc/m2/gm2-libs-coroutines/SYSTEM.def
+++ /dev/null
@@ -1,192 +0,0 @@
-(* SYSTEM.def provides access to COROUTINE primitives and underlying system.
-
-Copyright (C) 2002-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-DEFINITION MODULE SYSTEM ;
-
-(* This module is designed to be used on a native operating system
-   rather than an embedded system as it implements the coroutine
-   primitives TRANSFER, IOTRANSFER and
-   NEWPROCESS through the GNU Pthread library.  *)
-
-FROM COROUTINES IMPORT PROTECTION ;
-
-EXPORT QUALIFIED (* the following are built into the compiler: *)
-                 ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@ *)
-                 ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE,
-                 (* SIZE is exported depending upon -fpim2 and
-                    -fpedantic.  *)
-                 (* The rest are implemented in SYSTEM.mod.  *)
-                 PROCESS, TRANSFER, NEWPROCESS, IOTRANSFER,
-                 LISTEN,
-                 ListenLoop, TurnInterrupts ;
-
-
-TYPE
-   PROCESS  = RECORD
-                 context: INTEGER ;
-              END ;
-
-(* Note that the full list of system and sized datatypes include:
-   LOC, WORD, BYTE, ADDRESS,
-
-   (and the non language standard target types)
-
-   INTEGER8, INTEGER16, INTEGER32, INTEGER64,
-   CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64,
-   WORD16, WORD32, WORD64, BITSET8, BITSET16,
-   BITSET32, REAL32, REAL64, REAL128, COMPLEX32,
-   COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T.
-
-   Also note that the non-standard data types will
-   move into another module in the future.  *)
-
-(* The following types are supported on this target:
-   @SYSTEM_TYPES@
-*)
-
-
-(*
-   TRANSFER - save the current volatile environment into, p1.
-              Restore the volatile environment from, p2.
-*)
-
-PROCEDURE TRANSFER (VAR p1: PROCESS; p2: PROCESS) ;
-
-
-(*
-   NEWPROCESS - p is a parameterless procedure, a, is the origin of
-                the workspace used for the process stack and containing
-                the volatile environment of the process.  StackSize, is
-                the maximum size of the stack in bytes which can be used
-                by this process.  new, is the new process.
-*)
-
-PROCEDURE NEWPROCESS (p: PROC; a: ADDRESS; StackSize: CARDINAL; VAR new: PROCESS) ;
-
-
-(*
-   IOTRANSFER - saves the current volatile environment into, First,
-                and restores volatile environment, Second.
-                When an interrupt, InterruptNo, is encountered then
-                the reverse takes place.  (The then current volatile
-                environment is shelved onto Second and First is resumed).
-
-                NOTE: that upon interrupt the Second might not be the
-                      same process as that before the original call to
-                      IOTRANSFER.
-*)
-
-PROCEDURE IOTRANSFER (VAR First, Second: PROCESS; InterruptNo: CARDINAL) ;
-
-
-(*
-   LISTEN - briefly listen for any interrupts.
-*)
-
-PROCEDURE LISTEN ;
-
-
-(*
-   ListenLoop - should be called instead of users writing:
-
-                LOOP
-                   LISTEN
-                END
-
-                It performs the same function but yields
-                control back to the underlying operating system
-                via a call to pth_select.
-                It also checks for deadlock.
-                This function returns when an interrupt occurs ie
-                a file descriptor becomes ready or a time event
-                expires.  See the module RTint.
-*)
-
-PROCEDURE ListenLoop ;
-
-
-(*
-   TurnInterrupts - switches processor interrupts to the protection
-                    level, to.  It returns the old value.
-*)
-
-PROCEDURE TurnInterrupts (to: PROTECTION) : PROTECTION ;
-
-
-(*
-   all the functions below are declared internally to gm2
-   ====================================================
-
-PROCEDURE ADR (VAR v: <anytype>): ADDRESS;
-  (* Returns the address of variable v. *)
-
-PROCEDURE SIZE (v: <type>) : ZType;
-  (* Returns the number of BYTES used to store a v of
-     any specified <type>.  Only available if -fpim2 is used.
-  *)
-
-PROCEDURE TSIZE (<type>) : CARDINAL;
-  (* Returns the number of BYTES used to store a value of the
-     specified <type>.
-  *)
-
-PROCEDURE ROTATE (val: <a set type>;
-                  num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by rotating up or down
-     (left or right) by the absolute value of num.  The direction is
-     down if the sign of num is negative, otherwise the direction is up.
-  *)
-
-PROCEDURE SHIFT (val: <a set type>;
-                 num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by shifting up or down
-     (left or right) by the absolute value of num, introducing
-     zeros as necessary.  The direction is down if the sign of
-     num is negative, otherwise the direction is up.
-  *)
-
-PROCEDURE THROW (i: INTEGER) <* noreturn *> ;
-  (*
-     THROW is a GNU extension and was not part of the PIM or ISO
-     standards.  It throws an exception which will be caught by the EXCEPT
-     block (assuming it exists).  This is a compiler builtin function which
-     interfaces to the GCC exception handling runtime system.
-     GCC uses the term throw, hence the naming distinction between
-     the GCC builtin and the Modula-2 runtime library procedure Raise.
-     The later library procedure Raise will call SYSTEM.THROW after
-     performing various housekeeping activities.
-  *)
-
-PROCEDURE TBITSIZE (<type>) : CARDINAL ;
-  (* Returns the minimum number of bits necessary to represent
-     <type>.  This procedure function is only useful for determining
-     the number of bits used for any type field within a packed RECORD.
-     It is not particularly useful elsewhere since <type> might be
-     optimized for speed, for example a BOOLEAN could occupy a WORD.
-  *)
-*)
-
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs-coroutines/SYSTEM.mod b/gcc/m2/gm2-libs-coroutines/SYSTEM.mod
deleted file mode 100644
index a3285c9de8d..00000000000
--- a/gcc/m2/gm2-libs-coroutines/SYSTEM.mod
+++ /dev/null
@@ -1,251 +0,0 @@
-(* SYSTEM.mod provides access to COROUTINE primitives and underlying system.
-
-Copyright (C) 2002-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE SYSTEM ;
-
-FROM RTco IMPORT init, initThread, transfer, currentThread, turnInterrupts ;
-FROM RTint IMPORT Listen, AttachVector, IncludeVector, ExcludeVector ;
-
-IMPORT RTint ;
-
-FROM Storage IMPORT ALLOCATE ;
-FROM M2RTS IMPORT Halt ;
-FROM libc IMPORT printf, memcpy, memset ;
-
-
-CONST
-   BitsPerBitset = MAX (BITSET) +1 ;
-
-TYPE
-   PtrToIOTransferState = POINTER TO IOTransferState ;
-   IOTransferState      = RECORD
-                             ptrToFirst,
-                             ptrToSecond: POINTER TO PROCESS ;
-                             next       : PtrToIOTransferState ;
-                          END ;
-
-VAR
-   initMain,
-   initGTh : BOOLEAN ;
-
-
-(*
-   TRANSFER - save the current volatile environment into, p1.
-              Restore the volatile environment from, p2.
-*)
-
-PROCEDURE TRANSFER (VAR p1: PROCESS; p2: PROCESS) ;
-BEGIN
-   localMain (p1) ;
-   IF p1.context=p2.context
-   THEN
-      Halt('error when attempting to context switch to the same process',
-           __FILE__, __FUNCTION__, __LINE__)
-   END ;
-   transfer (p1.context, p2.context)
-END TRANSFER ;
-
-
-(*
-   NEWPROCESS - p is a parameterless procedure, a, is the origin of
-                the workspace used for the process stack and containing
-                the volatile environment of the process.  StackSize, is
-                the maximum size of the stack in bytes which can be used
-                by this process.  new, is the new process.
-*)
-
-PROCEDURE NEWPROCESS (p: PROC; a: ADDRESS; StackSize: CARDINAL; VAR new: PROCESS) ;
-BEGIN
-   localInit ;
-   WITH new DO
-      context := initThread (p, StackSize, MAX(PROTECTION))
-   END
-END NEWPROCESS ;
-
-
-(*
-   IOTRANSFER - saves the current volatile environment into, First,
-                and restores volatile environment, Second.
-                When an interrupt, InterruptNo, is encountered then
-                the reverse takes place. (The then current volatile
-                environment is shelved onto Second and First is resumed).
-
-                NOTE: that upon interrupt the Second might not be the
-                      same process as that before the original call to
-                      IOTRANSFER.
-*)
-
-PROCEDURE IOTRANSFER (VAR First, Second: PROCESS; InterruptNo: CARDINAL) ;
-VAR
-   iots: IOTransferState ;
-BEGIN
-   localMain (First) ;
-   WITH iots DO
-      ptrToFirst  := ADR (First) ;
-      ptrToSecond := ADR (Second) ;
-      next        := AttachVector (InterruptNo, ADR (iots))
-   END ;
-   IncludeVector (InterruptNo) ;
-   TRANSFER (First, Second)
-END IOTRANSFER ;
-
-
-(*
-   IOTransferHandler - handles interrupts related to a pending IOTRANSFER.
-*)
-
-PROCEDURE IOTransferHandler (InterruptNo: CARDINAL;
-                             Priority: CARDINAL ;
-                             piots: PtrToIOTransferState) ;
-VAR
-   old: PtrToIOTransferState ;
-BEGIN
-   IF piots = NIL
-   THEN
-      Halt ('no processes attached to this interrupt vector which is associated with IOTRANSFER',
-            __FILE__, __FUNCTION__, __LINE__)
-   ELSE
-      WITH piots^ DO
-         old := AttachVector (InterruptNo, next) ;
-         IF old # piots
-         THEN
-            Halt ('inconsistancy of return result',
-                  __FILE__, __FUNCTION__, __LINE__)
-         END ;
-         IF next=NIL
-         THEN
-            ExcludeVector (InterruptNo)
-         ELSE
-            printf ('odd vector has been chained\n')
-         END ;
-         TRANSFER (ptrToSecond^, ptrToFirst^)
-      END
-   END
-END IOTransferHandler ;
-
-
-(*
-   LISTEN - briefly listen for any interrupts.
-*)
-
-PROCEDURE LISTEN ;
-BEGIN
-   localInit ;
-   Listen (FALSE, IOTransferHandler, MIN (PROTECTION))
-END LISTEN ;
-
-
-(*
-   ListenLoop - should be called instead of users writing:
-
-                LOOP
-                   LISTEN
-                END
-
-                It performs the same function but yields
-                control back to the underlying operating system.
-                It also checks for deadlock.
-                This function returns when an interrupt occurs.
-                (File descriptor becomes ready or time event expires).
-*)
-
-PROCEDURE ListenLoop ;
-BEGIN
-   localInit ;
-   LOOP
-      Listen (TRUE, IOTransferHandler, MIN (PROTECTION))
-   END
-END ListenLoop ;
-
-
-(*
-   TurnInterrupts - switches processor interrupts to the
-                    protection level, to.  It returns the old value.
-*)
-
-PROCEDURE TurnInterrupts (to: PROTECTION) : PROTECTION ;
-VAR
-   old: PROTECTION ;
-BEGIN
-   localInit ;
-   old := VAL (PROTECTION, turnInterrupts (VAL (CARDINAL, to))) ;
-   Listen (FALSE, IOTransferHandler, to) ;
-   (* printf ("interrupt level is %d\n", currentIntValue); *)
-   RETURN old
-END TurnInterrupts ;
-
-
-(*
-   Finished - generates an error message. Modula-2 processes should never
-              terminate.
-*)
-
-PROCEDURE Finished (p: ADDRESS) ;
-BEGIN
-   Halt ('process terminated illegally',
-         __FILE__, __FUNCTION__, __LINE__)
-END Finished ;
-
-
-(*
-   localInit - checks to see whether we need to initialize pthread
-*)
-
-PROCEDURE localInit ;
-BEGIN
-   IF NOT initGTh
-   THEN
-      initGTh := TRUE ;
-      IF init () # 0
-      THEN
-         Halt ("gthr did not initialize",
-               __FILE__, __FUNCTION__, __LINE__)
-      END ;
-      RTint.Init
-   END
-END localInit ;
-
-
-(*
-   localMain - creates the holder for the main process.
-*)
-
-PROCEDURE localMain (VAR mainProcess: PROCESS) ;
-BEGIN
-   IF NOT initMain
-   THEN
-      initMain := TRUE ;
-      WITH mainProcess DO
-         context := currentThread ()
-      END
-   END
-END localMain ;
-
-
-BEGIN
-   initGTh := FALSE ;
-   initMain := FALSE
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.def b/gcc/m2/gm2-libs-iso/ComplexMath.def
deleted file mode 100644
index bc3d32e151b..00000000000
--- a/gcc/m2/gm2-libs-iso/ComplexMath.def
+++ /dev/null
@@ -1,73 +0,0 @@
-(* Library module defined by the International Standard
-   Information technology - programming languages
-   BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language.
-
-   Copyright ISO/IEC (International Organization for Standardization
-   and International Electrotechnical Commission) 1996-2021.
-
-   It may be freely copied for the purpose of implementation (see page
-   707 of the Information technology - Programming languages Part 1:
-   Modula-2, Base Language.  BS ISO/IEC 10514-1:1996).  *)
-
-DEFINITION MODULE ComplexMath;
-
-  (* Mathematical functions for the type COMPLEX *)
-
-CONST
-  i =    CMPLX (0.0, 1.0);
-  one =  CMPLX (1.0, 0.0);
-  zero = CMPLX (0.0, 0.0);
-
-PROCEDURE __BUILTIN__ abs (z: COMPLEX): REAL;
-  (* Returns the length of z *)
-
-PROCEDURE __BUILTIN__ arg (z: COMPLEX): REAL;
-  (* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE __BUILTIN__ conj (z: COMPLEX): COMPLEX;
-  (* Returns the complex conjugate of z *)
-
-PROCEDURE __BUILTIN__ power (base: COMPLEX; exponent: REAL): COMPLEX;
-  (* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE __BUILTIN__ sqrt (z: COMPLEX): COMPLEX;
-  (* Returns the principal square root of z *)
-
-PROCEDURE __BUILTIN__ exp (z: COMPLEX): COMPLEX;
-  (* Returns the complex exponential of z *)
-
-PROCEDURE __BUILTIN__ ln (z: COMPLEX): COMPLEX;
-  (* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE __BUILTIN__ sin (z: COMPLEX): COMPLEX;
-  (* Returns the sine of z *)
-
-PROCEDURE __BUILTIN__ cos (z: COMPLEX): COMPLEX;
-  (* Returns the cosine of z *)
-
-PROCEDURE __BUILTIN__ tan (z: COMPLEX): COMPLEX;
-  (* Returns the tangent of z *)
-
-PROCEDURE __BUILTIN__ arcsin (z: COMPLEX): COMPLEX;
-  (* Returns the arcsine of z *)
-
-PROCEDURE __BUILTIN__ arccos (z: COMPLEX): COMPLEX;
-  (* Returns the arccosine of z *)
-
-PROCEDURE __BUILTIN__ arctan (z: COMPLEX): COMPLEX;
-  (* Returns the arctangent of z *)
-
-PROCEDURE polarToComplex (abs, arg: REAL): COMPLEX;
-  (* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE scalarMult (scalar: REAL; z: COMPLEX): COMPLEX;
-  (* Returns the scalar product of scalar with z *)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-  (* Returns TRUE if the current coroutine is in the exceptional
-     execution state because of the raising of an exception in a
-     routine from this module; otherwise returns FALSE.
-  *)
-
-END ComplexMath.
-
diff --git a/gcc/m2/gm2-libs-iso/ComplexMath.mod b/gcc/m2/gm2-libs-iso/ComplexMath.mod
deleted file mode 100644
index d0a618c6dd0..00000000000
--- a/gcc/m2/gm2-libs-iso/ComplexMath.mod
+++ /dev/null
@@ -1,164 +0,0 @@
-(* ComplexMath.mod implement the ISO ComplexMath specification.
-
-Copyright (C) 2009-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE ComplexMath ;
-
-IMPORT cbuiltin ;
-
-
-(* Returns the length of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabs)) abs (z: COMPLEX): REAL;
-BEGIN
-   RETURN cbuiltin.cabs (z)
-END abs ;
-
-
-(* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carg)) arg (z: COMPLEX): REAL;
-BEGIN
-   RETURN cbuiltin.carg (z)
-END arg ;
-
-
-(* Returns the complex conjugate of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conj)) conj (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.conj (z)
-END conj ;
-
-
-(* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpower)) power (base: COMPLEX; exponent: REAL): COMPLEX;
-BEGIN
-   RETURN cbuiltin.cpow (base, exponent)
-END power ;
-
-
-(* Returns the principal square root of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrt)) sqrt (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.csqrt (z)
-END sqrt ;
-
-
-(* Returns the complex exponential of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexp)) exp (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.cexp (z)
-END exp ;
-
-
-(* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cln)) ln (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.clog (z)
-END ln ;
-
-
-(* Returns the sine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csin)) sin (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.csin (z)
-END sin ;
-
-
-(* Returns the cosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) cos (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.ccos (z)
-END cos ;
-
-
-(* Returns the tangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctan)) tan (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.ctan (z)
-END tan ;
-
-
-(* Returns the arcsine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsin)) arcsin (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.casin (z)
-END arcsin ;
-
-
-(* Returns the arccosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccos)) arccos (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.cacos (z)
-END arccos ;
-
-
-(* Returns the arctangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctan)) arctan (z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN cbuiltin.catan (z)
-END arctan ;
-
-
-(* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE polarToComplex (abs, arg: REAL): COMPLEX;
-BEGIN
-   RETURN CMPLX (abs*cbuiltin.cos(arg), abs*cbuiltin.sin(arg))
-END polarToComplex ;
-
-
-(* Returns the scalar product of scalar with z *)
-
-PROCEDURE scalarMult (scalar: REAL; z: COMPLEX): COMPLEX;
-BEGIN
-   RETURN CMPLX (RE(z)*scalar, IM(z)*scalar)
-END scalarMult ;
-
-
-(* Returns TRUE if the current coroutine is in the exceptional
-   execution state because of the raising of an exception in a
-   routine from this module; otherwise returns FALSE.
-*)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-BEGIN
-   (* --fixme-- we should really attempt to catch sigfpe in these procedures *)
-   RETURN( FALSE )
-END IsCMathException ;
-
-
-END ComplexMath.
diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.def b/gcc/m2/gm2-libs-iso/LongComplexMath.def
deleted file mode 100644
index cf092d4532a..00000000000
--- a/gcc/m2/gm2-libs-iso/LongComplexMath.def
+++ /dev/null
@@ -1,73 +0,0 @@
-(* Library module defined by the International Standard
-   Information technology - programming languages
-   BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language.
-
-   Copyright ISO/IEC (International Organization for Standardization
-   and International Electrotechnical Commission) 1996-2021.
-
-   It may be freely copied for the purpose of implementation (see page
-   707 of the Information technology - Programming languages Part 1:
-   Modula-2, Base Language.  BS ISO/IEC 10514-1:1996).  *)
-
-DEFINITION MODULE LongComplexMath;
-
-  (* Mathematical functions for the type LONGCOMPLEX *)
-
-CONST
-  i =    CMPLX (0.0, 1.0);
-  one =  CMPLX (1.0, 0.0);
-  zero = CMPLX (0.0, 0.0);
-
-PROCEDURE abs (z: LONGCOMPLEX): LONGREAL;
-  (* Returns the length of z *)
-
-PROCEDURE arg (z: LONGCOMPLEX): LONGREAL;
-  (* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE conj (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the complex conjugate of z *)
-
-PROCEDURE power (base: LONGCOMPLEX; exponent: LONGREAL): LONGCOMPLEX;
-  (* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE sqrt (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the principal square root of z *)
-
-PROCEDURE exp (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the complex exponential of z *)
-
-PROCEDURE ln (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE sin (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the sine of z *)
-
-PROCEDURE cos (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the cosine of z *)
-
-PROCEDURE tan (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the tangent of z *)
-
-PROCEDURE arcsin (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the arcsine of z *)
-
-PROCEDURE arccos (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the arccosine of z *)
-
-PROCEDURE arctan (z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the arctangent of z *)
-
-PROCEDURE polarToComplex (abs, arg: LONGREAL): LONGCOMPLEX;
-  (* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE scalarMult (scalar: LONGREAL; z: LONGCOMPLEX): LONGCOMPLEX;
-  (* Returns the scalar product of scalar with z *)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-  (* Returns TRUE if the current coroutine is in the exceptional execution state
-     because of the raising of an exception in a routine from this module; otherwise
-     returns FALSE.
-  *)
-
-END LongComplexMath.
-
diff --git a/gcc/m2/gm2-libs-iso/LongComplexMath.mod b/gcc/m2/gm2-libs-iso/LongComplexMath.mod
deleted file mode 100644
index 4bc414dd221..00000000000
--- a/gcc/m2/gm2-libs-iso/LongComplexMath.mod
+++ /dev/null
@@ -1,164 +0,0 @@
-(* LongComplexMath.mod implement the ISO LongComplexMath specification.
-
-Copyright (C) 2009-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE LongComplexMath ;
-
-IMPORT cbuiltin ;
-
-
-(* Returns the length of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsl)) abs (z: LONGCOMPLEX): LONGREAL;
-BEGIN
-   RETURN cbuiltin.cabsl (z)
-END abs ;
-
-
-(* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargl)) arg (z: LONGCOMPLEX): LONGREAL;
-BEGIN
-   RETURN cbuiltin.cargl (z)
-END arg ;
-
-
-(* Returns the complex conjugate of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjl)) conj (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.conjl (z)
-END conj ;
-
-
-(* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowerl)) power (base: LONGCOMPLEX; exponent: LONGREAL): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cpowl (base, exponent)
-END power ;
-
-
-(* Returns the principal square root of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtl)) sqrt (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.csqrtl (z)
-END sqrt ;
-
-
-(* Returns the complex exponential of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpl)) exp (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cexpl (z)
-END exp ;
-
-
-(* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clnl)) ln (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.clogl (z)
-END ln ;
-
-
-(* Returns the sine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinl)) sin (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.csinl (z)
-END sin ;
-
-
-(* Returns the cosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosl)) cos (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.ccosl (z)
-END cos ;
-
-
-(* Returns the tangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanl)) tan (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.ctanl (z)
-END tan ;
-
-
-(* Returns the arcsine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsinl)) arcsin (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.casinl (z)
-END arcsin ;
-
-
-(* Returns the arccosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccosl)) arccos (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cacosl (z)
-END arccos ;
-
-
-(* Returns the arctangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctanl)) arctan (z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN cbuiltin.catanl (z)
-END arctan ;
-
-
-(* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE polarToComplex (abs, arg: LONGREAL): LONGCOMPLEX;
-BEGIN
-   RETURN CMPLX (abs*cbuiltin.cosl(arg), abs*cbuiltin.sinl(arg))
-END polarToComplex ;
-
-
-(* Returns the scalar product of scalar with z *)
-
-PROCEDURE scalarMult (scalar: LONGREAL; z: LONGCOMPLEX): LONGCOMPLEX;
-BEGIN
-   RETURN CMPLX (RE(z)*scalar, IM(z)*scalar)
-END scalarMult ;
-
-
-(* Returns TRUE if the current coroutine is in the exceptional
-   execution state because of the raising of an exception in a
-   routine from this module; otherwise returns FALSE.
-*)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-BEGIN
-   (* --fixme-- we should really attempt to catch sigfpe in these procedures *)
-   RETURN( FALSE )
-END IsCMathException ;
-
-
-END LongComplexMath.
diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.def b/gcc/m2/gm2-libs-iso/SYSTEM.def
deleted file mode 100644
index 75d19ea2e62..00000000000
--- a/gcc/m2/gm2-libs-iso/SYSTEM.def
+++ /dev/null
@@ -1,155 +0,0 @@
-(* Library module defined by the International Standard
-   Information technology - programming languages
-   BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language.
-
-   Copyright ISO/IEC (International Organization for Standardization
-   and International Electrotechnical Commission) 1996-2021.
-
-   It may be freely copied for the purpose of implementation (see page
-   707 of the Information technology - Programming languages Part 1:
-   Modula-2, Base Language.  BS ISO/IEC 10514-1:1996).  *)
-
-DEFINITION MODULE SYSTEM;
-
-  (* Gives access to system programming facilities that are probably
-     non portable. *)
-
-  (* The constants and types define underlying properties of storage *)
-
-EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD,
-                 LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@  *)
-                 ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE,
-                 SHIFT, CAST, TSIZE,
-                 (* Internal GM2 compiler functions *)
-                 THROW, TBITSIZE ;
-
-CONST
-                  (* <implementation-defined constant> ; *)
-  BITSPERLOC    = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ;
-                  (* <implementation-defined constant> ; *)
-  LOCSPERWORD   = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ;
-                  (* <implementation-defined constant> ; *)
-  LOCSPERBYTE = 8 DIV BITSPERLOC ;
-
-(* Note that the full list of system and sized datatypes include:
-   LOC, WORD, BYTE, ADDRESS,
-
-   (and the non language standard target types)
-
-   INTEGER8, INTEGER16, INTEGER32, INTEGER64,
-   CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64,
-   WORD16, WORD32, WORD64, BITSET8, BITSET16,
-   BITSET32, REAL32, REAL64, REAL128, COMPLEX32,
-   COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T.
-
-   Also note that the non-standard data types will
-   move into another module in the future.  *)
-
-(*
-   All the data types and procedures below are declared internally.
-   ===============================================================
-
-TYPE
-   @SYSTEM_TYPES@
-
-TYPE
-  LOC; (* A system basic type. Values are the uninterpreted
-          contents of the smallest addressable unit of storage *)
-  ADDRESS = POINTER TO LOC;
-  WORD = ARRAY [0 .. LOCSPERWORD-1] OF LOC;
-
-  (* BYTE and LOCSPERBYTE are provided if appropriate for machine *)
-
-TYPE
-  BYTE = ARRAY [0 .. LOCSPERBYTE-1] OF LOC;
-
-PROCEDURE ADDADR (addr: ADDRESS; offset: CARDINAL): ADDRESS;
-  (* Returns address given by (addr + offset), or may raise
-     an exception if this address is not valid.
-  *)
-
-PROCEDURE SUBADR (addr: ADDRESS; offset: CARDINAL): ADDRESS;
-  (* Returns address given by (addr - offset), or may raise an
-     exception if this address is not valid.
-  *)
-
-PROCEDURE DIFADR (addr1, addr2: ADDRESS): INTEGER;
-  (* Returns the difference between addresses (addr1 - addr2),
-     or may raise an exception if the arguments are invalid
-     or address space is non-contiguous.
-  *)
-
-PROCEDURE MAKEADR (high: <some type>; ...): ADDRESS;
-  (* Returns an address constructed from a list of values whose
-     types are implementation-defined, or may raise an
-     exception if this address is not valid.
-
-     In GNU Modula-2, MAKEADR can take any number of arguments
-     which are mapped onto the type ADDRESS. The first parameter
-     maps onto the high address bits and subsequent parameters map
-     onto lower address bits. For example:
-
-     a := MAKEADR(BYTE(0FEH), BYTE(0DCH), BYTE(0BAH), BYTE(098H),
-                  BYTE(076H), BYTE(054H), BYTE(032H), BYTE(010H)) ;
-
-     then the value of, a, on a 64 bit machine is: 0FEDCBA9876543210H
-
-     The parameters do not have to be the same type, but constants
-     _must_ be typed.
-  *)
-
-PROCEDURE ADR (VAR v: <anytype>): ADDRESS;
-  (* Returns the address of variable v. *)
-
-PROCEDURE ROTATE (val: <a packedset type>;
-                  num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by rotating up/right
-     or down/right by the absolute value of num.  The direction is
-     down/right if the sign of num is negative, otherwise the direction
-     is up/left.
-  *)
-
-PROCEDURE SHIFT (val: <a packedset type>;
-                 num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by shifting up/left
-     or down/right by the absolute value of num, introducing
-     zeros as necessary.  The direction is down/right if the sign of
-     num is negative, otherwise the direction is up/left.
-  *)
-
-PROCEDURE CAST (<targettype>; val: <anytype>): <targettype>;
-  (* CAST is a type transfer function.  Given the expression
-     denoted by val, it returns a value of the type <targettype>.
-     An invalid value for the target value or a
-     physical address alignment problem may raise an exception.
-  *)
-
-PROCEDURE TSIZE (<type>; ... ): CARDINAL;
-  (* Returns the number of LOCS used to store a value of the
-     specified <type>.   The extra parameters, if present,
-     are used to distinguish variants in a variant record.
-  *)
-
-PROCEDURE THROW (i: INTEGER) <* noreturn *> ;
-  (*
-     THROW is a GNU extension and was not part of the PIM or ISO
-     standards.  It throws an exception which will be caught by the
-     EXCEPT block (assuming it exists).  This is a compiler builtin
-     function which interfaces to the GCC exception handling runtime
-     system.
-     GCC uses the term throw, hence the naming distinction between
-     the GCC builtin and the Modula-2 runtime library procedure Raise.
-     The later library procedure Raise will call SYSTEM.THROW after
-     performing various housekeeping activities.
-  *)
-
-PROCEDURE TBITSIZE (<type>) : CARDINAL ;
-  (* Returns the minimum number of bits necessary to represent
-     <type>.  This procedure function is only useful for determining
-     the number of bits used for any type field within a packed RECORD.
-     It is not particularly useful elsewhere since <type> might be
-     optimized for speed, for example a BOOLEAN could occupy a WORD.
-  *)
-*)
-
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs-iso/SYSTEM.mod b/gcc/m2/gm2-libs-iso/SYSTEM.mod
deleted file mode 100644
index efd4d96c1c8..00000000000
--- a/gcc/m2/gm2-libs-iso/SYSTEM.mod
+++ /dev/null
@@ -1,29 +0,0 @@
-(* SYSTEM.mod implement the ISO SYSTEM specification.
-
-Copyright (C) 2004-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE SYSTEM ;
-
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.def b/gcc/m2/gm2-libs-iso/ShortComplexMath.def
deleted file mode 100644
index 7cdd220947d..00000000000
--- a/gcc/m2/gm2-libs-iso/ShortComplexMath.def
+++ /dev/null
@@ -1,88 +0,0 @@
-(* ShortComplexMath.def provides access to the ShortComplex intrincics.
-
-Copyright (C) 2010-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-DEFINITION MODULE ShortComplexMath;
-
-  (* Mathematical functions for the type SHORTCOMPLEX *)
-
-CONST
-  i =    CMPLX (0.0, 1.0);
-  one =  CMPLX (1.0, 0.0);
-  zero = CMPLX (0.0, 0.0);
-
-PROCEDURE abs (z: SHORTCOMPLEX): SHORTREAL;
-  (* Returns the length of z *)
-
-PROCEDURE arg (z: SHORTCOMPLEX): SHORTREAL;
-  (* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE conj (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the complex conjugate of z *)
-
-PROCEDURE power (base: SHORTCOMPLEX; exponent: SHORTREAL): SHORTCOMPLEX;
-  (* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE sqrt (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the principal square root of z *)
-
-PROCEDURE exp (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the complex exponential of z *)
-
-PROCEDURE ln (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE sin (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the sine of z *)
-
-PROCEDURE cos (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the cosine of z *)
-
-PROCEDURE tan (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the tangent of z *)
-
-PROCEDURE arcsin (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the arcsine of z *)
-
-PROCEDURE arccos (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the arccosine of z *)
-
-PROCEDURE arctan (z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the arctangent of z *)
-
-PROCEDURE polarToComplex (abs, arg: SHORTREAL): SHORTCOMPLEX;
-  (* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE scalarMult (scalar: SHORTREAL; z: SHORTCOMPLEX): SHORTCOMPLEX;
-  (* Returns the scalar product of scalar with z *)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-  (* Returns TRUE if the current coroutine is in the exceptional execution state
-     because of the raising of an exception in a routine from this module; otherwise
-     returns FALSE.
-  *)
-
-END ShortComplexMath.
-
diff --git a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod b/gcc/m2/gm2-libs-iso/ShortComplexMath.mod
deleted file mode 100644
index e7236a92bdd..00000000000
--- a/gcc/m2/gm2-libs-iso/ShortComplexMath.mod
+++ /dev/null
@@ -1,164 +0,0 @@
-(* ShortComplexMath.mod implements access to the ShortComplex intrincics.
-
-Copyright (C) 2009-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE ShortComplexMath ;
-
-IMPORT cbuiltin ;
-
-
-(* Returns the length of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cabsf)) abs (z: SHORTCOMPLEX): SHORTREAL;
-BEGIN
-   RETURN cbuiltin.cabsf (z)
-END abs ;
-
-
-(* Returns the angle that z subtends to the positive real axis *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cargf)) arg (z: SHORTCOMPLEX): SHORTREAL;
-BEGIN
-   RETURN cbuiltin.cargf (z)
-END arg ;
-
-
-(* Returns the complex conjugate of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_conjf)) conj (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.conjf (z)
-END conj ;
-
-
-(* Returns the value of the number base raised to the power exponent *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowerf)) power (base: SHORTCOMPLEX; exponent: SHORTREAL): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cpowf (base, exponent)
-END power ;
-
-
-(* Returns the principal square root of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtf)) sqrt (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.csqrtf (z)
-END sqrt ;
-
-
-(* Returns the complex exponential of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpf)) exp (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cexpf (z)
-END exp ;
-
-
-(* Returns the principal value of the natural logarithm of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clnf)) ln (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.clogf (z)
-END ln ;
-
-
-(* Returns the sine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinf)) sin (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.csinf (z)
-END sin ;
-
-
-(* Returns the cosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosf)) cos (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.ccosf (z)
-END cos ;
-
-
-(* Returns the tangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanf)) tan (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.ctanf (z)
-END tan ;
-
-
-(* Returns the arcsine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carcsinf)) arcsin (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.casinf (z)
-END arcsin ;
-
-
-(* Returns the arccosine of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carccosf)) arccos (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.cacosf (z)
-END arccos ;
-
-
-(* Returns the arctangent of z *)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_carctanf)) arctan (z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN cbuiltin.catanf (z)
-END arctan ;
-
-
-(* Returns the complex number with the specified polar coordinates *)
-
-PROCEDURE polarToComplex (abs, arg: SHORTREAL): SHORTCOMPLEX;
-BEGIN
-   RETURN CMPLX (abs*cbuiltin.cosf(arg), abs*cbuiltin.sinf(arg))
-END polarToComplex ;
-
-
-(* Returns the scalar product of scalar with z *)
-
-PROCEDURE scalarMult (scalar: SHORTREAL; z: SHORTCOMPLEX): SHORTCOMPLEX;
-BEGIN
-   RETURN CMPLX (RE(z)*scalar, IM(z)*scalar)
-END scalarMult ;
-
-
-(* Returns TRUE if the current coroutine is in the exceptional
-   execution state because of the raising of an exception in a
-   routine from this module; otherwise returns FALSE.
-*)
-
-PROCEDURE IsCMathException (): BOOLEAN;
-BEGIN
-   (* --fixme-- we should really attempt to catch sigfpe in these procedures *)
-   RETURN( FALSE )
-END IsCMathException ;
-
-
-END ShortComplexMath.
diff --git a/gcc/m2/gm2-libs-min/SYSTEM.def b/gcc/m2/gm2-libs-min/SYSTEM.def
index 6fe0bde8b3b..0a1a4e79abc 100644
--- a/gcc/m2/gm2-libs-min/SYSTEM.def
+++ b/gcc/m2/gm2-libs-min/SYSTEM.def
@@ -27,7 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 DEFINITION MODULE SYSTEM ;
 
 EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
-                 ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, (* @SYSTEM_DATATYPES@ *)
+                 (* <SYSTEM_DATATYPES> *)
+                 ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T,
+                 (* </SYSTEM_DATATYPES> *)
                  ADR, TSIZE ;
                  (* SIZE is also exported if -fpim2 is used *)
 
@@ -38,7 +40,8 @@ CONST
 
 (* all the following types are declared internally to gm2
 TYPE
-   @SYSTEM_TYPES@
+   <SYSTEM_TYPES>
+   </SYSTEM_TYPES>
 *)
 
 
diff --git a/gcc/m2/gm2-libs/Builtins.def b/gcc/m2/gm2-libs/Builtins.def
deleted file mode 100644
index c0bb8425de1..00000000000
--- a/gcc/m2/gm2-libs/Builtins.def
+++ /dev/null
@@ -1,276 +0,0 @@
-(* Builtins.def provides access to all built-in functions.
-
-Copyright (C) 2001-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-DEFINITION MODULE Builtins ;
-
-FROM SYSTEM IMPORT ADDRESS ;
-
-(* Floating point intrinsic procedure functions.  *)
-
-PROCEDURE __BUILTIN__ isnanf (x: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isnan (x: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isnanl (x: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isfinitef (x: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isfinite (x: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isfinitel (x: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ sinf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ sin (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ sinl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ cosf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ cos (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ cosl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ sqrtf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ sqrt (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ sqrtl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ atan2f (x, y: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ atan2 (x, y: REAL) : REAL ;
-PROCEDURE __BUILTIN__ atan2l (x, y: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ fabsf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ fabs (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ fabsl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ logf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ log (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ logl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ expf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ exp (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ expl (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ log10f (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ log10 (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ log10l (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ exp10f (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ exp10 (x: REAL) : REAL ;
-PROCEDURE __BUILTIN__ exp10l (x: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ ilogbf (x: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ ilogb (x: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ ilogbl (x: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ huge_val () : REAL ;
-PROCEDURE __BUILTIN__ huge_valf () : SHORTREAL ;
-PROCEDURE __BUILTIN__ huge_vall () : LONGREAL ;
-
-PROCEDURE __BUILTIN__ modf (x: REAL; VAR y: REAL) : REAL ;
-PROCEDURE __BUILTIN__ modff (x: SHORTREAL;
-                             VAR y: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ signbit (r: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ signbitf (s: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ signbitl (l: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ nextafter (x, y: REAL) : REAL ;
-PROCEDURE __BUILTIN__ nextafterf (x, y: SHORTREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ nextafterl (x, y: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ nexttoward (x: REAL; y: LONGREAL) : REAL ;
-PROCEDURE __BUILTIN__ nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ;
-PROCEDURE __BUILTIN__ nexttowardl (x, y: LONGREAL) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ scalbln (x: REAL; n: LONGINT) : REAL ;
-PROCEDURE __BUILTIN__ scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
-PROCEDURE __BUILTIN__ scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ scalbn (x: REAL; n: INTEGER) : REAL ;
-PROCEDURE __BUILTIN__ scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
-PROCEDURE __BUILTIN__ scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ isgreater (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isgreaterf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isgreaterl (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isgreaterequal (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isgreaterequalf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isgreaterequall (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isless (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessl (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ islessequal (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessequalf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessequall (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ islessgreater (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessgreaterf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ islessgreaterl (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isunordered (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isunorderedf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isunorderedl (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ iseqsig (x, y: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ iseqsigf (x, y: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ iseqsigl (x, y: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isnormal (r: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isnormalf (s: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isnormall (l: LONGREAL) : INTEGER ;
-
-PROCEDURE __BUILTIN__ isinf_sign (r: REAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isinf_signf (s: SHORTREAL) : INTEGER ;
-PROCEDURE __BUILTIN__ isinf_signl (l: LONGREAL) : INTEGER ;
-
-(* Complex arithmetic intrincic procedure functions.  *)
-
-PROCEDURE __BUILTIN__ cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
-PROCEDURE __BUILTIN__ cabs (z: COMPLEX) : REAL ;
-PROCEDURE __BUILTIN__ cabsl (z: LONGCOMPLEX) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ cargf (z: SHORTCOMPLEX) : SHORTREAL ;
-PROCEDURE __BUILTIN__ carg (z: COMPLEX) : REAL ;
-PROCEDURE __BUILTIN__ cargl (z: LONGCOMPLEX) : LONGREAL ;
-
-PROCEDURE __BUILTIN__ conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ conj (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ cpowerf (base: SHORTCOMPLEX;
-                               exp: SHORTREAL) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ cpower (base: COMPLEX; exp: REAL) : COMPLEX ;
-PROCEDURE __BUILTIN__ cpowerl (base: LONGCOMPLEX;
-                               exp: LONGREAL) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ csqrt (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ cexp (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ cln (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ clnl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ csin (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ ccos (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ ctan (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ carcsin (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ carccos (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE __BUILTIN__ carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE __BUILTIN__ carctan (z: COMPLEX) : COMPLEX ;
-PROCEDURE __BUILTIN__ carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-(* memory and string intrincic procedure functions *)
-
-PROCEDURE __BUILTIN__ alloca (i: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ memcpy (dest, src: ADDRESS;
-                              nbytes: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ index (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE __BUILTIN__ rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE __BUILTIN__ memcmp (s1, s2: ADDRESS;
-                              nbytes: CARDINAL) : INTEGER ;
-PROCEDURE __BUILTIN__ memset (s: ADDRESS; c: INTEGER;
-                              nbytes: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ memmove (s1, s2: ADDRESS;
-                               nbytes: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ strcat (dest, src: ADDRESS) : ADDRESS ;
-PROCEDURE __BUILTIN__ strncat (dest, src: ADDRESS;
-                               nbytes: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ strcpy (dest, src: ADDRESS) : ADDRESS ;
-PROCEDURE __BUILTIN__ strncpy (dest, src: ADDRESS;
-                               nbytes: CARDINAL) : ADDRESS ;
-PROCEDURE __BUILTIN__ strcmp (s1, s2: ADDRESS) : INTEGER ;
-PROCEDURE __BUILTIN__ strncmp (s1, s2: ADDRESS;
-                               nbytes: CARDINAL) : INTEGER ;
-PROCEDURE __BUILTIN__ strlen (s: ADDRESS) : INTEGER ;
-PROCEDURE __BUILTIN__ strstr (haystack, needle: ADDRESS) : ADDRESS ;
-PROCEDURE __BUILTIN__ strpbrk (s, accept: ADDRESS) : ADDRESS ;
-PROCEDURE __BUILTIN__ strspn (s, accept: ADDRESS) : CARDINAL ;
-PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ;
-PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-
-PROCEDURE __BUILTIN__ clz (value: CARDINAL) : INTEGER ;
-PROCEDURE __BUILTIN__ clzll (value: LONGCARD) : INTEGER ;
-PROCEDURE __BUILTIN__ ctz (value: CARDINAL) : INTEGER ;
-PROCEDURE __BUILTIN__ ctzll (value: LONGCARD) : INTEGER ;
-
-(*
-   longjmp - this GCC builtin restricts the val to always 1.
-*)
-(* do not use these two builtins, as gcc, only really
-   anticipates that the Ada front end should use them
-   and it only uses them in its runtime exception handling.
-   We leave them here in the hope that someday they will
-   behave more like their libc counterparts.  *)
-
-PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ;
-PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ;
-
-
-(*
-   frame_address - returns the address of the frame.
-                   The current frame is obtained if level is 0,
-                   the next level up if level is 1 etc.
-*)
-
-PROCEDURE __BUILTIN__ frame_address (level: CARDINAL) : ADDRESS ;
-
-
-(*
-   return_address - returns the return address of function.
-                    The current function return address is
-                    obtained if level is 0,
-                    the next level up if level is 1 etc.
-*)
-
-PROCEDURE __BUILTIN__ return_address (level: CARDINAL) : ADDRESS ;
-
-
-(*
-   alloca_trace - this is a no-op which is used for internal debugging.
-*)
-
-PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ;
-
-
-END Builtins.
diff --git a/gcc/m2/gm2-libs/Builtins.mod b/gcc/m2/gm2-libs/Builtins.mod
deleted file mode 100644
index 65009b1561e..00000000000
--- a/gcc/m2/gm2-libs/Builtins.mod
+++ /dev/null
@@ -1,828 +0,0 @@
-(* Builtins.mod provides access to all built-in functions.
-
-Copyright (C) 2001-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE Builtins ;
-
-IMPORT cbuiltin, wrapc ;
-
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_alloca)) alloca (i: CARDINAL) : ADDRESS ;
-BEGIN
-   (* This routine will never be called as it allocates memory on
-      top of the current stack frame, which is automatically
-      deallocated upon its return.  *)
-   HALT ;
-   RETURN NIL
-END alloca ;
-
-PROCEDURE alloca_trace (returned: ADDRESS; nBytes: CARDINAL) : ADDRESS ;
-BEGIN
-   (* this routine is only called if -fdebug-builtins is supplied
-      on the command line.  The purpose of this routine is to allow
-      a developer to single step into this routine and inspect the
-      value of nBytes and returned.   *)
-   RETURN returned
-END alloca_trace ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_memcpy))
-          memcpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ;
-BEGIN
-   (* Hopefully the compiler will choose to use the __builtin_memcpy
-      function within GCC.  This call is here just in case it cannot.
-      If the user sets a procedure variable to memcpy then the
-      code below could be run instead.   *)
-   RETURN cbuiltin.memcpy (dest, src, nbytes)
-END memcpy ;
-
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnanf (x: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isnanf (x)
-END isnanf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnan (x: REAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isnan (x)
-END isnan ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnan)) isnanl (x: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isnanl (x)
-END isnanl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_isfinite)) isfinitef (x: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isfinitef (x)
-END isfinitef ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_isfinite)) isfinite (x: REAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isfinite (x)
-END isfinite ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_isfinite)) isfinitel (x: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.isfinitel (x)
-END isfinitel ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sin)) sin (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.sin (x)
-END sin ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sinf)) sinf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.sinf (x)
-END sinf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sinl)) sinl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.sinl (x)
-END sinl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cos)) cos (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.cos (x)
-END cos ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cosf)) cosf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.cosf (x)
-END cosf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cosl)) cosl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.cosl (x)
-END cosl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_atan2)) atan2 (x, y: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.atan2 (x, y)
-END atan2 ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_atan2f)) atan2f (x, y: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.atan2f (x, y)
-END atan2f ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_atan2l)) atan2l (x, y: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.atan2l (x, y)
-END atan2l ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sqrt)) sqrt (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.sqrt (x)
-END sqrt ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sqrtf)) sqrtf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.sqrtf (x)
-END sqrtf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_sqrtl)) sqrtl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.sqrtl (x)
-END sqrtl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_fabs)) fabs (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.fabs (x)
-END fabs ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_fabsf)) fabsf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.fabsf (x)
-END fabsf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_fabsl)) fabsl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.fabsl (x)
-END fabsl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_log)) log (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.log (x)
-END log ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_logf)) logf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.logf (x)
-END logf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_logl)) logl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.logl (x)
-END logl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_exp)) exp (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.exp (x)
-END exp ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_expf)) expf (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.expf (x)
-END expf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_expl)) expl (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.expl (x)
-END expl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_log10)) log10 (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.log10 (x)
-END log10 ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_log10f)) log10f (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.log10f (x)
-END log10f ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_log10l)) log10l (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.log10l (x)
-END log10l ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_exp10)) exp10 (x: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.exp10 (x)
-END exp10 ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_exp10f)) exp10f (x: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.exp10f (x)
-END exp10f ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_exp10l)) exp10l (x: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.exp10l (x)
-END exp10l ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_ilogb)) ilogb (x: REAL) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.ilogb (x)
-END ilogb ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_ilogbf)) ilogbf (x: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.ilogbf (x)
-END ilogbf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_ilogbl)) ilogbl (x: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.ilogbl (x)
-END ilogbl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_modf)) modf (x: REAL; VAR y: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.modf (x, y)
-END modf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_modff)) modff (x: SHORTREAL; VAR y: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.modff (x, y)
-END modff ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_modfl)) modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.modfl (x, y)
-END modfl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_signbit)) signbit (r: REAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.signbit (r)
-END signbit ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_signbitf)) signbitf (s: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.signbitf (s)
-END signbitf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_signbitl)) signbitl (l: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN wrapc.signbitl (l)
-END signbitl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nextafter)) nextafter (x, y: REAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.nextafter (x, y)
-END nextafter ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nextafterf)) nextafterf (x, y: SHORTREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.nextafterf (x, y)
-END nextafterf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nextafterl)) nextafterl (x, y: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.nextafterl (x, y)
-END nextafterl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nexttoward)) nexttoward (x: REAL; y: LONGREAL) : REAL ;
-BEGIN
-   RETURN cbuiltin.nexttoward (x, y)
-END nexttoward ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nexttowardf)) nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.nexttowardf (x, y)
-END nexttowardf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_nexttowardl)) nexttowardl (x, y: LONGREAL) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.nexttowardl (x, y)
-END nexttowardl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalbln)) scalbln (x: REAL; n: LONGINT) : REAL ;
-BEGIN
-   RETURN cbuiltin.scalbln (x, n)
-END scalbln ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalblnf)) scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.scalblnf (x, n)
-END scalblnf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalblnl)) scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.scalblnl (x, n)
-END scalblnl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalbn)) scalbn (x: REAL; n: INTEGER) : REAL ;
-BEGIN
-   RETURN cbuiltin.scalbn (x, n)
-END scalbn ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalbnf)) scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.scalbnf (x, n)
-END scalbnf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_scalbnl)) scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.scalbnl (x, n)
-END scalbnl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cabsf)) cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.cabsf(z)
-END cabsf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cabs)) cabs (z: COMPLEX) : REAL ;
-BEGIN
-   RETURN cbuiltin.cabs(z)
-END cabs ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cabsl)) cabsl (z: LONGCOMPLEX) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.cabsl(z)
-END cabsl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cargf)) cargf (z: SHORTCOMPLEX) : SHORTREAL ;
-BEGIN
-   RETURN cbuiltin.cargf(z)
-END cargf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_carg)) carg (z: COMPLEX) : REAL ;
-BEGIN
-   RETURN cbuiltin.carg(z)
-END carg ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_cargl)) cargl (z: LONGCOMPLEX) : LONGREAL ;
-BEGIN
-   RETURN cbuiltin.cargl(z)
-END cargl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_conjf)) conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.conjf(z)
-END conjf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_conj)) conj (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.conj(z)
-END conj ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_conjl)) conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.conjl(z)
-END conjl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowf)) cpowerf (base: SHORTCOMPLEX; exp: SHORTREAL) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cpowf(base, exp)
-END cpowerf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpow)) cpower (base: COMPLEX; exp: REAL) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.cpow(base, exp)
-END cpower ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cpowl)) cpowerl (base: LONGCOMPLEX; exp: LONGREAL) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cpowl(base, exp)
-END cpowerl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtf)) csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.csqrtf(z)
-END csqrtf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrt)) csqrt (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.csqrt(z)
-END csqrt ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csqrtl)) csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.csqrtl(z)
-END csqrtl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpf)) cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cexpf(z)
-END cexpf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexp)) cexp (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.cexp(z)
-END cexp ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cexpl)) cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cexpl(z)
-END cexpl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clogf)) clnf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.clogf(z)
-END clnf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clog)) cln (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.clog(z)
-END cln ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clogl)) clnl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.clogl(z)
-END clnl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinf)) csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.csinf(z)
-END csinf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csin)) csin (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.csin(z)
-END csin ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_csinl)) csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.csinl(z)
-END csinl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosf)) ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.ccosf(z)
-END ccosf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccos)) ccos (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.ccos(z)
-END ccos ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ccosl)) ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.ccosl(z)
-END ccosl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanf)) ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.ctanf(z)
-END ctanf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctan)) ctan (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.ctan(z)
-END ctan ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctanl)) ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.ctanl(z)
-END ctanl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casinf)) carcsinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.casinf(z)
-END carcsinf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casin)) carcsin (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.casin(z)
-END carcsin ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_casinl)) carcsinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.casinl(z)
-END carcsinl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacosf)) carccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cacosf(z)
-END carccosf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacos)) carccos (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.cacos(z)
-END carccos ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cacosl)) carccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.cacosl(z)
-END carccosl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catanf)) carctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.catanf(z)
-END carctanf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catan)) carctan (z: COMPLEX) : COMPLEX ;
-BEGIN
-   RETURN cbuiltin.catan(z)
-END carctan ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_catanl)) carctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-BEGIN
-   RETURN cbuiltin.catanl(z)
-END carctanl ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_index)) index (s: ADDRESS; c: INTEGER) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.index (s, c)
-END index ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_rindex)) rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.rindex (s, c)
-END rindex ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_memcmp)) memcmp (s1, s2: ADDRESS; nbytes: CARDINAL) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.memcmp (s1, s2, nbytes)
-END memcmp ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_memset)) memset (s: ADDRESS; c: INTEGER; nbytes: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.memset (s, c, nbytes)
-END memset ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_memmove)) memmove (s1, s2: ADDRESS; nbytes: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.memmove (s1, s2, nbytes)
-END memmove ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strcat)) strcat (dest, src: ADDRESS) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strcat (dest, src)
-END strcat ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strncat)) strncat (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strncat (dest, src, nbytes)
-END strncat ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strcpy)) strcpy (dest, src: ADDRESS) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strcpy (dest, src)
-END strcpy ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strncpy)) strncpy (dest, src: ADDRESS; nbytes: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strncpy (dest, src, nbytes)
-END strncpy ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strcmp)) strcmp (s1, s2: ADDRESS) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.strcmp (s1, s2)
-END strcmp ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strncmp)) strncmp (s1, s2: ADDRESS; nbytes: CARDINAL) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.strncmp (s1, s2, nbytes)
-END strncmp ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strlen)) strlen (s: ADDRESS) : INTEGER ;
-BEGIN
-   RETURN cbuiltin.strlen (s)
-END strlen ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strstr)) strstr (haystack, needle: ADDRESS) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strstr (haystack, needle)
-END strstr ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strpbrk)) strpbrk (s, accept: ADDRESS) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strpbrk (s, accept)
-END strpbrk ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strspn)) strspn (s, accept: ADDRESS) : CARDINAL ;
-BEGIN
-   RETURN cbuiltin.strspn (s, accept)
-END strspn ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strcspn)) strcspn (s, accept: ADDRESS) : CARDINAL ;
-BEGIN
-   RETURN cbuiltin.strcspn (s, accept)
-END strcspn ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strchr)) strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strchr (s, c)
-END strchr ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_strrchr)) strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-BEGIN
-   RETURN cbuiltin.strrchr (s, c)
-END strrchr ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_huge_val)) huge_val () : REAL ;
-BEGIN
-   RETURN -1.0
-END huge_val ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_huge_vall)) huge_vall () : LONGREAL ;
-BEGIN
-   RETURN -1.0
-END huge_vall ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_huge_valf)) huge_valf () : SHORTREAL ;
-BEGIN
-   RETURN -1.0
-END huge_valf ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_isgreater)) isgreater (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreater ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterf)) isgreaterf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreaterf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterl)) isgreaterl (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreaterl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequal)) isgreaterequal (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreaterequal ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequalf)) isgreaterequalf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreaterequalf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isgreaterequall)) isgreaterequall (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isgreaterequall ;
-
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isless)) isless (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isless ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessf)) islessf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessl)) islessl (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequal)) islessequal (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessequal ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequalf)) islessequalf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessequalf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessequall)) islessequall (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessequall ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreater)) islessgreater (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessgreater ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterf)) islessgreaterf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessgreaterf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_islessgreaterl)) islessgreaterl (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END islessgreaterl ;
-
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunordered)) isunordered (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isunordered ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedf)) isunorderedf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isunorderedf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isunorderedl)) isunorderedl (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isunorderedl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsig)) iseqsig (x, y: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END iseqsig ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigf)) iseqsigf (x, y: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END iseqsigf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_iseqsigl)) iseqsigl (x, y: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END iseqsigl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormal)) isnormal (r: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isnormal ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormalf)) isnormalf (s: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isnormalf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isnormall)) isnormall (l: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isnormall ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_sign (r: REAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isinf_sign ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf_signf)) isinf_signf (s: SHORTREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isinf_signf ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_isinf)) isinf_signl (l: LONGREAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END isinf_signl ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clz)) clz (value: CARDINAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END clz ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_clzll)) clzll (value: LONGCARD) : INTEGER ;
-BEGIN
-   RETURN 1
-END clzll ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctz)) ctz (value: CARDINAL) : INTEGER ;
-BEGIN
-   RETURN 1
-END ctz ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_ctzll)) ctzll (value: LONGCARD) : INTEGER ;
-BEGIN
-   RETURN 1
-END ctzll ;
-
-PROCEDURE __ATTRIBUTE__  __BUILTIN__ ((__builtin_longjmp)) longjmp (env: ADDRESS; val: INTEGER) ;
-BEGIN
-   (* Empty, replaced internally by gcc.  *)
-END longjmp ;
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_setjmp)) setjmp (env: ADDRESS) : INTEGER ;
-BEGIN
-   (* Empty, replaced internally by gcc.  *)
-   RETURN 0   (* Keep -Wreturn-type happy.  *)
-END setjmp ;
-
-(*
-   frame_address - returns the address of the frame.
-                   The current frame is obtained if level is 0,
-                   the next level up is level is 1 etc.
-*)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__
-         ((__builtin_frame_address))
-         frame_address (level: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN NIL
-END frame_address ;
-
-
-(*
-   return_address - returns the return address of function.
-                    The current function return address is
-                    obtained if level is 0,
-                    the next level up is level is 1 etc.
-*)
-
-PROCEDURE __ATTRIBUTE__ __BUILTIN__
-         ((__builtin_return_address))
-         return_address (level: CARDINAL) : ADDRESS ;
-BEGIN
-   RETURN NIL
-END return_address ;
-
-
-END Builtins.
diff --git a/gcc/m2/gm2-libs/SYSTEM.def b/gcc/m2/gm2-libs/SYSTEM.def
deleted file mode 100644
index 6bf9d52d12c..00000000000
--- a/gcc/m2/gm2-libs/SYSTEM.def
+++ /dev/null
@@ -1,114 +0,0 @@
-(* SYSTEM.def provides access to the SYSTEM dependent module.
-
-Copyright (C) 2001-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-DEFINITION MODULE SYSTEM ;
-
-EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
-                 ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, CARDINAL64, (* @SYSTEM_DATATYPES@  *)
-                 ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ;
-                 (* SIZE is also exported if -fpim2 is used.  *)
-
-CONST
-  BITSPERBYTE   = __ATTRIBUTE__ __BUILTIN__ ((BITS_PER_UNIT)) ;
-  BYTESPERWORD  = __ATTRIBUTE__ __BUILTIN__ ((UNITS_PER_WORD)) ;
-
-(* Note that the full list of system and sized datatypes include:
-   LOC, WORD, BYTE, ADDRESS,
-
-   (and the non language standard target types)
-
-   INTEGER8, INTEGER16, INTEGER32, INTEGER64,
-   CARDINAL8, CARDINAL16, CARDINAL32, CARDINAL64,
-   WORD16, WORD32, WORD64, BITSET8, BITSET16,
-   BITSET32, REAL32, REAL64, REAL128, COMPLEX32,
-   COMPLEX64, COMPLEX128, CSIZE_T, CSSIZE_T.
-
-   Also note that the non-standard data types will
-   move into another module in the future.  *)
-
-
-(* The following types are supported on this target:
-TYPE
-   @SYSTEM_TYPES@
-*)
-
-
-(*
-   all the functions below are declared internally to gm2
-   ======================================================
-
-PROCEDURE ADR (VAR v: <anytype>): ADDRESS;
-  (* Returns the address of variable v. *)
-
-PROCEDURE SIZE (v: <type>) : ZType;
-  (* Returns the number of BYTES used to store a v of
-     any specified <type>.  Only available if -fpim2 is used.
-  *)
-
-PROCEDURE TSIZE (<type>) : CARDINAL;
-  (* Returns the number of BYTES used to store a value of the
-     specified <type>.
-  *)
-
-PROCEDURE ROTATE (val: <a set type>;
-                  num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by rotating up/right
-     or down/right by the absolute value of num.  The direction is
-     down/right if the sign of num is negative, otherwise the direction
-     is up/left.
-  *)
-
-PROCEDURE SHIFT (val: <a set type>;
-                 num: INTEGER): <type of first parameter>;
-  (* Returns a bit sequence obtained from val by shifting up/left
-     or down/right by the absolute value of num, introducing
-     zeros as necessary.  The direction is down/right if the sign of
-     num is negative, otherwise the direction is up/left.
-  *)
-
-PROCEDURE THROW (i: INTEGER) <* noreturn *> ;
-  (*
-     THROW is a GNU extension and was not part of the PIM or ISO
-     standards.  It throws an exception which will be caught by the
-     EXCEPT block (assuming it exists).  This is a compiler builtin
-     function which interfaces to the GCC exception handling runtime
-     system.
-     GCC uses the term throw, hence the naming distinction between
-     the GCC builtin and the Modula-2 runtime library procedure Raise.
-     The later library procedure Raise will call SYSTEM.THROW after
-     performing various housekeeping activities.
-  *)
-
-PROCEDURE TBITSIZE (<type>) : CARDINAL ;
-  (* Returns the minimum number of bits necessary to represent
-     <type>.  This procedure function is only useful for determining
-     the number of bits used for any type field within a packed RECORD.
-     It is not particularly useful elsewhere since <type> might be
-     optimized for speed, for example a BOOLEAN could occupy a WORD.
-  *)
-*)
-
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs/SYSTEM.mod b/gcc/m2/gm2-libs/SYSTEM.mod
deleted file mode 100644
index fd803abd82c..00000000000
--- a/gcc/m2/gm2-libs/SYSTEM.mod
+++ /dev/null
@@ -1,29 +0,0 @@
-(* SYSTEM.mod provides access to the SYSTEM dependent module.
-
-Copyright (C) 2001-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-IMPLEMENTATION MODULE SYSTEM ;
-
-END SYSTEM.
diff --git a/gcc/m2/gm2-libs/cbuiltin.def b/gcc/m2/gm2-libs/cbuiltin.def
deleted file mode 100644
index bccaa3b4462..00000000000
--- a/gcc/m2/gm2-libs/cbuiltin.def
+++ /dev/null
@@ -1,217 +0,0 @@
-(* cbuiltin.def provides non-builtin equivalent routines.
-
-Copyright (C) 2003-2026 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <[email protected]>.
-
-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/>.  *)
-
-DEFINITION MODULE FOR "C" cbuiltin ;
-
-FROM SYSTEM IMPORT ADDRESS ;
-EXPORT UNQUALIFIED alloca, memcpy,
-		   isfinite, isfinitef, isfinitel,
-		   isinf_sign, isinf_signf, isinf_signl,
-                   sinf, sinl, sin,
-                   cosf, cosl, cos,
-                   atan2f, atan2l, atan2,
-                   sqrtf, sqrtl, sqrt,
-                   fabsf, fabsl, fabs,
-                   logf, logl, log,
-                   expf, expl, exp,
-                   log10f, log10l, log10,
-                   exp10f, exp10l, exp10,
-                   ilogbf, ilogbl, ilogb,
-                   significand, significandf, significandl,
-                   modf, modff, modfl,
-                   nextafter, nextafterf, nextafterl,
-                   nexttoward, nexttowardf, nexttowardl,
-                   scalb, scalbf, scalbl,
-                   scalbn, scalbnf, scalbnl,
-                   scalbln, scalblnf, scalblnl,
-
-                   cabsf, cabsl, cabs,
-                   cargf, carg, cargl,
-                   conjf, conj, conjl,
-                   cpowf, cpow, cpowl,
-                   csqrtf, csqrt, csqrtl,
-                   cexpf, cexp, cexpl,
-                   clogf, clog, clogl,
-                   csinf, csin, csinl,
-                   ccosf, ccos, ccosl,
-                   ctanf, ctan, ctanl,
-                   casinf, casin, casinl,
-                   cacosf, cacos, cacosl,
-                   catanf, catan, catanl,
-
-                   index, rindex,
-                   memcmp, memset, memmove,
-                   strcat, strncat, strcpy, strncpy, strcmp, strncmp,
-                   strlen, strstr, strpbrk, strspn, strcspn, strchr, strrchr,
-
-                   clz, clzll,
-                   ctz, ctzll ;
-
-PROCEDURE alloca (i: CARDINAL) : ADDRESS ;
-PROCEDURE memcpy (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ;
-PROCEDURE isfinite (x: REAL) : BOOLEAN ;
-PROCEDURE isfinitel (x: LONGREAL) : BOOLEAN ;
-PROCEDURE isfinitef (x: SHORTREAL) : BOOLEAN ;
-PROCEDURE isinf_sign (x: REAL) : BOOLEAN ;
-PROCEDURE isinf_signl (x: LONGREAL) : BOOLEAN ;
-PROCEDURE isinf_signf (x: SHORTREAL) : BOOLEAN ;
-PROCEDURE sinf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE sin (x: REAL) : REAL ;
-PROCEDURE sinl (x: LONGREAL) : LONGREAL ;
-PROCEDURE cosf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE cos (x: REAL) : REAL ;
-PROCEDURE cosl (x: LONGREAL) : LONGREAL ;
-PROCEDURE atan2f (x, y: SHORTREAL) : SHORTREAL ;
-PROCEDURE atan2 (x, y: REAL) : REAL ;
-PROCEDURE atan2l (x, y: LONGREAL) : LONGREAL ;
-PROCEDURE sqrtf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE sqrt (x: REAL) : REAL ;
-PROCEDURE sqrtl (x: LONGREAL) : LONGREAL ;
-PROCEDURE fabsf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE fabs (x: REAL) : REAL ;
-PROCEDURE fabsl (x: LONGREAL) : LONGREAL ;
-PROCEDURE logf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE log (x: REAL) : REAL ;
-PROCEDURE logl (x: LONGREAL) : LONGREAL ;
-PROCEDURE expf (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE exp (x: REAL) : REAL ;
-PROCEDURE expl (x: LONGREAL) : LONGREAL ;
-PROCEDURE log10f (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE log10 (x: REAL) : REAL ;
-PROCEDURE log10l (x: LONGREAL) : LONGREAL ;
-PROCEDURE exp10f (x: SHORTREAL) : SHORTREAL ;
-PROCEDURE exp10 (x: REAL) : REAL ;
-PROCEDURE exp10l (x: LONGREAL) : LONGREAL ;
-PROCEDURE ilogbf (x: SHORTREAL) : INTEGER ;
-PROCEDURE ilogb (x: REAL) : INTEGER ;
-PROCEDURE ilogbl (x: LONGREAL) : INTEGER ;
-
-PROCEDURE significand (r: REAL) : REAL ;
-PROCEDURE significandf (s: SHORTREAL) : SHORTREAL ;
-PROCEDURE significandl (l: LONGREAL) : LONGREAL ;
-
-PROCEDURE modf (x: REAL; VAR y: REAL) : REAL ;
-PROCEDURE modff (x: SHORTREAL; VAR y: SHORTREAL) : SHORTREAL ;
-PROCEDURE modfl (x: LONGREAL; VAR y: LONGREAL) : LONGREAL ;
-
-PROCEDURE nextafter (x, y: REAL) : REAL ;
-PROCEDURE nextafterf (x, y: SHORTREAL) : SHORTREAL ;
-PROCEDURE nextafterl (x, y: LONGREAL) : LONGREAL ;
-
-PROCEDURE nexttoward (x: REAL; y: LONGREAL) : REAL ;
-PROCEDURE nexttowardf (x: SHORTREAL; y: LONGREAL) : SHORTREAL ;
-PROCEDURE nexttowardl (x, y: LONGREAL) : LONGREAL ;
-
-PROCEDURE scalb (x, n: REAL) : REAL ;
-PROCEDURE scalbf (x, n: SHORTREAL) : SHORTREAL ;
-PROCEDURE scalbl (x, n: LONGREAL) : LONGREAL ;
-
-PROCEDURE scalbn (x: REAL; n: INTEGER) : REAL ;
-PROCEDURE scalbnf (x: SHORTREAL; n: INTEGER) : SHORTREAL ;
-PROCEDURE scalbnl (x: LONGREAL; n: INTEGER) : LONGREAL ;
-
-PROCEDURE scalbln (x: REAL; n: LONGINT) : REAL ;
-PROCEDURE scalblnf (x: SHORTREAL; n: LONGINT) : SHORTREAL ;
-PROCEDURE scalblnl (x: LONGREAL; n: LONGINT) : LONGREAL ;
-
-PROCEDURE cabsf (z: SHORTCOMPLEX) : SHORTREAL ;
-PROCEDURE cabs (z: COMPLEX) : REAL ;
-PROCEDURE cabsl (z: LONGCOMPLEX) : LONGREAL ;
-
-PROCEDURE cargf (z: SHORTCOMPLEX) : SHORTREAL ;
-PROCEDURE carg (z: COMPLEX) : REAL ;
-PROCEDURE cargl (z: LONGCOMPLEX) : LONGREAL ;
-
-PROCEDURE conjf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE conj (z: COMPLEX) : COMPLEX ;
-PROCEDURE conjl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE cpowf (base: SHORTCOMPLEX; exp: SHORTREAL) : SHORTCOMPLEX ;
-PROCEDURE cpow (base: COMPLEX; exp: REAL) : COMPLEX ;
-PROCEDURE cpowl (base: LONGCOMPLEX; exp: LONGREAL) : LONGCOMPLEX ;
-
-PROCEDURE csqrtf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE csqrt (z: COMPLEX) : COMPLEX ;
-PROCEDURE csqrtl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE cexpf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE cexp (z: COMPLEX) : COMPLEX ;
-PROCEDURE cexpl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE clogf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE clog (z: COMPLEX) : COMPLEX ;
-PROCEDURE clogl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE csinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE csin (z: COMPLEX) : COMPLEX ;
-PROCEDURE csinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE ccosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE ccos (z: COMPLEX) : COMPLEX ;
-PROCEDURE ccosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE ctanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE ctan (z: COMPLEX) : COMPLEX ;
-PROCEDURE ctanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE casinf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE casin (z: COMPLEX) : COMPLEX ;
-PROCEDURE casinl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE cacosf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE cacos (z: COMPLEX) : COMPLEX ;
-PROCEDURE cacosl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE catanf (z: SHORTCOMPLEX) : SHORTCOMPLEX ;
-PROCEDURE catan (z: COMPLEX) : COMPLEX ;
-PROCEDURE catanl (z: LONGCOMPLEX) : LONGCOMPLEX ;
-
-PROCEDURE index (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE rindex (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE memcmp (s1, s2: ADDRESS; n: CARDINAL) : INTEGER ;
-PROCEDURE memmove (s1, s2: ADDRESS; n: CARDINAL) : ADDRESS ;
-PROCEDURE memset (s: ADDRESS; c: INTEGER; n: CARDINAL) : ADDRESS ;
-PROCEDURE strcat (dest, src: ADDRESS) : ADDRESS ;
-PROCEDURE strncat (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ;
-PROCEDURE strcpy (dest, src: ADDRESS) : ADDRESS ;
-PROCEDURE strncpy (dest, src: ADDRESS; n: CARDINAL) : ADDRESS ;
-PROCEDURE strcmp (s1, s2: ADDRESS) : INTEGER ;
-PROCEDURE strncmp (s1, s2: ADDRESS; n: CARDINAL) : INTEGER ;
-PROCEDURE strlen (s: ADDRESS) : INTEGER ;
-PROCEDURE strstr (haystack, needle: ADDRESS) : ADDRESS ;
-PROCEDURE strpbrk (s, accept: ADDRESS) : ADDRESS ;
-PROCEDURE strspn (s, accept: ADDRESS) : CARDINAL ;
-PROCEDURE strcspn (s, accept: ADDRESS) : CARDINAL ;
-PROCEDURE strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-PROCEDURE strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
-
-PROCEDURE clz (value: CARDINAL) : INTEGER ;
-PROCEDURE clzll (value: CARDINAL) : INTEGER ;
-PROCEDURE ctz (value: CARDINAL) : INTEGER ;
-PROCEDURE ctzll (value: CARDINAL) : INTEGER ;
-
-
-END cbuiltin.
diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt
index 30e211e292f..12b0676dd5f 100644
--- a/gcc/m2/lang.opt
+++ b/gcc/m2/lang.opt
@@ -98,6 +98,10 @@ fdef=
 Modula-2 Joined
 Recognize the specified suffix as a definition module filename.
 
+fdump-builtins
+Modula-2
+Display all builtin procedure functions.
+
 fdump-system-exports
 Modula-2
 Display all inbuilt system items.
diff --git a/gcc/m2/tools-src/def2doc.py b/gcc/m2/tools-src/def2doc.py
index ccc090af150..a953d959699 100644
--- a/gcc/m2/tools-src/def2doc.py
+++ b/gcc/m2/tools-src/def2doc.py
@@ -254,6 +254,10 @@ def check_index(line):
                     var = word.split('=')
                     if len(var) > 0:
                         emit_index(var[0], '(const)')
+    emit_procedure_index(procedure)
+
+
+def emit_procedure_index(procedure):
     if procedure != '':
         name = procedure.split('(')
         if name[0] != '':
@@ -263,18 +267,134 @@ def check_index(line):
             if proc != '':
                 emit_index(proc, '')
 
-def demangle_system_datatype(line, indent):
-    # The spaces in front align in the export qualified list.
-    indent += len ('EXPORT QUALIFIED ')
-    line = line.replace('@SYSTEM_DATATYPES@',
-                        '\n' + indent * ' ' + 'Target specific data types.')
-    line = line.replace('@SYSTEM_TYPES@',
-                        '(* Target specific data types.  *)')
-    return line
+
+def contains(line, sub):
+    # Return True if line contains sub.
+    return line.find(sub) >= 0
+
+
+def contains_builtin_tag(line):
+    # Return True if line contains a builtin tag.
+    for key in builtin_func:
+        if contains(line, key):
+            return True
+    return False
+
+
+def startWith(line, sub):
+    # Return True if line starts with sub.
+    return (len(line)>len(sub)) and (line[:len(sub)]==sub)
+
+
+def process_def_cbuiltin(line, key):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        emit_procedure_index(funcname + "(")
+        output.write('(* ' + funcname + ' availability is determined by the target.  *)\n')
+
+
+def process_cbuiltin(line, key):
+    funcname = key.split("_")[2]
+    funcname = funcname.lower()[:-1]
+    emit_procedure_index(funcname + "(")
+    output.write('(* ' + funcname + ' availability is determined by the target.  *)\n')
+    keyname = "__builtin_" + funcname
+
+
+def process_mod_builtin(line, key):
+    pass
+
+
+def process_def_builtin(line, key):
+    # Issue a comment stating the procedure availability is target dependent.
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        keyname = line.split('(')[1].split(',')[3]
+        emit_procedure_index(funcname + "(")
+        output.write('(* ' + funcname + ' availability is determined by the target.  *)\n')
+
+
+def process_def_target_procedure(line, key):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        argtype = line.split('(')[1].split(',')[1]
+        returntype = line.split('(')[1].split(',')[2]
+        keyname = line.split('(')[1].split(',')[3]
+        emit_procedure_index(funcname + "(")
+        output.write('(* ' + funcname + ' availability is determined by the target.  *)\n')
+        output.write('(* PROCEDURE ' + funcname + ' (z: ' + argtype + ') : ' + returntype + ' ;  *)\n\n')
+
+def process_cbuiltin_export(line, key):
+    pass
+
+
+def process_mod_target_procedure(line, key):
+    pass
+
+
+builtin_func = { "<DEF_CBUILTIN_PROCEDURE":process_def_cbuiltin,
+                 "<DEF_BUILTIN_PROCEDURE":process_def_builtin,
+                 "<MOD_BUILTIN_PROCEDURE":process_mod_builtin,
+                 "<CBUILTIN_EXPORT_LIST>":process_cbuiltin_export,
+                 "<DEF_TARGET_PROCEDURE":process_def_target_procedure,
+                 "<MOD_TARGET_PROCEDURE":process_mod_target_procedure}
+
+
+def process_tag(line):
+    for key in builtin_func:
+        if contains(line, key):
+            builtin_func[key](line, key)
+
+
+def process_line(line):
+    global seen_SYSTEM_DATATYPES
+    global seen_SYSTEM_TYPES
+    # process_line interpet and process any tags.
+    if contains (line, "<SYSTEM_DATATYPES>"):
+        seen_SYSTEM_DATATYPES = True
+    elif contains (line, "</SYSTEM_DATATYPES>"):
+        output_SYSTEM_DATATYPES(line)
+        seen_SYSTEM_DATATYPES = False
+    elif contains (line, "<SYSTEM_TYPES>"):
+        seen_SYSTEM_TYPES = True
+    elif contains (line, "</SYSTEM_TYPES>"):
+        output_SYSTEM_DATATYPES(line)
+        seen_SYSTEM_TYPES = False
+    elif seen_SYSTEM_DATATYPES:
+        pass
+    elif contains_builtin_tag(line):
+        process_tag(line)
+    else:
+        output.write(line + '\n')
+
+
+def output_SYSTEM_DATATYPES(line):
+    # Write a list of system datatypes into the output file.
+    indent = leadingSpaces(line)
+    output.write(" " * indent)
+    output.write("All target supported system data types.\n")
+
+
+def leadingSpaces(line):
+    # Return the leading number of spaces in line.
+    s = line.lstrip()
+    return len(line)-len(s)
 
 
 def emit_texinfo_content(f, line):
     global state_obj
+    global seen_SYSTEM_DATATYPES
+    global seen_SYSTEM_TYPES
+    global output
+
+    seen_SYSTEM_DATATYPES = False
+    seen_SYSTEM_TYPES = False
     output.write(line.rstrip() + '\n')
     line = f.readline()
     if len(line.rstrip()) == 0:
@@ -291,8 +411,7 @@ def emit_texinfo_content(f, line):
         line = line.rstrip()
         check_index(line)
         line = line.replace('{', '@{').replace('}', '@}')
-        line = demangle_system_datatype(line, 0)
-        output.write(line + '\n')
+        process_line(line)
         line = f.readline()
     return f
 
diff --git a/gcc/m2/tools-src/makeSystem b/gcc/m2/tools-src/makeSystem
index 3830809f671..8adebd700ed 100644
--- a/gcc/m2/tools-src/makeSystem
+++ b/gcc/m2/tools-src/makeSystem
@@ -90,18 +90,18 @@ displayBuiltinTypes () {
 }
 
 displayStart () {
-   sed -e "1,/@SYSTEM_DATATYPES@/!d" < ${SYSTEMDEF} | \
-   sed -e "/@SYSTEM_DATATYPES@/d" >> ${OUTPUTFILE}
+   sed -e "1,/<SYSTEM_DATATYPES>/!d" < ${SYSTEMDEF} | \
+   sed -e "/<SYSTEM_DATATYPES>/d" >> ${OUTPUTFILE}
 }
 
 displayMiddle () {
-   sed -e "1,/@SYSTEM_DATATYPES@/d" < ${SYSTEMDEF} | \
-   sed -e "1,/@SYSTEM_TYPES@/!d" | \
-   sed -e "/@SYSTEM_TYPES@/d" >> ${OUTPUTFILE}
+   sed -e "1,/<\/SYSTEM_DATATYPES>/d" < ${SYSTEMDEF} | \
+   sed -e "1,/<SYSTEM_TYPES>/!d" | \
+   sed -e "/<SYSTEM_TYPES>/d" >> ${OUTPUTFILE}
 }
 
 displayEnd () {
-   sed -e "1,/@SYSTEM_TYPES@/d" < ${SYSTEMDEF} >> ${OUTPUTFILE}
+   sed -e "1,/<\/SYSTEM_TYPES>/d" < ${SYSTEMDEF} >> ${OUTPUTFILE}
 }
 
 MINIMAL="-fno-scaffold-main -fno-scaffold-dynamic -fno-scaffold-static -fno-m2-plugin"
diff --git a/gcc/m2/tools-src/mktargetsrc.py b/gcc/m2/tools-src/mktargetsrc.py
new file mode 100644
index 00000000000..cd61ecec87c
--- /dev/null
+++ b/gcc/m2/tools-src/mktargetsrc.py
@@ -0,0 +1,417 @@
+#!/usr/bin/env python3
+
+# maketargetsrc creates target library target modules.
+
+# Copyright (C) 2026 Free Software Foundation, Inc.
+#
+# 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.
+#
+# 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/>.
+
+import argparse
+import uuid
+import os
+import pathlib
+import sys
+
+
+exit_code = 0
+minimalCommandLine = "-fno-scaffold-main -fno-scaffold-dynamic"
+minimalCommandLine += " -fno-scaffold-static -fno-m2-plugin"
+sourceLineLength = 60
+
+
+def printf (format, *args):
+    # printf a very basic printf.
+    print(str(format) % args, end=' ')
+
+
+def quietSystem(args, commandLine):
+    # Execute commandline and exit if unsuccessful.  It will run
+    # gdb on the command line if --gdb is set in args.
+    if args.gdb:
+        result = os.system(commandLine + " -wrapper gdb,--args")
+    else:
+        result = os.system(commandLine + " 2>&1 /dev/null")
+    if result != 0:
+        printf("failed to execute: %s with an exit code: %d\n",
+               commandLine, result)
+        sys.exit(result)
+
+
+def extractJoined():
+    # Return the commandLine and includePath.
+    commandLine = []
+    includePath = ""
+    defInput = ""
+    modInput = ""
+    compiler = ""
+    i = 1
+    while i<len(sys.argv):
+        if (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-I='):
+            if includePath != "":
+                includePath += " "
+            includePath += "-I"
+            includePath += sys.argv[i][3:]
+        elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-C='):
+            compiler = sys.argv[i][3:]
+        elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-D='):
+            defInput = sys.argv[i][3:]
+        elif (len(sys.argv[i])>2) and (sys.argv[i][:3] == '-M='):
+            modInput = sys.argv[i][3:]
+        else:
+            commandLine += [sys.argv[i]]
+        i += 1
+    return commandLine, includePath, defInput, modInput, compiler
+
+
+def initOptions():
+    # initOptions build and return the args object.
+    commandLine, includePath, defInput, modInput, compiler = extractJoined()
+    parser = argparse.ArgumentParser(prog='mktargetsrc')
+    parser.add_argument('-s', '--fiso', help='use the ISO dialect',
+                        default=False, action='store_true')
+    parser.add_argument('-p', '--fpim', help='use the PIM dialect',
+                        default=False, action='store_true')
+    parser.add_argument('-g', '--gdb', help='run gm2 under gdb',
+                        default=False, action='store_true')
+    parser.add_argument('-o', '--outputfile', help='set the output file',
+                        default=None, action='store')
+    parser.add_argument('-v', '--verbose', help='generate progress messages',
+                        action='store_true')
+    parser.add_argument('-C=', '--compiler', help='the compiler driver',
+                        default=compiler, action='store')
+    parser.add_argument('-D=', '--definputfile', help='set the def input file',
+                        default=defInput, action='store')
+    parser.add_argument('-M=', '--modinputfile', help='set the mod input file',
+                        default=modInput, action='store')
+    parser.add_argument('-I=', '--include', help='append to the search path',
+                        default=includePath, action='store')
+    args = parser.parse_args(commandLine)
+    return args, includePath
+
+
+def startWith(line, sub):
+    # Return True if line starts with sub.
+    return (len(line)>len(sub)) and (line[:len(sub)]==sub)
+
+
+def makeDictionary(temporaryFile):
+    # Populate dictDefs with the contents of temporaryFile.
+    dictDefs = { "SYSTEM":{}, "builtin":{} }
+    for line in open(temporaryFile).readlines():
+        if startWith (line, "SYSTEM module creates type:"):
+            definedType = line[len("SYSTEM module creates type:"):]
+            definedType = definedType.strip()
+            dictDefs["SYSTEM"][definedType] = True
+        elif startWith (line, "builtin procedure function:"):
+            definedFunc = line[len("builtin procedure function:"):]
+            definedFunc = definedFunc.strip()
+            dictDefs["builtin"][definedFunc] = True
+    return dictDefs
+
+
+def leadingSpaces(line):
+    # Return the leading number of spaces in line.
+    s = line.lstrip()
+    return len(line)-len(s)
+
+
+def output_export_list(args, line, export_list):
+    # Append the export_list to the args.outputfile.  It preserves
+    # indentation and wraps at sourceLineLength.
+    outf = open(args.outputfile, "a")
+    indent = leadingSpaces(line)
+    pos = 0
+    for el in export_list:
+        if pos == 0:
+            outf.write(" " * indent)
+            pos = indent
+        outf.write(el)
+        outf.write(", ")
+        pos += len(el)
+        pos += 2
+        if pos > sourceLineLength:
+            outf.write("\n")
+            pos = 0
+    if pos > 0:
+        outf.write("\n")
+    outf.close()
+
+
+def output_SYSTEM_DATATYPES(args, line, dictDefs):
+    # Write a list of system datatypes into the output file.
+    output_export_list (args, line, [key for key in dictDefs["SYSTEM"]])
+
+
+def output_SYSTEM_TYPES(args, line, dictDefs):
+    # Write a list of system types into the output file.
+    outf = open(args.outputfile, "a")
+    indent = leadingSpaces(line)
+    for key in dictDefs["SYSTEM"]:
+        outf.write(" " * indent)
+        outf.write(key)
+        outf.write(" ;\n")
+    outf.close()
+
+
+def output(args, line):
+    # Append line to the output file.
+    outf = open(args.outputfile, "a")
+    outf.write(line)
+    outf.close()
+
+
+def contains(line, sub):
+    # Return True if line contains sub.
+    return line.find(sub) >= 0
+
+
+def contains_builtin_tag(line):
+    # Return True if line contains a builtin tag.
+    for key in builtin_func:
+        if contains(line, key):
+            return True
+    return False
+
+
+class builtin_prototype:
+    def __init__(self, name, returnType, argNameList, argTypeList):
+        self.name = name
+        self.builtinName = "__builtin_" + name
+        self.returnType = returnType
+        self.argNameList = argNameList
+        self.argTypeList = argTypeList
+
+# The list of gcc_builtins which might not be available on a target.
+
+list_of_builtins = [builtin_prototype("csinl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]),
+                    builtin_prototype("csin", "COMPLEX", ["z"], ["COMPLEX"]),
+                    builtin_prototype("csinf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"]),
+                    builtin_prototype("ccosl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]),
+                    builtin_prototype("ccos", "COMPLEX", ["z"], ["COMPLEX"]),
+                    builtin_prototype("ccosf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"]),
+                    builtin_prototype("ctanl", "LONGCOMPLEX", ["z"], ["LONGCOMPLEX"]),
+                    builtin_prototype("ctan", "COMPLEX", ["z"], ["COMPLEX"]),
+                    builtin_prototype("ctanf", "SHORTCOMPLEX", ["z"], ["SHORTCOMPLEX"])]
+
+gcc_builtins = {element.builtinName: element for element in list_of_builtins}
+
+
+def output_def_cbuiltin(args, keyname):
+    # Generate the definition module procedure declaration for a cbuiltin keyname.
+    output(args, "(* " + gcc_builtins[keyname].name + " is available on the target.  *)\n")
+    output(args, "PROCEDURE %s (%s: %s) : %s ;\n" % (gcc_builtins[keyname].name,
+                                                     gcc_builtins[keyname].argNameList[0],
+                                                     gcc_builtins[keyname].argTypeList[0],
+                                                     gcc_builtins[keyname].returnType))
+
+
+def output_def_builtin(args, keyname):
+    # Generate the definition module procedure declaration for a builtin keyname.
+    output(args, "(* " + gcc_builtins[keyname].name + " is available on the target.  *)\n")
+    output(args, "PROCEDURE __BUILTIN__ %s (%s: %s) : %s ;\n" % (gcc_builtins[keyname].name,
+                                                                 gcc_builtins[keyname].argNameList[0],
+                                                                 gcc_builtins[keyname].argTypeList[0],
+                                                                 gcc_builtins[keyname].returnType))
+
+
+def process_def_builtin(args, line, key, dictDefs):
+    # Check target availability for the builtin and generate a procedure declaration
+    # or an unavailablity comment.
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        keyname = line.split('(')[1].split(',')[3]
+        if keyname in dictDefs["builtin"]:
+            output_def_builtin(args, keyname)
+        else:
+            unavailable(args, funcname)
+
+
+def output_mod_builtin(args, keyname, line):
+    output(args, "(* " + gcc_builtins[keyname].name + " is available on the target.  *)\n")
+    output(args, "PROCEDURE __ATTRIBUTE__ __BUILTIN__ ")
+    output(args, "((%s)) %s (%s: %s) : %s ;" % (gcc_builtins[keyname].builtinName,
+                                                gcc_builtins[keyname].name,
+                                                gcc_builtins[keyname].argNameList[0],
+                                                gcc_builtins[keyname].argTypeList[0],
+                                                gcc_builtins[keyname].returnType))
+    builtin = line.split('(')[1].split(',')[4].split(')')[0]
+    output(args, """
+BEGIN
+   RETURN %s(z)
+END %s ;
+
+""" % (builtin, gcc_builtins[keyname].name))
+
+
+def process_mod_builtin(args, line, key, dictDefs):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        keyname = line.split('(')[1].split(',')[3]
+        if keyname in dictDefs["builtin"]:
+            output_mod_builtin(args, keyname, line)
+        else:
+            unavailable(args, funcname)
+
+
+def unavailable(args, funcname):
+    output(args, "(* Procedure function %s is unavailable on the target.  *)\n" % funcname)
+
+
+def process_def_cbuiltin(args, line, key, dictDefs):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        keyname = line.split('(')[1].split(',')[3]
+        output(args, "(* " + funcname + " is available on the target.  *)\n")
+        if keyname in dictDefs["builtin"]:
+            output_def_cbuiltin(args, keyname)
+        else:
+            unavailable(args, funcname)
+
+
+def target_builtins(args, key, dictDefs):
+    builtin_list = [gcc_builtins[key] for key in gcc_builtins]
+    target_list = []
+    for el in builtin_list:
+        if el.builtinName in dictDefs["builtin"]:
+            target_list += [el.name]
+    return target_list
+
+
+def process_cbuiltin_export(args, line, key, dictDefs):
+    output_export_list (args, line, target_builtins (args, key, dictDefs))
+
+
+def process_mod_target_procedure(args, line, key, dictDefs):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        argtype = line.split('(')[1].split(',')[1]
+        returntype = line.split('(')[1].split(',')[2]
+        keyname = line.split('(')[1].split(',')[3]
+        cbuiltin = line.split('(')[1].split(',')[4].split('>')[0].split(')')[0]
+        if keyname in dictDefs["builtin"]:
+            output(args, """
+PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((%s)) %s (z: %s): %s ;
+BEGIN
+   RETURN %s (z)
+END %s ;
+
+""" % (keyname, funcname, argtype, returntype, cbuiltin, funcname))
+
+
+def process_def_target_procedure(args, line, key, dictDefs):
+    line = line.strip()
+    if startWith(line, "(*") and (len(line)>len("(*")):
+        line = line[2:]
+        funcname = line.split('(')[1].split(',')[0]
+        argtype = line.split('(')[1].split(',')[1]
+        returntype = line.split('(')[1].split(',')[2]
+        keyname = line.split('(')[1].split(',')[3]
+        if keyname in dictDefs["builtin"]:
+            output(args, "PROCEDURE %s (z: %s) : %s ;\n" % (funcname, argtype, returntype))
+
+
+builtin_func = { "<DEF_CBUILTIN_PROCEDURE":process_def_cbuiltin,
+                 "<DEF_BUILTIN_PROCEDURE":process_def_builtin,
+                 "<MOD_BUILTIN_PROCEDURE":process_mod_builtin,
+                 "<CBUILTIN_EXPORT_LIST>":process_cbuiltin_export,
+                 "<DEF_TARGET_PROCEDURE":process_def_target_procedure,
+                 "<MOD_TARGET_PROCEDURE":process_mod_target_procedure}
+
+
+def process_tag(args, line, dictDefs):
+    for key in builtin_func:
+        if contains(line, key):
+            builtin_func[key](args, line, key, dictDefs)
+
+
+def generateSource(args, temporaryFile):
+    # generateSource interpet and process any tags.
+    dictDefs = makeDictionary(temporaryFile)
+    seen_SYSTEM_DATATYPES = False
+    seen_SYSTEM_TYPES = False
+    filename = args.modinputfile
+    if args.definputfile != "":
+        filename = args.definputfile
+    if os.path.isfile(filename):
+        for line in open(filename):
+            if contains (line, "<SYSTEM_DATATYPES>"):
+                seen_SYSTEM_DATATYPES = True
+            elif contains (line, "</SYSTEM_DATATYPES>"):
+                output_SYSTEM_DATATYPES(args, line, dictDefs)
+                seen_SYSTEM_DATATYPES = False
+            elif contains (line, "<SYSTEM_TYPES>"):
+                seen_SYSTEM_TYPES = True
+            elif contains (line, "</SYSTEM_TYPES>"):
+                output_SYSTEM_TYPES(args, line, dictDefs)
+                seen_SYSTEM_TYPES = False
+            elif seen_SYSTEM_DATATYPES:
+                pass
+            elif contains_builtin_tag(line):
+                process_tag(args, line, dictDefs)
+            else:
+                output(args, line)
+    else:
+        printf("mktargetsrc cannot open: %s\n", filename)
+        sys.exit(1)
+
+
+def makeTemporaryFile():
+    # makeTemporaryFile returns the name of a temporary file.
+    return str(uuid.uuid4())+'.txt'
+
+
+def stripBackslash(compiler):
+    compiler = compiler.replace("\\ ", " ")
+    return compiler
+
+
+def determineBuiltins(args, includePath):
+    # determineBuiltins build the builtin_dict with the gm2 builtins.
+    print(args.modinputfile)
+    if args.outputfile != None:
+        open(args.outputfile, "w").close()
+    temporaryFile = makeTemporaryFile()
+    dialect = '-fpim'
+    if args.fiso or (not args.fpim):
+        dialect = '-fiso'
+    compiler = stripBackslash(args.compiler)
+    commandLine = "%s %s %s %s -c -fdump-system-exports -o /dev/null %s > %s" % (
+        compiler, dialect, includePath, minimalCommandLine,
+        args.modinputfile, temporaryFile)
+    quietSystem(args, commandLine)
+    commandLine = "%s %s %s %s -c -fdump-builtins %s >> %s" % (
+        compiler, dialect, includePath, minimalCommandLine,
+        args.modinputfile, temporaryFile)
+    quietSystem(args, commandLine)
+    generateSource(args, temporaryFile)
+    os.remove(temporaryFile)
+
+
+def main():
+    args, includePath = initOptions()
+    determineBuiltins(args, includePath)
+
+
+main()
diff --git a/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp b/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp
index 4c6511931d2..ea3db640baf 100644
--- a/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp
+++ b/gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp
@@ -28,8 +28,8 @@ load_lib prune.exp
 load_lib gm2-torture.exp
 
 
-set output [target_compile $srcdir/$subdir/cpp.cpp cpp.o object "-g"]
-set output [target_compile $srcdir/$subdir/mycpp.cpp mycpp.o object "-g"]
+set output [gm2_target_compile $srcdir/$subdir/cpp.cpp cpp.o object "-g"]
+set output [gm2_target_compile $srcdir/$subdir/mycpp.cpp mycpp.o object "-g"]
 
 #
 #  notice this uses PIM libraries with exceptions - this is a useful test.
diff --git a/gcc/testsuite/lib/gm2.exp b/gcc/testsuite/lib/gm2.exp
index b1093e1bd97..7590fe05845 100644
--- a/gcc/testsuite/lib/gm2.exp
+++ b/gcc/testsuite/lib/gm2.exp
@@ -190,9 +190,13 @@ proc gm2_target_compile_default { source dest type options } {
     if [istarget "powerpc-*-*"] {
        lappend options "-mabi=ieeelongdouble"
     }
+    if [check_effective_target_pie] {
+       lappend options "additional_flags=-fPIE"
+    }
 
-    lappend options "timeout=[timeout_value]"
     lappend options "compiler=$GCC_UNDER_TEST"
+    lappend options "timeout=[timeout_value]"    
+
     # puts stderr "options = $options\n"
     # puts stderr "***** target_compile: $source $dest $type $options\n"
     return [target_compile $source $dest $type $options]
diff --git a/libgm2/Makefile.am b/libgm2/Makefile.am
index ef29732dbed..bacc51bd2e3 100644
--- a/libgm2/Makefile.am
+++ b/libgm2/Makefile.am
@@ -25,7 +25,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign
 
 SUFFIXES = .c .mod .def .o .obj .lo .a
 
-ACLOCAL_AMFLAGS = -I .. -I ../config
+ACLOCAL_AMFLAGS = -I .. -I ../config -I .
 
 # Multilib support.
 MAKEOVERRIDES=
@@ -41,6 +41,9 @@ GM2_SRC = $(GCC_DIR)/m2
 toolexeclibdir=@toolexeclibdir@
 toolexecdir=@toolexecdir@
 GM2_FOR_TARGET=@GM2_FOR_TARGET@
+GM2_FOR_TARGET_ESC=$(shell echo $(GM2_FOR_TARGET) | sed 's/ /\\ /g')
+$(info GM2_FOR_TARGET is $(GM2_FOR_TARGET))
+$(info GM2_FOR_TARGET_ESC is $(GM2_FOR_TARGET_ESC))
 
 SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim
 GM2_BUILDDIR := $(shell pwd)
@@ -62,6 +65,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -100,7 +104,8 @@ AM_MAKEFLAGS = \
         "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
         "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
 	"LIBTOOL=$(GM2_BUILDDIR)/libtool" \
-	"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)"
+	"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
 FLAGS_TO_PASS = $(AM_MAKEFLAGS)
diff --git a/libgm2/Makefile.in b/libgm2/Makefile.in
index af46b30ad60..b2ad58d08e8 100644
--- a/libgm2/Makefile.in
+++ b/libgm2/Makefile.in
@@ -90,7 +90,8 @@ host_triplet = @host@
 target_triplet = @target@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -98,10 +99,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -237,6 +238,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -255,6 +265,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -343,7 +354,7 @@ toplevel_srcdir = @toplevel_srcdir@
 # Modula-2 support.
 AUTOMAKE_OPTIONS = 1.8 foreign
 SUFFIXES = .c .mod .def .o .obj .lo .a
-ACLOCAL_AMFLAGS = -I .. -I ../config
+ACLOCAL_AMFLAGS = -I .. -I ../config -I .
 
 # Multilib support.
 MAKEOVERRIDES = 
@@ -352,6 +363,7 @@ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
 TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd)
 GCC_DIR = $(TOP_GCCDIR)/gcc
 GM2_SRC = $(GCC_DIR)/m2
+GM2_FOR_TARGET_ESC = $(shell echo $(GM2_FOR_TARGET) | sed 's/ /\\ /g')
 SUBDIRS = libm2min libm2log libm2cor libm2iso libm2pim
 GM2_BUILDDIR := $(shell pwd)
 gm2_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
@@ -368,6 +380,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -406,7 +419,8 @@ AM_MAKEFLAGS = \
         "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \
         "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
 	"LIBTOOL=$(GM2_BUILDDIR)/libtool" \
-	"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)"
+	"DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
@@ -712,6 +726,8 @@ uninstall-am:
 
 .PRECIOUS: Makefile
 
+$(info GM2_FOR_TARGET is $(GM2_FOR_TARGET))
+$(info GM2_FOR_TARGET_ESC is $(GM2_FOR_TARGET_ESC))
 
 # GNU Make needs to see an explicit $(MAKE) variable in the command it
 # runs to enable its job server during parallel builds.  Hence the
diff --git a/libgm2/aclocal.m4 b/libgm2/aclocal.m4
index 80a7ff96196..c9eee317b7b 100644
--- a/libgm2/aclocal.m4
+++ b/libgm2/aclocal.m4
@@ -1187,6 +1187,7 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([ax_python_devel.m4])
 m4_include([../config/acx.m4])
 m4_include([../config/clang-plugin.m4])
 m4_include([../config/depstand.m4])
@@ -1195,6 +1196,7 @@ m4_include([../config/lead-dot.m4])
 m4_include([../config/multi.m4])
 m4_include([../config/no-executables.m4])
 m4_include([../config/override.m4])
+m4_include([../config/picflag.m4])
 m4_include([../libtool.m4])
 m4_include([../ltoptions.m4])
 m4_include([../ltsugar.m4])
diff --git a/libgm2/ax_python_devel.m4 b/libgm2/ax_python_devel.m4
new file mode 100644
index 00000000000..b018748cc19
--- /dev/null
+++ b/libgm2/ax_python_devel.m4
@@ -0,0 +1,522 @@
+# ===========================================================================
+#     https://www.gnu.org/software/autoconf-archive/ax_python_devel.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_PYTHON_DEVEL([version[,optional[,checkdev]]])
+#
+# DESCRIPTION
+#
+#   Note: Defines as a precious variable "PYTHON_VERSION". Don't override it
+#   in your configure.ac.
+#
+#   This macro checks for Python and tries to get the include path to
+#   'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS)
+#   output variables.  It also exports $(PYTHON_EXTRA_LIBS) and
+#   $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code.
+#
+#   You can search for some particular version of Python by passing a
+#   parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please
+#   note that you *have* to pass also an operator along with the version to
+#   match, and pay special attention to the single quotes surrounding the
+#   version number. Don't use "PYTHON_VERSION" for this: that environment
+#   variable is declared as precious and thus reserved for the end-user.
+#
+#   By default this will fail if it does not detect a development version of
+#   python.  If you want it to continue, set optional to something, like
+#   AX_PYTHON_DEVEL([], [no]).  The ax_python_devel_found variable will be
+#   "no" if it fails.  The ax_python_interpreter variable will be "no"
+#   if the incorrect version of Python is found.  It will be "yes" if found.
+#
+#   If you want to disable the search for Python development files you can
+#   add a non empty third parameter.  For example:
+#
+#   AX_PYTHON_DEVEL([>= '3.0'], [no], [no]) searches for a Python3
+#   interpreter (no development files) and will not fail if not found.
+#
+#   AX_PYTHON_DEVEL([>= '3.0'], [], [no]) searches for a Python3
+#   interpreter (no development files) and will fail if not found.
+#
+#   AX_PYTHON_DEVEL([>= '3.0'], [], []) searches for a Python3
+#   interpreter (with development files) and will fail if not found.
+#
+#   This macro should work for all versions of Python >= 2.1.0. As an end
+#   user, you can disable the check for the python version by setting the
+#   PYTHON_NOVERSIONCHECK environment variable to something else than the
+#   empty string.
+#
+#   If you need to use this macro for an older Python version, please
+#   contact the authors. We're always open for feedback.
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Sebastian Huber <[email protected]>
+#   Copyright (c) 2009 Alan W. Irwin
+#   Copyright (c) 2009 Rafael Laboissiere <[email protected]>
+#   Copyright (c) 2009 Andrew Collier
+#   Copyright (c) 2009 Matteo Settenvini <[email protected]>
+#   Copyright (c) 2009 Horst Knorr <[email protected]>
+#   Copyright (c) 2013 Daniel Mullner <[email protected]>
+#   Copyright (c) 2026 Gaius Mulley  <[email protected]>
+#
+#   This program 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. If not, see <https://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+#
+#   example of usage:
+#
+#   AC_PYTHON_DEVEL([>= '3.0'],[no],[no])
+#
+#   check for version >= 3.0.
+#   do not bail out if no Python interpreter is found.
+#   do not check for Python development files.
+#
+
+#serial 37
+
+AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL])
+AC_DEFUN([AX_PYTHON_DEVEL],[
+	AC_MSG_CHECKING([starting ax_python_devel])
+	# Get whether it's optional
+	if test -z "$2"; then
+           AC_MSG_CHECKING([having a Python interpreter is not optional])
+	   ax_python_devel_optional=false
+	else
+           AC_MSG_CHECKING([having a Python interpreter is optional])
+	   ax_python_devel_optional=$2
+	fi
+	# Should we test for python development?
+	if test -z "$3"; then
+	   ax_python_devel_check=yes
+	else
+           AC_MSG_CHECKING([not checking for Python development])
+	   ax_python_devel_check=$3
+	fi
+	ax_python_devel_found=yes
+        ax_python_interpreter=yes
+        AC_MSG_CHECKING([do we have a Python interpreter])
+	#
+	# Allow the use of a (user set) custom python version
+	#
+	AC_ARG_VAR([PYTHON_VERSION],[The installed Python
+		version to use, for example '2.3'. This string
+		will be appended to the Python interpreter
+		canonical name.])
+
+        AC_MSG_CHECKING([for python version])
+	for version in $PYTHON_VERSION "" 3 2; do
+           AC_PATH_PROG([PYTHON],[python[$version]])
+           AC_MSG_CHECKING([$version])
+           if test -z "$PYTHON"; then
+              AC_MSG_CHECKING([no])
+              ax_python_devel_found=no
+              ax_python_interpreter=no
+           else
+              AC_MSG_CHECKING([yes])
+              ax_python_devel_found=yes
+              ax_python_interpreter=yes
+	      PYTHON_VERSION=$version
+	      break
+	   fi
+	done
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check for a version of Python >= 2.1.0
+	   #
+	   AC_MSG_CHECKING([for a version of Python >= '2.1.0'])
+	   ac_supports_python_ver=`$PYTHON -c "import sys; \
+		ver = sys.version.split ()[[0]]; \
+		print (ver >= '2.1.0')"`
+	   if test "$ac_supports_python_ver" != "True"; then
+		if test -z "$PYTHON_NOVERSIONCHECK"; then
+			AC_MSG_RESULT([no])
+			AC_MSG_WARN([
+This version of the AC@&t@_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+])
+			if ! $ax_python_devel_optional; then
+			   AC_MSG_FAILURE([Giving up])
+			fi
+			ax_python_devel_found=no
+                        AC_MSG_CHECKING([no interpreter found, incorrect version])
+			PYTHON_VERSION=""
+                        ax_python_interpreter=no
+                        AC_MSG_CHECKING([no interpreter found])
+		else
+			AC_MSG_RESULT([skip at user request])
+		fi
+	   else
+		AC_MSG_RESULT([yes])
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # If the macro parameter ``version'' is set, honour it.
+	   # A Python shim class, VPy, is used to implement correct version comparisons via
+	   # string expressions, since e.g. a naive textual ">= 2.7.3" won't work for
+	   # Python 2.7.10 (the ".1" being evaluated as less than ".3").
+	   #
+	   if test -n $1; then
+		AC_MSG_CHECKING([for a version of Python $1])
+                cat << EOF > ax_python_devel_vpy.py
+class VPy:
+    def vtup(self, s):
+        return tuple(map(int, s.strip().replace("rc", ".").split(".")))
+    def __init__(self):
+        import sys
+        self.vpy = tuple(sys.version_info)[[:3]]
+    def __eq__(self, s):
+        return self.vpy == self.vtup(s)
+    def __ne__(self, s):
+        return self.vpy != self.vtup(s)
+    def __lt__(self, s):
+        return self.vpy < self.vtup(s)
+    def __gt__(self, s):
+        return self.vpy > self.vtup(s)
+    def __le__(self, s):
+        return self.vpy <= self.vtup(s)
+    def __ge__(self, s):
+        return self.vpy >= self.vtup(s)
+EOF
+		ac_supports_python_ver=`$PYTHON -c """import ax_python_devel_vpy; \
+  ver = ax_python_devel_vpy.VPy(); \
+  print (ver $1) """`
+                rm -rf ax_python_devel_vpy*.py* __pycache__/ax_python_devel_vpy*.py*
+		if test "$ac_supports_python_ver" = "True"; then
+			AC_MSG_RESULT([yes])
+		else
+			AC_MSG_RESULT([no])
+			AC_MSG_WARN([this package requires Python $1.
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See ``configure --help'' for reference.
+])
+			if ! $ax_python_devel_optional; then
+			   AC_MSG_ERROR([Giving up])
+			fi
+                        AC_MSG_CHECKING([no interpreter found, wrong version $1])
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+			# Wrong version of the interpreter.
+                        ax_python_interpreter=no
+		fi
+	   fi
+	fi
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check if you have distutils, else fail
+	   #
+	   AC_MSG_CHECKING([for the sysconfig Python package])
+	   ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`
+	   if test $? -eq 0; then
+		AC_MSG_RESULT([yes])
+		IMPORT_SYSCONFIG="import sysconfig"
+	   else
+		AC_MSG_RESULT([no])
+
+		AC_MSG_CHECKING([for the distutils Python package])
+		ac_sysconfig_result=`$PYTHON -c "from distutils import sysconfig" 2>&1`
+		if test $? -eq 0; then
+			AC_MSG_RESULT([yes])
+			IMPORT_SYSCONFIG="from distutils import sysconfig"
+		else
+			AC_MSG_WARN([cannot import Python module "distutils".
+Please check your Python installation. The error was:
+$ac_sysconfig_result])
+			if ! $ax_python_devel_optional; then
+			   AC_MSG_ERROR([Giving up])
+			fi
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+		fi
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check for Python include path
+	   #
+	   AC_MSG_CHECKING([for Python include path])
+	   if test -z "$PYTHON_CPPFLAGS"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			# sysconfig module has different functions
+			python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_path ('include'));"`
+			plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_path ('platinclude'));"`
+		else
+			# old distutils way
+			python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_inc ());"`
+			plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_inc (plat_specific=1));"`
+		fi
+		if test -n "${python_path}"; then
+			if test "${plat_python_path}" != "${python_path}"; then
+				python_path="-I$python_path -I$plat_python_path"
+			else
+				python_path="-I$python_path"
+			fi
+		fi
+		PYTHON_CPPFLAGS=$python_path
+	   fi
+	   AC_MSG_RESULT([$PYTHON_CPPFLAGS])
+	   AC_SUBST([PYTHON_CPPFLAGS])
+
+	   #
+	   # Check for Python library path
+	   #
+	   AC_MSG_CHECKING([for Python library path])
+	   if test -z "$PYTHON_LIBS"; then
+		# (makes two attempts to ensure we've got a version number
+		# from the interpreter)
+		ac_python_version=`cat<<EOD | $PYTHON -
+
+# join all versioning strings, on some systems
+# major/minor numbers could be in different list elements
+from sysconfig import *
+e = get_config_var('VERSION')
+if e is not None:
+	print(e)
+EOD`
+
+		if test -z "$ac_python_version"; then
+			if test -n "$PYTHON_VERSION"; then
+				ac_python_version=$PYTHON_VERSION
+			else
+				ac_python_version=`$PYTHON -c "import sys; \
+					print ("%d.%d" % sys.version_info[[:2]])"`
+			fi
+		fi
+
+		# Make the versioning information available to the compiler
+		AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"],
+                                   [If available, contains the Python version number currently in use.])
+
+		# First, the library directory:
+		ac_python_libdir=`cat<<EOD | $PYTHON -
+
+# There should be only one
+$IMPORT_SYSCONFIG
+e = sysconfig.get_config_var('LIBDIR')
+if e is not None:
+	print (e)
+EOD`
+
+		# Now, for the library:
+		ac_python_library=`cat<<EOD | $PYTHON -
+
+$IMPORT_SYSCONFIG
+c = sysconfig.get_config_vars()
+if 'LDVERSION' in c:
+	print ('python'+c[['LDVERSION']])
+else:
+	print ('python'+c[['VERSION']])
+EOD`
+
+		# This small piece shamelessly adapted from PostgreSQL python macro;
+		# credits goes to momjian, I think. I'd like to put the right name
+		# in the credits, if someone can point me in the right direction... ?
+		#
+		if test -n "$ac_python_libdir" -a -n "$ac_python_library"
+		then
+			# use the official shared library
+			ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
+			PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library"
+		else
+			# old way: use libpython from python_configdir
+			ac_python_libdir=`$PYTHON -c \
+			  "from sysconfig import get_python_lib as f; \
+			  import os; \
+			  print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
+			PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version"
+		fi
+
+		if test -z "$PYTHON_LIBS"; then
+			AC_MSG_WARN([
+  Cannot determine location of your Python DSO. Please check it was installed with
+  dynamic libraries enabled, or try setting PYTHON_LIBS by hand.
+			])
+			if ! $ax_python_devel_optional; then
+			   AC_MSG_ERROR([Giving up])
+			fi
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+		fi
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   AC_MSG_RESULT([$PYTHON_LIBS])
+	   AC_SUBST([PYTHON_LIBS])
+
+	   #
+	   # Check for site packages
+	   #
+	   AC_MSG_CHECKING([for Python site-packages path])
+	   if test -z "$PYTHON_SITE_PKG"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			PYTHON_SITE_PKG=`$PYTHON -c "
+$IMPORT_SYSCONFIG;
+if hasattr(sysconfig, 'get_default_scheme'):
+    scheme = sysconfig.get_default_scheme()
+else:
+    scheme = sysconfig._get_default_scheme()
+if scheme == 'posix_local':
+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
+    scheme = 'posix_prefix'
+prefix = '$prefix'
+if prefix == 'NONE':
+    prefix = '$ac_default_prefix'
+sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix})
+print(sitedir)"`
+		else
+			# distutils.sysconfig way
+			PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_lib(0,0));"`
+		fi
+	   fi
+	   AC_MSG_RESULT([$PYTHON_SITE_PKG])
+	   AC_SUBST([PYTHON_SITE_PKG])
+
+	   #
+	   # Check for platform-specific site packages
+	   #
+	   AC_MSG_CHECKING([for Python platform specific site-packages path])
+	   if test -z "$PYTHON_PLATFORM_SITE_PKG"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "
+$IMPORT_SYSCONFIG;
+if hasattr(sysconfig, 'get_default_scheme'):
+    scheme = sysconfig.get_default_scheme()
+else:
+    scheme = sysconfig._get_default_scheme()
+if scheme == 'posix_local':
+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
+    scheme = 'posix_prefix'
+prefix = '$prefix'
+if prefix == 'NONE':
+    prefix = '$ac_default_prefix'
+sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase': prefix})
+print(sitedir)"`
+		else
+			# distutils.sysconfig way
+			PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_lib(1,0));"`
+		fi
+	   fi
+	   AC_MSG_RESULT([$PYTHON_PLATFORM_SITE_PKG])
+	   AC_SUBST([PYTHON_PLATFORM_SITE_PKG])
+
+	   #
+	   # libraries which must be linked in when embedding
+	   #
+	   AC_MSG_CHECKING(python extra libraries)
+	   if test -z "$PYTHON_EXTRA_LIBS"; then
+	      PYTHON_EXTRA_LIBS=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+                conf = sysconfig.get_config_var; \
+                print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
+	   fi
+	   AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
+	   AC_SUBST(PYTHON_EXTRA_LIBS)
+
+	   #
+	   # linking flags needed when embedding
+	   #
+	   AC_MSG_CHECKING(python extra linking flags)
+	   if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+		PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+			conf = sysconfig.get_config_var; \
+			print (conf('LINKFORSHARED'))"`
+		# Hack for macos, it sticks this in here.
+		PYTHON_EXTRA_LDFLAGS=`echo $PYTHON_EXTRA_LDFLAGS | sed 's/CoreFoundation.*$/CoreFoundation/'`
+	   fi
+	   AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
+	   AC_SUBST(PYTHON_EXTRA_LDFLAGS)
+
+           if test "$ax_python_devel_check" = "yes"; then
+               #
+	       # final check to see if everything compiles alright
+	       #
+	       AC_MSG_CHECKING([consistency of all components of python development environment])
+	       # save current global flags
+	       ac_save_LIBS="$LIBS"
+	       ac_save_LDFLAGS="$LDFLAGS"
+	       ac_save_CPPFLAGS="$CPPFLAGS"
+	       LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS"
+	       LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS"
+	       CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+	       AC_LANG_PUSH([C])
+	       AC_LINK_IFELSE([
+	           AC_LANG_PROGRAM([[#include <Python.h>]],
+                                   [[Py_Initialize();]])
+                              ],[pythonexists=yes],[pythonexists=no])
+	       AC_LANG_POP([C])
+	       # turn back to default flags
+	       CPPFLAGS="$ac_save_CPPFLAGS"
+	       LIBS="$ac_save_LIBS"
+	       LDFLAGS="$ac_save_LDFLAGS"
+	       AC_MSG_RESULT([$pythonexists])
+
+	       if test ! "x$pythonexists" = "xyes"; then
+	           AC_MSG_WARN([
+  Could not link test program to Python. Maybe the main Python library has been
+  installed in some non-standard library path. If so, pass it to configure,
+  via the LIBS environment variable.
+  Example: ./configure LIBS="-L/usr/non-standard-path/python/lib"
+  ============================================================================
+   ERROR!
+   You probably have to install the development version of the Python package
+   for your distribution.  The exact name of this package varies among them.
+  ============================================================================
+	      ])
+	          if ! $ax_python_devel_optional; then
+		     AC_MSG_ERROR([Giving up])
+	          fi
+	          ax_python_devel_found=no
+	          PYTHON_VERSION=""
+	      fi
+	   fi
+	fi
+        AC_SUBST([ax_python_interpreter])
+        AC_MSG_CHECKING([result of having a Python interpreter])
+	if test "$ax_python_interpreter" = "yes"; then
+	   AC_MSG_RESULT([yes])
+        else
+	   AC_MSG_RESULT([no])
+	fi
+
+	#
+	# all done!
+	#
+])
diff --git a/libgm2/config.h.in b/libgm2/config.h.in
index f9710ffde8a..bd0c3237f4b 100644
--- a/libgm2/config.h.in
+++ b/libgm2/config.h.in
@@ -152,6 +152,9 @@
 /* Define to 1 if you have the <pwd.h> header file. */
 #undef HAVE_PWD_H
 
+/* If available, contains the Python version number currently in use. */
+#undef HAVE_PYTHON
+
 /* function rand exists */
 #undef HAVE_RAND
 
diff --git a/libgm2/configure b/libgm2/configure
index a907d8813dc..e522e73d4db 100755
--- a/libgm2/configure
+++ b/libgm2/configure
@@ -647,8 +647,20 @@ BUILD_PIMLIB_FALSE
 BUILD_PIMLIB_TRUE
 GM2_FOR_TARGET
 CC_FOR_BUILD
+PICFLAG
 enable_static
 enable_shared
+HAVE_PYTHON_INTERPRETER_FALSE
+HAVE_PYTHON_INTERPRETER_TRUE
+ax_python_interpreter
+PYTHON_EXTRA_LDFLAGS
+PYTHON_EXTRA_LIBS
+PYTHON_PLATFORM_SITE_PKG
+PYTHON_SITE_PKG
+PYTHON_LIBS
+PYTHON_CPPFLAGS
+PYTHON
+PYTHON_VERSION
 ENABLE_DARWIN_AT_RPATH_FALSE
 ENABLE_DARWIN_AT_RPATH_TRUE
 OTOOL64
@@ -832,7 +844,8 @@ CPP
 CXX
 CXXFLAGS
 CCC
-CXXCPP'
+CXXCPP
+PYTHON_VERSION'
 
 
 # Initialize some variables set by options.
@@ -1507,6 +1520,10 @@ Some influential environment variables:
   CXXCPP      C++ preprocessor
   CCAS        assembler compiler command (defaults to CC)
   CCASFLAGS   assembler compiler flags (defaults to CFLAGS)
+  PYTHON_VERSION
+              The installed Python version to use, for example '2.3'. This
+              string will be appended to the Python interpreter canonical
+              name.
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -15241,7 +15258,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 15244 "configure"
+#line 15261 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15347,7 +15364,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 15350 "configure"
+#line 15367 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18689,6 +18706,579 @@ else
 fi
 
 
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking starting ax_python_devel" >&5
+$as_echo_n "checking starting ax_python_devel... " >&6; }
+	# Get whether it's optional
+	if test -z "no"; then
+           { $as_echo "$as_me:${as_lineno-$LINENO}: checking having a Python interpreter is not optional" >&5
+$as_echo_n "checking having a Python interpreter is not optional... " >&6; }
+	   ax_python_devel_optional=false
+	else
+           { $as_echo "$as_me:${as_lineno-$LINENO}: checking having a Python interpreter is optional" >&5
+$as_echo_n "checking having a Python interpreter is optional... " >&6; }
+	   ax_python_devel_optional=no
+	fi
+	# Should we test for python development?
+	if test -z "no"; then
+	   ax_python_devel_check=yes
+	else
+           { $as_echo "$as_me:${as_lineno-$LINENO}: checking not checking for Python development" >&5
+$as_echo_n "checking not checking for Python development... " >&6; }
+	   ax_python_devel_check=no
+	fi
+	ax_python_devel_found=yes
+        ax_python_interpreter=yes
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking do we have a Python interpreter" >&5
+$as_echo_n "checking do we have a Python interpreter... " >&6; }
+	#
+	# Allow the use of a (user set) custom python version
+	#
+
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python version" >&5
+$as_echo_n "checking for python version... " >&6; }
+	for version in $PYTHON_VERSION "" 3 2; do
+           # Extract the first word of "python[$version]", so it can be a program name with args.
+set dummy python$version; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+           { $as_echo "$as_me:${as_lineno-$LINENO}: checking $version" >&5
+$as_echo_n "checking $version... " >&6; }
+           if test -z "$PYTHON"; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking no" >&5
+$as_echo_n "checking no... " >&6; }
+              ax_python_devel_found=no
+              ax_python_interpreter=no
+           else
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking yes" >&5
+$as_echo_n "checking yes... " >&6; }
+              ax_python_devel_found=yes
+              ax_python_interpreter=yes
+	      PYTHON_VERSION=$version
+	      break
+	   fi
+	done
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check for a version of Python >= 2.1.0
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+	   ac_supports_python_ver=`$PYTHON -c "import sys; \
+		ver = sys.version.split ()[0]; \
+		print (ver >= '2.1.0')"`
+	   if test "$ac_supports_python_ver" != "True"; then
+		if test -z "$PYTHON_NOVERSIONCHECK"; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+This version of the AC_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+" >&5
+$as_echo "$as_me: WARNING:
+This version of the AC_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+" >&2;}
+			if ! $ax_python_devel_optional; then
+			   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Giving up
+See \`config.log' for more details" "$LINENO" 5; }
+			fi
+			ax_python_devel_found=no
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found, incorrect version" >&5
+$as_echo_n "checking no interpreter found, incorrect version... " >&6; }
+			PYTHON_VERSION=""
+                        ax_python_interpreter=no
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found" >&5
+$as_echo_n "checking no interpreter found... " >&6; }
+		else
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+$as_echo "skip at user request" >&6; }
+		fi
+	   else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # If the macro parameter ``version'' is set, honour it.
+	   # A Python shim class, VPy, is used to implement correct version comparisons via
+	   # string expressions, since e.g. a naive textual ">= 2.7.3" won't work for
+	   # Python 2.7.10 (the ".1" being evaluated as less than ".3").
+	   #
+	   if test -n >= '3.0'; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '3.0'" >&5
+$as_echo_n "checking for a version of Python >= '3.0'... " >&6; }
+                cat << EOF > ax_python_devel_vpy.py
+class VPy:
+    def vtup(self, s):
+        return tuple(map(int, s.strip().replace("rc", ".").split(".")))
+    def __init__(self):
+        import sys
+        self.vpy = tuple(sys.version_info)[:3]
+    def __eq__(self, s):
+        return self.vpy == self.vtup(s)
+    def __ne__(self, s):
+        return self.vpy != self.vtup(s)
+    def __lt__(self, s):
+        return self.vpy < self.vtup(s)
+    def __gt__(self, s):
+        return self.vpy > self.vtup(s)
+    def __le__(self, s):
+        return self.vpy <= self.vtup(s)
+    def __ge__(self, s):
+        return self.vpy >= self.vtup(s)
+EOF
+		ac_supports_python_ver=`$PYTHON -c """import ax_python_devel_vpy; \
+  ver = ax_python_devel_vpy.VPy(); \
+  print (ver >= '3.0') """`
+                rm -rf ax_python_devel_vpy*.py* __pycache__/ax_python_devel_vpy*.py*
+		if test "$ac_supports_python_ver" = "True"; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		else
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: this package requires Python >= '3.0'.
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See \`\`configure --help'' for reference.
+" >&5
+$as_echo "$as_me: WARNING: this package requires Python >= '3.0'.
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See \`\`configure --help'' for reference.
+" >&2;}
+			if ! $ax_python_devel_optional; then
+			   as_fn_error $? "Giving up" "$LINENO" 5
+			fi
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking no interpreter found, wrong version >= '3.0'" >&5
+$as_echo_n "checking no interpreter found, wrong version >= '3.0'... " >&6; }
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+			# Wrong version of the interpreter.
+                        ax_python_interpreter=no
+		fi
+	   fi
+	fi
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check if you have distutils, else fail
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the sysconfig Python package" >&5
+$as_echo_n "checking for the sysconfig Python package... " >&6; }
+	   ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`
+	   if test $? -eq 0; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+		IMPORT_SYSCONFIG="import sysconfig"
+	   else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+$as_echo_n "checking for the distutils Python package... " >&6; }
+		ac_sysconfig_result=`$PYTHON -c "from distutils import sysconfig" 2>&1`
+		if test $? -eq 0; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+			IMPORT_SYSCONFIG="from distutils import sysconfig"
+		else
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot import Python module \"distutils\".
+Please check your Python installation. The error was:
+$ac_sysconfig_result" >&5
+$as_echo "$as_me: WARNING: cannot import Python module \"distutils\".
+Please check your Python installation. The error was:
+$ac_sysconfig_result" >&2;}
+			if ! $ax_python_devel_optional; then
+			   as_fn_error $? "Giving up" "$LINENO" 5
+			fi
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+		fi
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   #
+	   # Check for Python include path
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+$as_echo_n "checking for Python include path... " >&6; }
+	   if test -z "$PYTHON_CPPFLAGS"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			# sysconfig module has different functions
+			python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_path ('include'));"`
+			plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_path ('platinclude'));"`
+		else
+			# old distutils way
+			python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_inc ());"`
+			plat_python_path=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_inc (plat_specific=1));"`
+		fi
+		if test -n "${python_path}"; then
+			if test "${plat_python_path}" != "${python_path}"; then
+				python_path="-I$python_path -I$plat_python_path"
+			else
+				python_path="-I$python_path"
+			fi
+		fi
+		PYTHON_CPPFLAGS=$python_path
+	   fi
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+$as_echo "$PYTHON_CPPFLAGS" >&6; }
+
+
+	   #
+	   # Check for Python library path
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+$as_echo_n "checking for Python library path... " >&6; }
+	   if test -z "$PYTHON_LIBS"; then
+		# (makes two attempts to ensure we've got a version number
+		# from the interpreter)
+		ac_python_version=`cat<<EOD | $PYTHON -
+
+# join all versioning strings, on some systems
+# major/minor numbers could be in different list elements
+from sysconfig import *
+e = get_config_var('VERSION')
+if e is not None:
+	print(e)
+EOD`
+
+		if test -z "$ac_python_version"; then
+			if test -n "$PYTHON_VERSION"; then
+				ac_python_version=$PYTHON_VERSION
+			else
+				ac_python_version=`$PYTHON -c "import sys; \
+					print ("%d.%d" % sys.version_info[:2])"`
+			fi
+		fi
+
+		# Make the versioning information available to the compiler
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PYTHON "$ac_python_version"
+_ACEOF
+
+
+		# First, the library directory:
+		ac_python_libdir=`cat<<EOD | $PYTHON -
+
+# There should be only one
+$IMPORT_SYSCONFIG
+e = sysconfig.get_config_var('LIBDIR')
+if e is not None:
+	print (e)
+EOD`
+
+		# Now, for the library:
+		ac_python_library=`cat<<EOD | $PYTHON -
+
+$IMPORT_SYSCONFIG
+c = sysconfig.get_config_vars()
+if 'LDVERSION' in c:
+	print ('python'+c['LDVERSION'])
+else:
+	print ('python'+c['VERSION'])
+EOD`
+
+		# This small piece shamelessly adapted from PostgreSQL python macro;
+		# credits goes to momjian, I think. I'd like to put the right name
+		# in the credits, if someone can point me in the right direction... ?
+		#
+		if test -n "$ac_python_libdir" -a -n "$ac_python_library"
+		then
+			# use the official shared library
+			ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
+			PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library"
+		else
+			# old way: use libpython from python_configdir
+			ac_python_libdir=`$PYTHON -c \
+			  "from sysconfig import get_python_lib as f; \
+			  import os; \
+			  print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
+			PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version"
+		fi
+
+		if test -z "$PYTHON_LIBS"; then
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+  Cannot determine location of your Python DSO. Please check it was installed with
+  dynamic libraries enabled, or try setting PYTHON_LIBS by hand.
+			" >&5
+$as_echo "$as_me: WARNING:
+  Cannot determine location of your Python DSO. Please check it was installed with
+  dynamic libraries enabled, or try setting PYTHON_LIBS by hand.
+			" >&2;}
+			if ! $ax_python_devel_optional; then
+			   as_fn_error $? "Giving up" "$LINENO" 5
+			fi
+			ax_python_devel_found=no
+			PYTHON_VERSION=""
+		fi
+	   fi
+	fi
+
+	if test "$ax_python_devel_found" = "yes"; then
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
+$as_echo "$PYTHON_LIBS" >&6; }
+
+
+	   #
+	   # Check for site packages
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+$as_echo_n "checking for Python site-packages path... " >&6; }
+	   if test -z "$PYTHON_SITE_PKG"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			PYTHON_SITE_PKG=`$PYTHON -c "
+$IMPORT_SYSCONFIG;
+if hasattr(sysconfig, 'get_default_scheme'):
+    scheme = sysconfig.get_default_scheme()
+else:
+    scheme = sysconfig._get_default_scheme()
+if scheme == 'posix_local':
+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
+    scheme = 'posix_prefix'
+prefix = '$prefix'
+if prefix == 'NONE':
+    prefix = '$ac_default_prefix'
+sitedir = sysconfig.get_path('purelib', scheme, vars={'base': prefix})
+print(sitedir)"`
+		else
+			# distutils.sysconfig way
+			PYTHON_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_lib(0,0));"`
+		fi
+	   fi
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+$as_echo "$PYTHON_SITE_PKG" >&6; }
+
+
+	   #
+	   # Check for platform-specific site packages
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python platform specific site-packages path" >&5
+$as_echo_n "checking for Python platform specific site-packages path... " >&6; }
+	   if test -z "$PYTHON_PLATFORM_SITE_PKG"; then
+		if test "$IMPORT_SYSCONFIG" = "import sysconfig"; then
+			PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "
+$IMPORT_SYSCONFIG;
+if hasattr(sysconfig, 'get_default_scheme'):
+    scheme = sysconfig.get_default_scheme()
+else:
+    scheme = sysconfig._get_default_scheme()
+if scheme == 'posix_local':
+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
+    scheme = 'posix_prefix'
+prefix = '$prefix'
+if prefix == 'NONE':
+    prefix = '$ac_default_prefix'
+sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase': prefix})
+print(sitedir)"`
+		else
+			# distutils.sysconfig way
+			PYTHON_PLATFORM_SITE_PKG=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+				print (sysconfig.get_python_lib(1,0));"`
+		fi
+	   fi
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_PLATFORM_SITE_PKG" >&5
+$as_echo "$PYTHON_PLATFORM_SITE_PKG" >&6; }
+
+
+	   #
+	   # libraries which must be linked in when embedding
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+$as_echo_n "checking python extra libraries... " >&6; }
+	   if test -z "$PYTHON_EXTRA_LIBS"; then
+	      PYTHON_EXTRA_LIBS=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+                conf = sysconfig.get_config_var; \
+                print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
+	   fi
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+
+
+	   #
+	   # linking flags needed when embedding
+	   #
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+$as_echo_n "checking python extra linking flags... " >&6; }
+	   if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+		PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "$IMPORT_SYSCONFIG; \
+			conf = sysconfig.get_config_var; \
+			print (conf('LINKFORSHARED'))"`
+		# Hack for macos, it sticks this in here.
+		PYTHON_EXTRA_LDFLAGS=`echo $PYTHON_EXTRA_LDFLAGS | sed 's/CoreFoundation.*$/CoreFoundation/'`
+	   fi
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+
+
+           if test "$ax_python_devel_check" = "yes"; then
+               #
+	       # final check to see if everything compiles alright
+	       #
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+	       # save current global flags
+	       ac_save_LIBS="$LIBS"
+	       ac_save_LDFLAGS="$LDFLAGS"
+	       ac_save_CPPFLAGS="$CPPFLAGS"
+	       LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS"
+	       LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS"
+	       CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+	       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+	       if test x$gcc_no_link = xyes; then
+  as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	           #include <Python.h>
+int
+main ()
+{
+Py_Initialize();
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  pythonexists=yes
+else
+  pythonexists=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+	       # turn back to default flags
+	       CPPFLAGS="$ac_save_CPPFLAGS"
+	       LIBS="$ac_save_LIBS"
+	       LDFLAGS="$ac_save_LDFLAGS"
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+$as_echo "$pythonexists" >&6; }
+
+	       if test ! "x$pythonexists" = "xyes"; then
+	           { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+  Could not link test program to Python. Maybe the main Python library has been
+  installed in some non-standard library path. If so, pass it to configure,
+  via the LIBS environment variable.
+  Example: ./configure LIBS=\"-L/usr/non-standard-path/python/lib\"
+  ============================================================================
+   ERROR!
+   You probably have to install the development version of the Python package
+   for your distribution.  The exact name of this package varies among them.
+  ============================================================================
+	      " >&5
+$as_echo "$as_me: WARNING:
+  Could not link test program to Python. Maybe the main Python library has been
+  installed in some non-standard library path. If so, pass it to configure,
+  via the LIBS environment variable.
+  Example: ./configure LIBS=\"-L/usr/non-standard-path/python/lib\"
+  ============================================================================
+   ERROR!
+   You probably have to install the development version of the Python package
+   for your distribution.  The exact name of this package varies among them.
+  ============================================================================
+	      " >&2;}
+	          if ! $ax_python_devel_optional; then
+		     as_fn_error $? "Giving up" "$LINENO" 5
+	          fi
+	          ax_python_devel_found=no
+	          PYTHON_VERSION=""
+	      fi
+	   fi
+	fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking result of having a Python interpreter" >&5
+$as_echo_n "checking result of having a Python interpreter... " >&6; }
+	if test "$ax_python_interpreter" = "yes"; then
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        else
+	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	fi
+
+	#
+	# all done!
+	#
+
+ if test x$ax_python_interpreter = xyes; then
+  HAVE_PYTHON_INTERPRETER_TRUE=
+  HAVE_PYTHON_INTERPRETER_FALSE='#'
+else
+  HAVE_PYTHON_INTERPRETER_TRUE='#'
+  HAVE_PYTHON_INTERPRETER_FALSE=
+fi
+
 
 
 
@@ -19406,6 +19996,89 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+case "${host}" in
+    # PIC is the default on some targets or must not be used.
+    *-*-darwin*)
+	# For darwin, common symbols are not allowed in MH_DYLIB files
+	case "${CFLAGS}" in
+	  # If we are using a compiler supporting mdynamic-no-pic
+	  # and the option has been tested as safe to add, then cancel
+	  # it here, since the code generated is incompatible with shared
+	  # libs.
+	  *-mdynamic-no-pic*) PICFLAG='-fno-common -mno-dynamic-no-pic' ;;
+	  *) PICFLAG=-fno-common ;;
+	esac
+	;;
+    alpha*-dec-osf5*)
+	# PIC is the default.
+	;;
+    hppa*64*-*-hpux*)
+	# PIC is the default for 64-bit PA HP-UX.
+	;;
+    i[34567]86-*-cygwin* | x86_64-*-cygwin*)
+	;;
+    i[34567]86-*-mingw* | x86_64-*-mingw*)
+	;;
+    i[34567]86-*-interix[3-9]*)
+	# Interix 3.x gcc -fpic/-fPIC options generate broken code.
+	# Instead, we relocate shared libraries at runtime.
+	;;
+    i[34567]86-*-nto-qnx*)
+	# QNX uses GNU C++, but need to define -shared option too, otherwise
+	# it will coredump.
+	PICFLAG='-fPIC -shared'
+	;;
+    i[34567]86-pc-msdosdjgpp*)
+	# DJGPP does not support shared libraries at all.
+	;;
+    ia64*-*-hpux*)
+	# On IA64 HP-UX, PIC is the default but the pic flag
+	# sets the default TLS model and affects inlining.
+	PICFLAG=-fPIC
+	;;
+    loongarch*-*-*)
+	PICFLAG=-fpic
+	;;
+    mips-sgi-irix6*)
+	# PIC is the default.
+	;;
+    rs6000-ibm-aix* | powerpc-ibm-aix*)
+	# All AIX code is PIC.
+	;;
+
+    # Some targets support both -fPIC and -fpic, but prefer the latter.
+    # FIXME: Why?
+    i[34567]86-*-* | x86_64-*-*)
+	PICFLAG=-fpic
+	;;
+    # FIXME: Override -fPIC default in libgcc only?
+    sh-*-linux* | sh[2346lbe]*-*-linux*)
+	PICFLAG=-fpic
+	;;
+    sh*-*-netbsd*)
+	PICFLAG=-fpic
+	;;
+    # Default to -fPIC unless specified otherwise.
+    *)
+	PICFLAG=-fPIC
+	;;
+esac
+
+# If the user explicitly uses -fpic/-fPIC, keep that.
+case "${CFLAGS}" in
+    *-fpic*)
+	PICFLAG=-fpic
+	;;
+    *-fPIC*)
+	PICFLAG=-fPIC
+	;;
+esac
+
+
+
+
+
+
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking m2 front end checking c library for access" >&5
@@ -23312,6 +23985,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH
   as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_PYTHON_INTERPRETER_TRUE}" && test -z "${HAVE_PYTHON_INTERPRETER_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_PYTHON_INTERPRETER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${BUILD_PIMLIB_TRUE}" && test -z "${BUILD_PIMLIB_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_PIMLIB\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/libgm2/configure.ac b/libgm2/configure.ac
index bd8b3c3e35d..8f71649cd16 100644
--- a/libgm2/configure.ac
+++ b/libgm2/configure.ac
@@ -259,7 +259,8 @@ LT_INIT
 AC_LIBTOOL_DLOPEN
 
 AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
-
+AC_PYTHON_DEVEL([>= '3.0'],[no],[no])
+AM_CONDITIONAL([HAVE_PYTHON_INTERPRETER], [test x$ax_python_interpreter = xyes])
 AC_SUBST(enable_shared)
 AC_SUBST(enable_static)
 
@@ -302,6 +303,8 @@ AC_PROG_CC
 m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
 
 AC_SUBST(CFLAGS)
+GCC_PICFLAG
+AC_SUBST([PICFLAG])
 
 AC_DEFUN([GM2_UNDEF],[
   $as_echo "#undef HAVE_$1" >>confdefs.h
diff --git a/libgm2/libm2cor/Makefile.am b/libgm2/libm2cor/Makefile.am
index edf9243a5b8..dc8478b449a 100644
--- a/libgm2/libm2cor/Makefile.am
+++ b/libgm2/libm2cor/Makefile.am
@@ -103,7 +103,8 @@ M2DEFS = Executive.def \
          TimerHandler.def
 
 M2MODS = Executive.mod \
-         SYSTEM.mod  TimerHandler.mod
+         TimerHandler.mod \
+         SYSTEM.mod
 
 toolexeclib_LTLIBRARIES = libm2cor.la
 
@@ -112,7 +113,9 @@ 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_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
@@ -121,6 +124,7 @@ libm2cor_la_M2FLAGS = \
     -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \
     -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
     -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
+    -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-cor-common \
     -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor
 
 if TARGET_DARWIN
@@ -133,26 +137,33 @@ libm2cor_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/
 endif
 
 libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags)
-BUILT_SOURCES = SYSTEM.def
+BUILT_SOURCES = SYSTEM.def SYSTEM.mod
 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 -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
+             $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.def \
+             $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod \
+             -I$(GM2_SRC)/gm2-libs-cor-common \
+             -I$(GM2_SRC)/gm2-libs-coroutines \
+             -I$(GM2_SRC)/gm2-libs \
+             -I$(GM2_SRC)/gm2-libs-iso \
              "$(GM2_FOR_TARGET)" $@
 
+SYSTEM.mod: $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod
+	cp $< $@
+
 .mod.lo:
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	$(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 $@
+	$(LIBTOOL) --tag CXX --mode=compile \
+                   $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@
 
 install-data-local: force
 	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
diff --git a/libgm2/libm2cor/Makefile.in b/libgm2/libm2cor/Makefile.in
index 19efef15b82..fe2fe468f60 100644
--- a/libgm2/libm2cor/Makefile.in
+++ b/libgm2/libm2cor/Makefile.in
@@ -108,7 +108,8 @@ target_triplet = @target@
 @BUILD_CORLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/
 subdir = libm2cor
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -159,8 +160,8 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
 libm2cor_la_LIBADD =
-@BUILD_CORLIB_TRUE@am__objects_1 = Executive.lo SYSTEM.lo \
-@BUILD_CORLIB_TRUE@	TimerHandler.lo
+@BUILD_CORLIB_TRUE@am__objects_1 = Executive.lo TimerHandler.lo \
+@BUILD_CORLIB_TRUE@	SYSTEM.lo
 @BUILD_CORLIB_TRUE@am_libm2cor_la_OBJECTS = $(am__objects_1) \
 @BUILD_CORLIB_TRUE@	KeyBoardLEDs.lo
 libm2cor_la_OBJECTS = $(am_libm2cor_la_OBJECTS)
@@ -314,6 +315,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -332,6 +342,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -468,13 +479,16 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_CORLIB_TRUE@         TimerHandler.def
 
 @BUILD_CORLIB_TRUE@M2MODS = Executive.mod \
-@BUILD_CORLIB_TRUE@         SYSTEM.mod  TimerHandler.mod
+@BUILD_CORLIB_TRUE@         TimerHandler.mod \
+@BUILD_CORLIB_TRUE@         SYSTEM.mod
 
 @BUILD_CORLIB_TRUE@toolexeclib_LTLIBRARIES = libm2cor.la
 @BUILD_CORLIB_TRUE@libm2cor_la_SOURCES = $(M2MODS) KeyBoardLEDs.cc
 @BUILD_CORLIB_TRUE@nodist_EXTRA_libm2cor_la_SOURCES = dummy.c  ## forces automake to generate the LINK definition
 @BUILD_CORLIB_TRUE@libm2cordir = libm2cor
-@BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
+@BUILD_CORLIB_TRUE@libm2cor_la_DEPENDENCIES = SYSTEM.def \
+@BUILD_CORLIB_TRUE@     $(addsuffix .lo, $(basename $(libm2cor_la_SOURCES)))
+
 @BUILD_CORLIB_TRUE@libm2cor_la_CFLAGS = \
 @BUILD_CORLIB_TRUE@    -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
 @BUILD_CORLIB_TRUE@    -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
@@ -483,6 +497,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_CORLIB_TRUE@    -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-coroutines \
 @BUILD_CORLIB_TRUE@    -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
 @BUILD_CORLIB_TRUE@    -fm2-pathname=m2iso -I$(GM2_SRC)/gm2-libs-iso \
+@BUILD_CORLIB_TRUE@    -fm2-pathname=m2cor -I. -I$(GM2_SRC)/gm2-libs-cor-common \
 @BUILD_CORLIB_TRUE@    -fm2-g -g -Wcase-enum -Wreturn-type -fcase -fm2-prefix=m2cor
 
 @BUILD_CORLIB_TRUE@@TARGET_DARWIN_FALSE@libm2cor_la_link_flags =  \
@@ -490,7 +505,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_CORLIB_TRUE@@TARGET_DARWIN_TRUE@libm2cor_la_link_flags = -Wl,-undefined,dynamic_lookup \
 @BUILD_CORLIB_TRUE@@TARGET_DARWIN_TRUE@	$(am__append_1)
 @BUILD_CORLIB_TRUE@libm2cor_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2cor_la_link_flags)
-@BUILD_CORLIB_TRUE@BUILT_SOURCES = SYSTEM.def
+@BUILD_CORLIB_TRUE@BUILT_SOURCES = SYSTEM.def SYSTEM.mod
 @BUILD_CORLIB_TRUE@CLEANFILES = SYSTEM.def
 @BUILD_CORLIB_TRUE@M2LIBDIR = /m2/m2cor/
 all: $(BUILT_SOURCES)
@@ -816,19 +831,26 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES
 
 @[email protected]: Makefile
 @BUILD_CORLIB_TRUE@	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
-@BUILD_CORLIB_TRUE@             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.def \
-@BUILD_CORLIB_TRUE@             $(GM2_SRC)/gm2-libs-coroutines/SYSTEM.mod \
-@BUILD_CORLIB_TRUE@             -I$(GM2_SRC)/gm2-libs-coroutines -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
+@BUILD_CORLIB_TRUE@             $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.def \
+@BUILD_CORLIB_TRUE@             $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod \
+@BUILD_CORLIB_TRUE@             -I$(GM2_SRC)/gm2-libs-cor-common \
+@BUILD_CORLIB_TRUE@             -I$(GM2_SRC)/gm2-libs-coroutines \
+@BUILD_CORLIB_TRUE@             -I$(GM2_SRC)/gm2-libs \
+@BUILD_CORLIB_TRUE@             -I$(GM2_SRC)/gm2-libs-iso \
 @BUILD_CORLIB_TRUE@             "$(GM2_FOR_TARGET)" $@
 
+@[email protected]: $(GM2_SRC)/gm2-libs-cor-common/SYSTEM.mod
+@BUILD_CORLIB_TRUE@	cp $< $@
+
 @[email protected]:
-@BUILD_CORLIB_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+@BUILD_CORLIB_TRUE@	$(LIBTOOL) --tag CC \
+@BUILD_CORLIB_TRUE@                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 @BUILD_CORLIB_TRUE@                   --mode=compile $(GM2_FOR_TARGET) \
 @BUILD_CORLIB_TRUE@                   -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2cor_la_M2FLAGS) $< -o $@
 
 @[email protected]:
-@BUILD_CORLIB_TRUE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) \
-@BUILD_CORLIB_TRUE@                   -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@
+@BUILD_CORLIB_TRUE@	$(LIBTOOL) --tag CXX --mode=compile \
+@BUILD_CORLIB_TRUE@                   $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) $(libm2cor_la_CFLAGS) $< -o $@
 
 @BUILD_CORLIB_TRUE@install-data-local: force
 @BUILD_CORLIB_TRUE@	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
diff --git a/libgm2/libm2iso/Makefile.am b/libgm2/libm2iso/Makefile.am
index 1af1d6aeb93..b271e34b18c 100644
--- a/libgm2/libm2iso/Makefile.am
+++ b/libgm2/libm2iso/Makefile.am
@@ -53,6 +53,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -90,7 +91,9 @@ AM_MAKEFLAGS = \
 	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
 	"DESTDIR=$(DESTDIR)" \
 	"WERROR=$(WERROR)" \
-        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
+	"PYTHON=$(PYTHON)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
 FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@@ -205,6 +208,7 @@ libm2iso_la_CFLAGS = \
 libm2iso_la_M2FLAGS = \
   -fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \
   -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
+  -fm2-pathname=m2pim -I../libm2pim \
   -fiso -fextended-opaque -fm2-g -g -Wcase-enum \
   -Wall \
   -Wreturn-type -fcase -fm2-prefix=m2iso
@@ -219,31 +223,159 @@ libm2iso_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/
 endif
 
 libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags) -lm
-CLEANFILES = SYSTEM.def
-BUILT_SOURCES = SYSTEM.def
+CLEANFILES = \
+   SYSTEM.def SYSTEM.mod cbuiltin.def \
+   ShortComplex.def Complex.def LongComplex.def \
+   ShortComplex.mod Complex.mod LongComplex.mod
+BUILT_SOURCES = \
+   SYSTEM.def SYSTEM.mod cbuiltin.def \
+   ShortComplexMath.def ComplexMath.def LongComplexMath.def \
+   ShortComplexMath.mod ComplexMath.mod LongComplexMath.mod
 
 M2LIBDIR = /m2/m2iso/
 
 M2HEADER_FILES = m2rts.h
 
+GENERATED = \
+  SYSTEM.def \
+  SYSTEM.mod \
+  ../libm2pim/Builtins.def \
+  ../libm2pim/Builtins.mod \
+  ../libm2pim/cbuiltin.def
+
+if HAVE_PYTHON_INTERPRETER
+SYSTEM.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -D=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso \
+             -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
 SYSTEM.def: Makefile
 	bash $(GM2_SRC)/tools-src/makeSystem -fiso \
-             $(GM2_SRC)/gm2-libs-iso/SYSTEM.def \
-             $(GM2_SRC)/gm2-libs-iso/SYSTEM.mod \
-             -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \
+             $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \
+             $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \
+             -I$(GM2_SRC)/gm2-libs-iso \
+             -I$(GM2_SRC)/gm2-libs \
+             -I$(GM2_SRC)/gm2-libs-iso-common \
              "$(GM2_FOR_TARGET)" $@
+endif
+
+../libm2pim/Builtins.def:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def
+
+../libm2pim/Builtins.mod:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod
+
+../libm2pim/cbuiltin.def:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def
+
+if HAVE_PYTHON_INTERPRETER
+ShortComplexMath.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -D=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+ShortComplexMath.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+ShortComplexMath.mod: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+ShortComplexMath.mod: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+ComplexMath.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -D=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+ComplexMath.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+ComplexMath.mod: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+ComplexMath.mod: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+LongComplexMath.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -D=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+LongComplexMath.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+LongComplexMath.mod: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+             -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \
+             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+             -I=$(GM2_SRC)/gm2-libs-iso-common \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+LongComplexMath.mod: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+cbuiltin.def: ../libm2pim/cbuiltin.def
+	cp $< $@
+else
+cbuiltin.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@
+endif
+
+SYSTEM.mod: Makefile
+	cp $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod $@
+
+ComplexMath.lo: $(GENERATED) ComplexMath.def ComplexMath.mod
+LongComplexMath.lo: $(GENERATED) LongComplexMath.def LongComplexMath.mod
+ShortComplexMath.lo: $(GENERATED) ShortComplexMath.def ShortComplexMath.mod
 
-.mod.lo:
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+.mod.lo: $(BUILT_SOURCES)
+	$(LIBTOOL) --tag CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
                    $(GM2_FOR_TARGET) -c \
                    $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2iso_la_M2FLAGS) $< -o $@
 
 .cc.lo:
-	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \
+	$(LIBTOOL) --tag CXX --mode=compile \
+                   $(CXX) -c -I$(srcdir) \
                    $(CXXFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@
 
 .c.lo:
-	$(LIBTOOL) --tag=CC --mode=compile $(CC) -c -I$(srcdir) \
+	$(LIBTOOL) --tag CC --mode=compile \
+                   $(CC) -c -I$(srcdir) \
                    $(CFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@
 
 install-data-local: force
diff --git a/libgm2/libm2iso/Makefile.in b/libgm2/libm2iso/Makefile.in
index d6b143eaf23..37216b856c8 100644
--- a/libgm2/libm2iso/Makefile.in
+++ b/libgm2/libm2iso/Makefile.in
@@ -108,7 +108,8 @@ target_triplet = @target@
 @BUILD_ISOLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/
 subdir = libm2iso
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -340,6 +341,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -358,6 +368,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -447,6 +458,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -484,7 +496,9 @@ AM_MAKEFLAGS = \
 	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
 	"DESTDIR=$(DESTDIR)" \
 	"WERROR=$(WERROR)" \
-        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
+	"PYTHON=$(PYTHON)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
@@ -596,6 +610,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_ISOLIB_TRUE@libm2iso_la_M2FLAGS = \
 @BUILD_ISOLIB_TRUE@  -fm2-pathname=m2iso -I. -Ilibm2iso -I$(GM2_SRC)/gm2-libs-iso \
 @BUILD_ISOLIB_TRUE@  -fm2-pathname=m2pim -I$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@  -fm2-pathname=m2pim -I../libm2pim \
 @BUILD_ISOLIB_TRUE@  -fiso -fextended-opaque -fm2-g -g -Wcase-enum \
 @BUILD_ISOLIB_TRUE@  -Wall \
 @BUILD_ISOLIB_TRUE@  -Wreturn-type -fcase -fm2-prefix=m2iso
@@ -605,10 +620,25 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_ISOLIB_TRUE@@TARGET_DARWIN_TRUE@libm2iso_la_link_flags = -Wl,-undefined,dynamic_lookup \
 @BUILD_ISOLIB_TRUE@@TARGET_DARWIN_TRUE@	$(am__append_1)
 @BUILD_ISOLIB_TRUE@libm2iso_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2iso_la_link_flags) -lm
-@BUILD_ISOLIB_TRUE@CLEANFILES = SYSTEM.def
-@BUILD_ISOLIB_TRUE@BUILT_SOURCES = SYSTEM.def
+@BUILD_ISOLIB_TRUE@CLEANFILES = \
+@BUILD_ISOLIB_TRUE@   SYSTEM.def SYSTEM.mod cbuiltin.def \
+@BUILD_ISOLIB_TRUE@   ShortComplex.def Complex.def LongComplex.def \
+@BUILD_ISOLIB_TRUE@   ShortComplex.mod Complex.mod LongComplex.mod
+
+@BUILD_ISOLIB_TRUE@BUILT_SOURCES = \
+@BUILD_ISOLIB_TRUE@   SYSTEM.def SYSTEM.mod cbuiltin.def \
+@BUILD_ISOLIB_TRUE@   ShortComplexMath.def ComplexMath.def LongComplexMath.def \
+@BUILD_ISOLIB_TRUE@   ShortComplexMath.mod ComplexMath.mod LongComplexMath.mod
+
 @BUILD_ISOLIB_TRUE@M2LIBDIR = /m2/m2iso/
 @BUILD_ISOLIB_TRUE@M2HEADER_FILES = m2rts.h
+@BUILD_ISOLIB_TRUE@GENERATED = \
+@BUILD_ISOLIB_TRUE@  SYSTEM.def \
+@BUILD_ISOLIB_TRUE@  SYSTEM.mod \
+@BUILD_ISOLIB_TRUE@  ../libm2pim/Builtins.def \
+@BUILD_ISOLIB_TRUE@  ../libm2pim/Builtins.mod \
+@BUILD_ISOLIB_TRUE@  ../libm2pim/cbuiltin.def
+
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -933,24 +963,115 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES
 .PRECIOUS: Makefile
 
 
-@[email protected]: Makefile
-@BUILD_ISOLIB_TRUE@	bash $(GM2_SRC)/tools-src/makeSystem -fiso \
-@BUILD_ISOLIB_TRUE@             $(GM2_SRC)/gm2-libs-iso/SYSTEM.def \
-@BUILD_ISOLIB_TRUE@             $(GM2_SRC)/gm2-libs-iso/SYSTEM.mod \
-@BUILD_ISOLIB_TRUE@             -I$(GM2_SRC)/gm2-libs-iso -I$(GM2_SRC)/gm2-libs \
-@BUILD_ISOLIB_TRUE@             "$(GM2_FOR_TARGET)" $@
-
-@[email protected]:
-@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	bash $(GM2_SRC)/tools-src/makeSystem -fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.def \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs-iso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             "$(GM2_FOR_TARGET)" $@
+
+@BUILD_ISOLIB_TRUE@../libm2pim/Builtins.def:
+@BUILD_ISOLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def
+
+@BUILD_ISOLIB_TRUE@../libm2pim/Builtins.mod:
+@BUILD_ISOLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod
+
+@BUILD_ISOLIB_TRUE@../libm2pim/cbuiltin.def:
+@BUILD_ISOLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.def $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/ShortComplexMath.mod $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.def $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/ComplexMath.mod $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.def $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fiso \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso -I=$(GM2_SRC)/gm2-libs \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-iso-common \
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-iso-common/LongComplexMath.mod $@
+
+@BUILD_ISOLIB_TRUE@@[email protected]: ../libm2pim/cbuiltin.def
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	cp $< $@
+@BUILD_ISOLIB_TRUE@@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@
+
+@[email protected]: Makefile
+@BUILD_ISOLIB_TRUE@	cp $(GM2_SRC)/gm2-libs-iso-common/SYSTEM.mod $@
+
+@[email protected]: $(GENERATED) ComplexMath.def ComplexMath.mod
+@[email protected]: $(GENERATED) LongComplexMath.def LongComplexMath.mod
+@[email protected]: $(GENERATED) ShortComplexMath.def ShortComplexMath.mod
+
+@[email protected]: $(BUILT_SOURCES)
+@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag CC \
+@BUILD_ISOLIB_TRUE@                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
 @BUILD_ISOLIB_TRUE@                   $(GM2_FOR_TARGET) -c \
 @BUILD_ISOLIB_TRUE@                   $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2iso_la_M2FLAGS) $< -o $@
 
 @[email protected]:
-@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \
+@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag CXX --mode=compile \
+@BUILD_ISOLIB_TRUE@                   $(CXX) -c -I$(srcdir) \
 @BUILD_ISOLIB_TRUE@                   $(CXXFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@
 
 @[email protected]:
-@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) -c -I$(srcdir) \
+@BUILD_ISOLIB_TRUE@	$(LIBTOOL) --tag CC --mode=compile \
+@BUILD_ISOLIB_TRUE@                   $(CC) -c -I$(srcdir) \
 @BUILD_ISOLIB_TRUE@                   $(CFLAGS) $(LIBCFLAGS) $(libm2iso_la_CFLAGS) $< -o $@
 
 @BUILD_ISOLIB_TRUE@install-data-local: force
diff --git a/libgm2/libm2log/Makefile.am b/libgm2/libm2log/Makefile.am
index 8078be8d16d..d97fab7b869 100644
--- a/libgm2/libm2log/Makefile.am
+++ b/libgm2/libm2log/Makefile.am
@@ -124,6 +124,11 @@ M2MODS = BitBlockOps.mod  BitByteOps.mod \
          Strings.mod  Termbase.mod \
          Terminal.mod  TimeDate.mod
 
+GENERATED = \
+ ../libm2pim/SYSTEM.def \
+ ../libm2pim/Builtins.def \
+ ../libm2pim/Builtins.mod \
+ ../libm2pim/cbuiltin.def
 
 libm2logdir = libm2log
 toolexeclib_LTLIBRARIES = libm2log.la
@@ -149,15 +154,49 @@ if ENABLE_DARWIN_AT_RPATH
 libm2log_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/
 endif
 libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags) -lm
-BUILT_SOURCES = ../libm2pim/SYSTEM.def
 
 M2LIBDIR = /m2/m2log/
 
-../libm2pim/SYSTEM.def: ../libm2pim/Makefile
+../libm2pim/SYSTEM.def:
 	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) SYSTEM.def
 
+../libm2pim/Builtins.def:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def
+
+../libm2pim/Builtins.mod:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod
+
+../libm2pim/cbuiltin.def:
+	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def
+
+BitBlockOps.lo: $(GENERATED) BitBlockOps.mod
+BitByteOps.lo: $(GENERATED) BitByteOps.mod
+BitWordOps.lo: $(GENERATED) BitWordOps.mod
+BlockOps.lo: $(GENERATED) BlockOps.mod
+CardinalIO.lo: $(GENERATED) CardinalIO.mod
+Conversions.lo: $(GENERATED) Conversions.mod
+DebugPMD.lo: $(GENERATED) DebugPMD.mod
+DebugTrace.lo: $(GENERATED) DebugTrace.mod
+Delay.lo: $(GENERATED) Delay.mod
+Display.lo: $(GENERATED) Display.mod
+ErrorCode.lo: $(GENERATED) ErrorCode.mod
+FileSystem.lo: $(GENERATED) FileSystem.mod
+FloatingUtilities.lo: $(GENERATED) FloatingUtilities.mod
+InOut.lo: $(GENERATED) InOut.mod
+Keyboard.lo: $(GENERATED) Keyboard.mod
+LongIO.lo: $(GENERATED) LongIO.mod
+NumberConversion.lo: $(GENERATED) NumberConversion.mod
+Random.lo: $(GENERATED) Random.mod
+RealConversions.lo: $(GENERATED) RealConversions.mod
+RealInOut.lo: $(GENERATED) RealInOut.mod
+Strings.lo: $(GENERATED) Strings.mod
+Termbase.lo: $(GENERATED) Termbase.mod
+Terminal.lo: $(GENERATED) Terminal.mod
+TimeDate.lo: $(GENERATED) TimeDate.mod
+
 .mod.lo:
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	$(LIBTOOL) --tag=CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
                    $(GM2_FOR_TARGET) -c \
                    $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2log_la_M2FLAGS) $< -o $@
 
diff --git a/libgm2/libm2log/Makefile.in b/libgm2/libm2log/Makefile.in
index 93dcc6639fd..1bf8ec79415 100644
--- a/libgm2/libm2log/Makefile.in
+++ b/libgm2/libm2log/Makefile.in
@@ -108,7 +108,8 @@ target_triplet = @target@
 @BUILD_LOGLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/
 subdir = libm2log
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -303,6 +304,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -321,6 +331,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -478,6 +489,12 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_LOGLIB_TRUE@         Strings.mod  Termbase.mod \
 @BUILD_LOGLIB_TRUE@         Terminal.mod  TimeDate.mod
 
+@BUILD_LOGLIB_TRUE@GENERATED = \
+@BUILD_LOGLIB_TRUE@ ../libm2pim/SYSTEM.def \
+@BUILD_LOGLIB_TRUE@ ../libm2pim/Builtins.def \
+@BUILD_LOGLIB_TRUE@ ../libm2pim/Builtins.mod \
+@BUILD_LOGLIB_TRUE@ ../libm2pim/cbuiltin.def
+
 @BUILD_LOGLIB_TRUE@libm2logdir = libm2log
 @BUILD_LOGLIB_TRUE@toolexeclib_LTLIBRARIES = libm2log.la
 @BUILD_LOGLIB_TRUE@libm2log_la_SOURCES = $(M2MODS) Break.c
@@ -497,10 +514,8 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_LOGLIB_TRUE@@TARGET_DARWIN_TRUE@libm2log_la_link_flags = -Wl,-undefined,dynamic_lookup \
 @BUILD_LOGLIB_TRUE@@TARGET_DARWIN_TRUE@	$(am__append_1)
 @BUILD_LOGLIB_TRUE@libm2log_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2log_la_link_flags) -lm
-@BUILD_LOGLIB_TRUE@BUILT_SOURCES = ../libm2pim/SYSTEM.def
 @BUILD_LOGLIB_TRUE@M2LIBDIR = /m2/m2log/
-all: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) all-am
+all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .mod .def .o .obj .lo .a .la
@@ -666,15 +681,13 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 check-am: all-am
-check: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) check-am
+check: check-am
 all-am: Makefile $(LTLIBRARIES)
 installdirs:
 	for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) install-am
+install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
@@ -704,7 +717,6 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 @BUILD_LOGLIB_FALSE@install-data-local:
 clean: clean-am
 
@@ -777,7 +789,7 @@ ps-am:
 
 uninstall-am: uninstall-toolexeclibLTLIBRARIES
 
-.MAKE: all check install install-am install-strip
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
 	clean-libtool clean-toolexeclibLTLIBRARIES cscopelist-am ctags \
@@ -797,11 +809,46 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES
 .PRECIOUS: Makefile
 
 
-@BUILD_LOGLIB_TRUE@../libm2pim/SYSTEM.def: ../libm2pim/Makefile
+@BUILD_LOGLIB_TRUE@../libm2pim/SYSTEM.def:
 @BUILD_LOGLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) SYSTEM.def
 
+@BUILD_LOGLIB_TRUE@../libm2pim/Builtins.def:
+@BUILD_LOGLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.def
+
+@BUILD_LOGLIB_TRUE@../libm2pim/Builtins.mod:
+@BUILD_LOGLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) Builtins.mod
+
+@BUILD_LOGLIB_TRUE@../libm2pim/cbuiltin.def:
+@BUILD_LOGLIB_TRUE@	cd ../libm2pim ; $(MAKE) $(AM_MAKEFLAGS) cbuiltin.def
+
+@[email protected]: $(GENERATED) BitBlockOps.mod
+@[email protected]: $(GENERATED) BitByteOps.mod
+@[email protected]: $(GENERATED) BitWordOps.mod
+@[email protected]: $(GENERATED) BlockOps.mod
+@[email protected]: $(GENERATED) CardinalIO.mod
+@[email protected]: $(GENERATED) Conversions.mod
+@[email protected]: $(GENERATED) DebugPMD.mod
+@[email protected]: $(GENERATED) DebugTrace.mod
+@[email protected]: $(GENERATED) Delay.mod
+@[email protected]: $(GENERATED) Display.mod
+@[email protected]: $(GENERATED) ErrorCode.mod
+@[email protected]: $(GENERATED) FileSystem.mod
+@[email protected]: $(GENERATED) FloatingUtilities.mod
+@[email protected]: $(GENERATED) InOut.mod
+@[email protected]: $(GENERATED) Keyboard.mod
+@[email protected]: $(GENERATED) LongIO.mod
+@[email protected]: $(GENERATED) NumberConversion.mod
+@[email protected]: $(GENERATED) Random.mod
+@[email protected]: $(GENERATED) RealConversions.mod
+@[email protected]: $(GENERATED) RealInOut.mod
+@[email protected]: $(GENERATED) Strings.mod
+@[email protected]: $(GENERATED) Termbase.mod
+@[email protected]: $(GENERATED) Terminal.mod
+@[email protected]: $(GENERATED) TimeDate.mod
+
 @[email protected]:
-@BUILD_LOGLIB_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+@BUILD_LOGLIB_TRUE@	$(LIBTOOL) --tag=CC \
+@BUILD_LOGLIB_TRUE@                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
 @BUILD_LOGLIB_TRUE@                   $(GM2_FOR_TARGET) -c \
 @BUILD_LOGLIB_TRUE@                   $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2log_la_M2FLAGS) $< -o $@
 
diff --git a/libgm2/libm2min/Makefile.am b/libgm2/libm2min/Makefile.am
index 8cee85fd477..d3cc8882d30 100644
--- a/libgm2/libm2min/Makefile.am
+++ b/libgm2/libm2min/Makefile.am
@@ -125,20 +125,28 @@ CLEANFILES = SYSTEM.def
 M2LIBDIR = /m2/m2min/
 
 .mod.lo:
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	$(LIBTOOL) --tag CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
                    $(GM2_FOR_TARGET) -c \
                    $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2min_la_M2FLAGS) $< -o $@
 
 libc.o: $(GM2_SRC)/gm2-libs-min/libc.c
 
-
+if HAVE_PYTHON_INTERPRETER
+SYSTEM.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+             -D=$(GM2_SRC)/gm2-libs-min/SYSTEM.def \
+             -M=$(GM2_SRC)/gm2-libs-min/SYSTEM.mod \
+             -I=$(GM2_SRC)/gm2-libs-min -I=$(GM2_SRC)/gm2-libs \
+             -C="$(GM2_FOR_TARGET_ESC) -fno-exceptions" -o $@
+else
 SYSTEM.def: Makefile
-	echo "CC = $(CC_FOR_BUILD)  CC_FOR_TARGET = $(CC_FOR_TARGET)  GM2 = $(GM2)  GM2_FOR_TARGET = $(GM2_FOR_TARGET) GM2_FOR_BUILD = $(GM2_FOR_BUILD)"
 	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
              $(GM2_SRC)/gm2-libs-min/SYSTEM.def \
              $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \
              -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \
              "$(GM2_FOR_TARGET) -fno-exceptions" $@
+endif
 
 install-data-local: force
 	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
diff --git a/libgm2/libm2min/Makefile.in b/libgm2/libm2min/Makefile.in
index 2c6bb9a77f5..85d289a5b99 100644
--- a/libgm2/libm2min/Makefile.in
+++ b/libgm2/libm2min/Makefile.in
@@ -108,7 +108,8 @@ target_triplet = @target@
 @ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/
 subdir = libm2min
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -293,6 +294,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -311,6 +321,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -762,19 +773,25 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES
 
 
 .mod.lo:
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+	$(LIBTOOL) --tag CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
                    $(GM2_FOR_TARGET) -c \
                    $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2min_la_M2FLAGS) $< -o $@
 
 libc.o: $(GM2_SRC)/gm2-libs-min/libc.c
 
-SYSTEM.def: Makefile
-	echo "CC = $(CC_FOR_BUILD)  CC_FOR_TARGET = $(CC_FOR_TARGET)  GM2 = $(GM2)  GM2_FOR_TARGET = $(GM2_FOR_TARGET) GM2_FOR_BUILD = $(GM2_FOR_BUILD)"
-	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
-             $(GM2_SRC)/gm2-libs-min/SYSTEM.def \
-             $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \
-             -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \
-             "$(GM2_FOR_TARGET) -fno-exceptions" $@
+@[email protected]: Makefile
+@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-min/SYSTEM.def \
+@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-min/SYSTEM.mod \
+@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-min -I=$(GM2_SRC)/gm2-libs \
+@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC) -fno-exceptions" -o $@
+@[email protected]: Makefile
+@HAVE_PYTHON_INTERPRETER_FALSE@	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
+@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-min/SYSTEM.def \
+@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-min/SYSTEM.mod \
+@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs-min -I$(GM2_SRC)/gm2-libs \
+@HAVE_PYTHON_INTERPRETER_FALSE@             "$(GM2_FOR_TARGET) -fno-exceptions" $@
 
 install-data-local: force
 	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
diff --git a/libgm2/libm2pim/Makefile.am b/libgm2/libm2pim/Makefile.am
index cc27a077030..508358da9c5 100644
--- a/libgm2/libm2pim/Makefile.am
+++ b/libgm2/libm2pim/Makefile.am
@@ -52,6 +52,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -88,7 +89,9 @@ AM_MAKEFLAGS = \
 	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
 	"DESTDIR=$(DESTDIR)" \
 	"WERROR=$(WERROR)" \
-        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
+	"PYTHON=$(PYTHON)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
 FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@@ -103,7 +106,7 @@ M2MODS = ASCII.mod \
        M2Diagnostic.mod \
        M2WIDESET.mod \
        Assertion.mod NumberIO.mod \
-       Break.mod SYSTEM.mod \
+       Break.mod \
        CmdArgs.mod Scan.mod \
        StrCase.mod FIO.mod \
        StrIO.mod StrLib.mod \
@@ -182,7 +185,9 @@ libm2pim_la_SOURCES = $(M2MODS) \
                       CFileSysOp.cc
 
 libm2pimdir = libm2pim
-libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
+libm2pim_la_DEPENDENCIES = SYSTEM.def \
+   $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) \
+   SYSTEM.lo
 libm2pim_la_CFLAGS = \
   -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
   -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
@@ -194,6 +199,8 @@ libm2pim_la_M2FLAGS = \
   -Wall \
   -fcase -fm2-prefix=m2pim
 
+libm2pim_la_LIBADD = SYSTEM.lo
+
 if TARGET_DARWIN
 libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup
 else
@@ -203,26 +210,89 @@ if ENABLE_DARWIN_AT_RPATH
 libm2pim_la_link_flags += -nodefaultrpaths -Wl,-rpath,@loader_path/
 endif
 libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags) -lm
-BUILT_SOURCES = SYSTEM.def
-CLEANFILES = SYSTEM.def
+BUILT_SOURCES = SYSTEM.def \
+                Builtins.def Builtins.mod \
+                cbuiltin.def
+CLEANFILES = SYSTEM.def \
+             Builtins.def Builtins.mod \
+             cbuiltin.def
 
 M2LIBDIR = /m2/m2pim/
 
+if HAVE_PYTHON_INTERPRETER
+SYSTEM.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+             -D=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \
+             -M=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \
+             -I=$(GM2_SRC)/gm2-libs-pim-common \
+             -I=$(GM2_SRC)/gm2-libs \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
 SYSTEM.def: Makefile
 	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
-             $(GM2_SRC)/gm2-libs/SYSTEM.def \
-             $(GM2_SRC)/gm2-libs/SYSTEM.mod \
+             $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \
+             $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \
+             -I$(GM2_SRC)/gm2-libs-pim-common \
              -I$(GM2_SRC)/gm2-libs \
              "$(GM2_FOR_TARGET)" $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+Builtins.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+             -D=$(GM2_SRC)/gm2-libs-pim-common/Builtins.def \
+             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+             -I=$(GM2_SRC)/gm2-libs-pim-common \
+             -I=$(GM2_SRC)/gm2-libs \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+Builtins.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.def $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+Builtins.mod: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+             -I=$(GM2_SRC)/gm2-libs-pim-common \
+             -I=$(GM2_SRC)/gm2-libs \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+Builtins.mod: Makefile
+	cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.mod $@
+endif
+
+if HAVE_PYTHON_INTERPRETER
+cbuiltin.def: Makefile
+	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+             -D=$(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def \
+             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+             -I=$(GM2_SRC)/gm2-libs-pim-common \
+             -I=$(GM2_SRC)/gm2-libs \
+             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+else
+cbuiltin.def: Makefile
+	cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@
+endif
+
+SYSTEM.lo: $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod
+	$(LIBTOOL) --tag CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+                   --mode=compile $(GM2_FOR_TARGET) \
+                   -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@
+
+Builtins.lo: Builtins.mod Builtins.def
 
-.mod.lo: SYSTEM.def
-	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+.mod.lo: SYSTEM.def Builtins.def Builtins.mod cbuiltin.def
+	$(LIBTOOL) --tag CC \
+                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
                    --mode=compile $(GM2_FOR_TARGET) \
                    -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@
 
 .cc.lo:
-	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \
-                   $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@
+	$(LIBTOOL) --tag CXX --mode=compile \
+                   $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) \
+                   $(libm2pim_la_CFLAGS) $< -o $@
 
 install-data-local: force
 	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
diff --git a/libgm2/libm2pim/Makefile.in b/libgm2/libm2pim/Makefile.in
index 33b97bf6554..213f5c1e626 100644
--- a/libgm2/libm2pim/Makefile.in
+++ b/libgm2/libm2pim/Makefile.in
@@ -108,7 +108,8 @@ target_triplet = @target@
 @BUILD_PIMLIB_TRUE@@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -nodefaultrpaths -Wl,-rpath,@loader_path/
 subdir = libm2pim
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/ax_python_devel.m4 \
+	$(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/clang-plugin.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gcc-plugin.m4 \
@@ -116,10 +117,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/multi.m4 \
 	$(top_srcdir)/../config/no-executables.m4 \
 	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
-	$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
-	$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/../config/gc++filt.m4 \
+	$(top_srcdir)/../config/picflag.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/gc++filt.m4 \
 	$(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \
 	$(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -158,14 +159,13 @@ am__uninstall_files_from_dir = { \
   }
 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
-libm2pim_la_LIBADD =
 @BUILD_PIMLIB_TRUE@am__objects_1 = ASCII.lo Args.lo BinDict.lo IO.lo \
 @BUILD_PIMLIB_TRUE@	M2RTS.lo M2Dependent.lo M2Diagnostic.lo \
 @BUILD_PIMLIB_TRUE@	M2WIDESET.lo Assertion.lo NumberIO.lo \
-@BUILD_PIMLIB_TRUE@	Break.lo SYSTEM.lo CmdArgs.lo Scan.lo \
-@BUILD_PIMLIB_TRUE@	StrCase.lo FIO.lo StrIO.lo StrLib.lo \
-@BUILD_PIMLIB_TRUE@	TimeString.lo Environment.lo FpuIO.lo \
-@BUILD_PIMLIB_TRUE@	Debug.lo SysStorage.lo Storage.lo StdIO.lo \
+@BUILD_PIMLIB_TRUE@	Break.lo CmdArgs.lo Scan.lo StrCase.lo \
+@BUILD_PIMLIB_TRUE@	FIO.lo StrIO.lo StrLib.lo TimeString.lo \
+@BUILD_PIMLIB_TRUE@	Environment.lo FpuIO.lo Debug.lo \
+@BUILD_PIMLIB_TRUE@	SysStorage.lo Storage.lo StdIO.lo \
 @BUILD_PIMLIB_TRUE@	SEnvironment.lo DynamicStrings.lo SFIO.lo \
 @BUILD_PIMLIB_TRUE@	SArgs.lo SCmdArgs.lo PushBackInput.lo \
 @BUILD_PIMLIB_TRUE@	StringConvert.lo FormatStrings.lo \
@@ -331,6 +331,15 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PICFLAG = @PICFLAG@
+PYTHON = @PYTHON@
+PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
+PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
+PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_PLATFORM_SITE_PKG = @PYTHON_PLATFORM_SITE_PKG@
+PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
+PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -349,6 +358,7 @@ am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_python_interpreter = @ax_python_interpreter@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -437,6 +447,7 @@ AM_MAKEFLAGS = \
 	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
 	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+        "GM2_FOR_TARGET_ESC=$(GM2_FOR_TARGET_ESC)" \
 	"CFLAGS=$(CFLAGS)" \
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
@@ -473,7 +484,9 @@ AM_MAKEFLAGS = \
 	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
 	"DESTDIR=$(DESTDIR)" \
 	"WERROR=$(WERROR)" \
-        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)"
+        "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \
+	"PYTHON=$(PYTHON)" \
+        "HAVE_PYTHON_INTERPRETER=$(HAVE_PYTHON_INTERPRETER)"
 
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
@@ -486,7 +499,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_PIMLIB_TRUE@       M2Diagnostic.mod \
 @BUILD_PIMLIB_TRUE@       M2WIDESET.mod \
 @BUILD_PIMLIB_TRUE@       Assertion.mod NumberIO.mod \
-@BUILD_PIMLIB_TRUE@       Break.mod SYSTEM.mod \
+@BUILD_PIMLIB_TRUE@       Break.mod \
 @BUILD_PIMLIB_TRUE@       CmdArgs.mod Scan.mod \
 @BUILD_PIMLIB_TRUE@       StrCase.mod FIO.mod \
 @BUILD_PIMLIB_TRUE@       StrIO.mod StrLib.mod \
@@ -565,7 +578,10 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_PIMLIB_TRUE@                      CFileSysOp.cc
 
 @BUILD_PIMLIB_TRUE@libm2pimdir = libm2pim
-@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES)))
+@BUILD_PIMLIB_TRUE@libm2pim_la_DEPENDENCIES = SYSTEM.def \
+@BUILD_PIMLIB_TRUE@   $(addsuffix .lo, $(basename $(libm2pim_la_SOURCES))) \
+@BUILD_PIMLIB_TRUE@   SYSTEM.lo
+
 @BUILD_PIMLIB_TRUE@libm2pim_la_CFLAGS = \
 @BUILD_PIMLIB_TRUE@  -I. -I.. -I$(GM2_SRC)/gm2-libs -I$(GM2_SRC)/gm2-libs-iso \
 @BUILD_PIMLIB_TRUE@  -DBUILD_GM2_LIBS -I@srcdir@/../  -I@srcdir@/../libm2iso
@@ -577,13 +593,20 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)
 @BUILD_PIMLIB_TRUE@  -Wall \
 @BUILD_PIMLIB_TRUE@  -fcase -fm2-prefix=m2pim
 
+@BUILD_PIMLIB_TRUE@libm2pim_la_LIBADD = SYSTEM.lo
 @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@libm2pim_la_link_flags =  \
 @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_FALSE@	$(am__append_1)
 @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_TRUE@libm2pim_la_link_flags = -Wl,-undefined,dynamic_lookup \
 @BUILD_PIMLIB_TRUE@@TARGET_DARWIN_TRUE@	$(am__append_1)
 @BUILD_PIMLIB_TRUE@libm2pim_la_LINK = $(LINK) -version-info $(libtool_VERSION) $(libm2pim_la_link_flags) -lm
-@BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def
-@BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def
+@BUILD_PIMLIB_TRUE@BUILT_SOURCES = SYSTEM.def \
+@BUILD_PIMLIB_TRUE@                Builtins.def Builtins.mod \
+@BUILD_PIMLIB_TRUE@                cbuiltin.def
+
+@BUILD_PIMLIB_TRUE@CLEANFILES = SYSTEM.def \
+@BUILD_PIMLIB_TRUE@             Builtins.def Builtins.mod \
+@BUILD_PIMLIB_TRUE@             cbuiltin.def
+
 @BUILD_PIMLIB_TRUE@M2LIBDIR = /m2/m2pim/
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -916,21 +939,68 @@ uninstall-am: uninstall-toolexeclibLTLIBRARIES
 .PRECIOUS: Makefile
 
 
-@[email protected]: Makefile
-@BUILD_PIMLIB_TRUE@	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
-@BUILD_PIMLIB_TRUE@             $(GM2_SRC)/gm2-libs/SYSTEM.def \
-@BUILD_PIMLIB_TRUE@             $(GM2_SRC)/gm2-libs/SYSTEM.mod \
-@BUILD_PIMLIB_TRUE@             -I$(GM2_SRC)/gm2-libs \
-@BUILD_PIMLIB_TRUE@             "$(GM2_FOR_TARGET)" $@
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-pim-common \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	bash $(GM2_SRC)/tools-src/makeSystem -fpim \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.def \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs-pim-common \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             -I$(GM2_SRC)/gm2-libs \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@             "$(GM2_FOR_TARGET)" $@
+
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-pim-common/Builtins.def \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-pim-common \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.def $@
+
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-pim-common \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-pim-common/Builtins.mod $@
+
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@	$(PYTHON) $(GM2_SRC)/tools-src/mktargetsrc.py --fpim \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -D=$(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -M=$(GM2_SRC)/gm2-libs-pim-common/Builtins.mod \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs-pim-common \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -I=$(GM2_SRC)/gm2-libs \
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_TRUE@             -C="$(GM2_FOR_TARGET_ESC)" -o $@
+@BUILD_PIMLIB_TRUE@@[email protected]: Makefile
+@BUILD_PIMLIB_TRUE@@HAVE_PYTHON_INTERPRETER_FALSE@	cp $(GM2_SRC)/gm2-libs-pim-common/cbuiltin.def $@
+
+@[email protected]: $(GM2_SRC)/gm2-libs-pim-common/SYSTEM.mod
+@BUILD_PIMLIB_TRUE@	$(LIBTOOL) --tag CC \
+@BUILD_PIMLIB_TRUE@                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+@BUILD_PIMLIB_TRUE@                   --mode=compile $(GM2_FOR_TARGET) \
+@BUILD_PIMLIB_TRUE@                   -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@
+
+@[email protected]: Builtins.mod Builtins.def
 
-@[email protected]: SYSTEM.def
-@BUILD_PIMLIB_TRUE@	$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+@[email protected]: SYSTEM.def Builtins.def Builtins.mod cbuiltin.def
+@BUILD_PIMLIB_TRUE@	$(LIBTOOL) --tag CC \
+@BUILD_PIMLIB_TRUE@                   $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 @BUILD_PIMLIB_TRUE@                   --mode=compile $(GM2_FOR_TARGET) \
 @BUILD_PIMLIB_TRUE@                   -c $(CFLAGS_FOR_TARGET) $(LIBCFLAGS) $(libm2pim_la_M2FLAGS) $< -o $@
 
 @[email protected]:
-@BUILD_PIMLIB_TRUE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) -c -I$(srcdir) \
-@BUILD_PIMLIB_TRUE@                   $(CXXFLAGS) $(LIBCFLAGS) $(libm2pim_la_CFLAGS) $< -o $@
+@BUILD_PIMLIB_TRUE@	$(LIBTOOL) --tag CXX --mode=compile \
+@BUILD_PIMLIB_TRUE@                   $(CXX) -c -I$(srcdir) $(CXXFLAGS) $(LIBCFLAGS) \
+@BUILD_PIMLIB_TRUE@                   $(libm2pim_la_CFLAGS) $< -o $@
 
 @BUILD_PIMLIB_TRUE@install-data-local: force
 @BUILD_PIMLIB_TRUE@	mkdir -p $(DESTDIR)$(inst_libdir)/$(M2LIBDIR)
-- 
2.47.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.